Az előző részben egy gyakorlati újabb példával ismerkedtünk meg: hogyan lehet integrált áramkörök felhasználásával egyszerűen, rövidzártól, túlterheléstől védve forgásra bírni a kis, illetve közepes egyenáramú motorjainkat. Akkor azt ígértem, hogy ez a rész se lesz kevésbé érdekes: hiszen megtanuljuk, miként lehet digitális működésű, vagyis ki/bekapcsolásra alkalmas portunkkal folyamatos szabályozást is előállítani. Sokan talán megijednek az „analóg” szótól. Szokásunkhoz híven azonban aggodalomra most sincs okunk, -ha minden eddigi részt figyelmesen átolvastunk-. Ugyanis ez alkalommal se a nehezebbik oldaláról közelítünk a problémához.
A digitális számítógépünk belsejében barangolva úgy hihettük, mindent le tudunk írni számokkal. Legyenek azok betűk, színek, ábrák, alakzatok, hangok, stb. Azt gondolnánk, nincs is szükségünk olyan rendszerekre, ahol folyamatosan, -vagyis analóg módon- kellene dolgoznunk. Ez azonban hatalmas tévedés! A valóéletben legtöbb dolog folyamatosan mérhető mennyiség, illetve folyamatosan változó szabályozást igényel.
Szeretjük szobánkban a kellemes, fokozatmentes fényerőt. Szeretjük, ha a hőmérsékletet egy forgatógombbal kedvünkre állíthatjuk. Jó, ha a vízcsapot kedvünkre nyithatjuk meg, a hangszóró hangerejét folyamatosan változtathatjuk, ventillátorunk motorjának fordulatszámát úgyszintén. Kis robotmodellünkkel játszadozva hamar rájöhetünk, hogy a teljes sebesség/hirtelen megállás nem kedves a jó irányíthatóságnak. Jobb lenne, ha a sebességet folyamatosan tudnánk szabályozni. Szépen, lassan indulna, illetve lassítva állna meg. Sokkal borulás mentesebb, stabilabb üzemet érhetnénk így el. S még lehetne sorolni a példákat.
Mindenekelőtt tudomásul kell vennünk, hogy teljesen folyamatos szabályozást nem tudunk digitális berendezéssel megvalósítani. Ez mindig lépcsőzetes beállítási lehetőséget tesz lehetővé, ahol egy -egy lépcsőfok egy egyedi számjeggyel reprezentálható. Vagyis logikus, hogy a számítógép számjegyeinek lépésközeinél nem tudunk pontosabban analóggá alakítani.
Ez a lépés azonban elméletileg tetszőlegesen finom lehet, Vagyis a gyakorlatban már megkülönböztethetetlen a valódi analóg folyamatok jeleitől. Ha egy emelkedő feszültséget kell tehát előállítanunk, akkor egyenes vonal helyett mindig egy „lépcsőt” kapunk, legfeljebb a lépcsőfokok annyira finomak lesznek, hogy nem vesszük észre. Ezt a nagyvonalú megfeleltetést kvantálásnak nevezzük, s azt a hibát, mely a lépcsőfokok és a vonal eltéréséből ered, kvantálási hibának nevezzük. Ezek fontos fogalmak, érdemes emlékezni rájuk a későbbiekben! Az ember azt gondolná, hogy csakis nagyon sok állapot, vagyis közel végtelen-sok bit pontosságú számok adnak kielégítő megoldást csupán. Nos, ez nem így van!
A régebbi infravörös-távvezérlős televíziókban a hangerőt 64 lépcsőfokban, vagyis 6-bites bináris számokkal állítottuk be. Ki gondolná, hogy 6 bit elegendő ahhoz, hogy folyamatosnak érezzük a hangerősség változást! Természetesen itt gondoljunk arra, hogy minden újabb bit megfelezi a lépcsőfokok méretét! A szenzoros fényerő-szabályozókban az integrált áramkör 16-fokozatban, vagyis 4 biten fogja át a teljes tartományt. Hangkártyákban 8-biten már elfogadható minőségben zenei hangmintákat lehet lejátszani, míg 16 biten cd-minőségben hallgathatunk zenét. A motorok fordulatszám-szabályozásánál 64 fokozat felett már a mechanikai pontosság jelenti a legnagyobb problémát.
Ezeket csupán tájékoztató adatoknak szántam, hogy láthassuk, melyik folyamathoz körülbelül hány lépcsős kvantálást, vagyis hány bites számábrázolást célszerű alkalmazni. Látható tehát, hogy az analóg folyamatokat a gyakorlat szempontjából viszonylag nem nagy bitszámmal is megfelelően tudjuk követni.
A fentiek alapján felmerül a kérdés, mekkora bitfokú szabályozót érdemes építenünk vezérlési céljainkra? Természetesen amennyit a feladat megkíván, azonban a gyakorlatban ritkán kell 8 bit fölé mennünk! Nincs értelme finomabb lépésekben változtatni a fényerőt, mint ahogy érzékelni tudjuk a változást. Nincs értelme tízezred fok pontossággal hőmérsékletet szabályozni, ha a legkisebb huzat is minimum félfokos kilengéseket okoz, stb-.
A 8bit számunkra azért is csábító, mert az adatportunk szélessége ezt még éppen kiszolgálja, tehát viszonylag egyszerűen megoldható a probléma. Habár-. Nem minden esetben függ a felbontás a portunk bitszámától! Néha vannak elsőre sokkal meglepőbb, de kézenfekvőbb, egyszerűbb megoldások (1. ábra);
A PWM vezérlés, a világ legegyszerűbb analóg - digitális átalakítója;
1. ábra A PWM átalakító összeállítása és működési diagrammja.
Látható, hogy az átalakító áramkör meglepően egyszerű, mindössze 4 alkatrészből áll. Az egyszerűség ára azonban a nagy szoftver-erőforrásigény. Tekintsük át részletesen, vajon hogyan üzemelhet?!?
A PWM nem más, egy angol mozaikszó, ami impulzusszélesség-modulációt jelent. (Pulse Width Modulation) Eddigi felfogásunk feszültség-centrikus volt, vagyis a feszültség nagyságával akartunk szabályozni. A PWM technika azonban egészen másra épít, nevezetesen a -bevitt energia alapú- szabályozásra. Vagyis ha adott ideig ugyanakkora feszültséggel hajtunk át a fogyasztókon ugyanakkora áramot, akkor az idő múlásával egyre több energiát viszünk be. Ha azonban a folyamatot rendszeres időnként „megszaggatjuk”, akkor a bevitt energia is csökkenni fog. Ha kijelölünk egy fix időintervallumot, s abban meghatározzuk, hogy hány százaléknyi ideig folyik az energia, s meddig nem akkor eljutottunk a PWM technika lényegéhez. A kapcsolási rajz alatt látható idődiagram ezt szemlélteti. A piros vonalak egynlő időtartamokat jelölnek. Látható, hogy a digitális kimenet ezen belül valamennyi ideig logikai egy, míg a maradék időben logikai nulla állapotban van. A kettő aránya határozza meg, hogy a maximális energiához képest hány százalék energiát viszünk be a fogyasztóba. Ha a piros vonallal jelölt időrések kellőképpen rövidek (úgy mndjuk, hogy a vágási frekvencia kellőképpen nagy), akkor az érzékszerveink felfogóképességéhez, vagy a folyamat jellegéhez képest, akkor nincs is más teendőnk.
Vagyis ha ezzel a módszerrel vezéreljük a fogyasztók kapcsolóáramköreit, akkor pusztán ki/bekapcsolással, vagyis digitális működéssel is tudunk folyamatosan szabályozni. Lássunk néhány példát: Ha egy fűtőtestet 10 másodperces, vagy rövidebb időszeletekkel szabályozunk, akkor a hőáramlási sebesség, vagyis a fűtőtest tehetetlensége miatt általában ez teljesen megfelelő. A világítástechnika más eset. Ha egy izzólámpát vezérelünk, akkor az emberi szem tehetetlensége miatt teljes vibrálás-mentességet csupán másodpercenként 50-es ablakkal lehet elérni, azonban ahhoz, hogy a szemünket a fény ne fárassza, fel kell menni 72-es érték fölé. (Úgy is mondjuk ezt egyszerűbben, hogy a vágási frekvencia fényforrásoknál nagyobb legyen, mint 72Hz)
Láthatjuk, hogy egy mai PC-vel, cél számítógépek, gyorsító hardverek nélkül, akár BASIC programnyelven se megvalósíthatatlan feladat, vagyis érdemes foglalkozni vele. Gondoljunk a kis modellmotorokkal hajtott robotunkra! A motorok fordulatszámát elegendő 10-50Hz-es vágási frekvenciával hajtani ahhoz, hogy teljesen folyamatos üzemet érzékeljünk. Ugyanakkor bármelyik félvezetős kapcsolófokozat változtatások nélkül alkalmas a feladatra! Hiszen a kapcsolásnak eleget tesz, s a félvezetőknek kifejezetten alacsony frekvencia semmiféle plusz terhet nem jelent! (Védődiódákat úgyis használunk, vagyis a megnövekedett indukciós rugások se jelenthetnek problémát. J )
Egy dolgot azonban mellőznünk kell, s ezek a relék! Ugyanis a közönséges relé másodpercenként 1..5 meghúzás/elengedésnél többre nem alkalmas, hiszen a mechanikának tömege, s ezzel tehetetlensége van. Ugyanakkor ha egy fűtési szabályozást nézünk, a relé könnyedén tudná követni a fent említett sebességet, azonban az érintkező pogácsák igen hamar felmelegednének és elégnének, tönkremennének, hiszen nem erre van az eszköz tervezve!
Azonban vannak helyzetek, amire a félvezetős kapcsolóink sem alkalmasak. Ezek azok az esetek, amikor vagy a szükséges vágási frekvencia magasabb, mint amit a gépünk ki tud adni, vagy pedig a kapcsolt jel feszültsége magasabb, mint amit a vezérelt áramkör bármilyen rövid időre képes elviselni. Hiába a hosszú feszültségszünet a jel után, ha az érzékeny eszközünk már az impulzus elején tönkrement!
Ez esetben szükség van egy olyan áramkörre, ami az energia-centrikus vezérlést képes átalakítani folyamatos-feszültség alapú vezérléssé. Az 1. ábra kis áramköre ezt a feladatot látja el. Nézzük, hogyan működik!
A bemenet az LPT portunk egyik kimeneti bitjéhez csatlakozik, s néhány közbeiktatott alkatrészen keresztül C1 kondenzátort a logikai igaz állapotot reprezentáló magas feszültségszint közel +5V-ra kezdi feltölteni. A töltéshez idő kell, melyet az R1-es, (220 ohmtól-10K) ellenállás áramkorlátozó funkciója kicsit lelassít. Ha most logikai alacsony szintre váltanánk, akkor az összeharácsolt töltésmennyiség kezdene csökkenni, vagyis a kondenzátor kisülni. Ahhoz, hogy ez ne következzen be, egy diódát tettünk az áramkörünkbe. (D1-es alkatrész.)
A dióda úgy van bekötve, hogy logikai 1-szint a kondenzátort töltse, de a nulla szint hatására kapcsoljon szét a dióda, vagyis ne süthesse ki a már részben töltött kondenzátort.
Ha a kondenzátorunk ideális alkatrész lenne, akkor csak gyűlne, gyűlne benne a töltés, mígnem elérné a bejövő feszültséget. Ahhoz, hogy ez ne következzen be, kell egy terhelő ellenállás, ami folyamatosan fogyasztja a töltéseket. Ez az R2-es jelölésű alkatrész.
Néhány gyakorlati áramkörben a diódát is kispórolják. Ez adott esetben valóban megoldható, de erre most hely hiányában nem kívánok kitérni.
Valójában természetesen nem ilyen mesésen ideális a kis áramkörünk működése, mert a töltési/kisülési idők között a kondenzátor feszültsége kissé változni fog, vagyis a kapcsolási frekvenciának megfelelő frekvenciájú, bár a hasznos jelhez képest nem túlzottan nagy értékű, zavaró jelsorozat is megjelenik. Ha a vágási frekvenciához megfelelően választjuk meg két ellenállás, illetve a kondenzátor értékét, akkor ez a zavarjel alig érzékelhető nagyságú lesz.
Természetesen az áramkör erősítőt nem tartalmaz, vagyis ebben a formában csak arra tudjuk használni, hogy oszcilloszkóppal, vagy esetleg kézi műszerrel ellenőrizzük a folyamatokat.
Azonban erősítőt kapcsolva a berendezésre, korántsem ennyire elméleti dolgokról kell már beszélgetni. J Az előző cikkben leírt motorvezérlő kapcsolás a hangfrekvenciás integrált áramkörével tökéletesen meg is felel a célnak! Mindössze két ellenállással kell kiegészíteni az ott leírt kapcsolást, (komparátor helyett „feszültségkövető” üzemmódú áramkör lesz ekkor belőle-) de erről egy későbbi cikkemben fogok részletesen beszélni. Annyit érdemes megjegyezni, hogy az erősített változattal nagy vágási frekvencia alkalmazása nélkül is vezérelhetünk tetszőleges fogyasztókat. Legyen az elektromágnes, motor, izzólámpa, stb-
Ha magas lehet a vágási frekvencia, akkor a legtöbb esetben a digitális kimenet közvetlenül mehet a hagyományos áramkörre, vagyis még ezt az áramkört se kell megépítenünk!
A fejezet elején azt állítottam, hogy az egyszerűbb elektronikáért nagyobb szoftver erőforrással kell megfizetünk. Lássuk mit is jelent ez a valóságban?
2.ábra, egyetlen PWM analóg kimenet:
10 CLS:INPUT F:IF F>255 OR F<0 THEN 10:REM adatbekeres
20 A=1:GOSUB 100:FOR C=0 TO 255:IF F=C THEN A=0:GOSUB 100
30 NEXT:GOTO 20
100 REM adatkiiras a portra
110 OUT &H278,A:OUT &H378,A:OUT &H3BC,A:RETURN
Készítette: a szerző
Látható, hogy maga a program cseppet sem bonyolult. A 10. sorban bekérjük 0-255 között a kívánt analóg értéket, majd a 20-as sorban 1-re állítjuk a kimeneti kátozót, s a 100. sorban lévő szubrutinnal kiírjuk a portra az értéket. Ezután egy ciklust indítunk, mely a szabályozási fokozatok számának felel meg, esetünkben (8bites szabályozás) ez 255-ig fog futni. A ciklusban minden lépésben ellenőrizzük, hogy nem haladtuk -e meg a bekért értéket. Ha igen, akkor kikapcsoljuk a portbitet. Ezzel a roppant egyszerű megoldással elértük, hogy egyetlen periódust a megfelelő módon lekezeljünk. A 30-as sorban egyszerűen végtelenítjük a vezérlést, s ezzel folyamatossá tesszük az üzemet. Látható, hogy ezzel ez egyszerű programmal igen sok erőforrását lekötjük a gépünknek. Ez windows alapú, vagy egyéb multitaszkos operációs rendszereknél komoly problémát okozhat! Ezért ezt a megoldást PC-n kimondottan DOS alkalmazásokhoz javaslom, vagy azoknak, aki mikrovezérlőkkel dolgozik. Ott ideális technológia. A legtöbb esetben nem kell a 8bites felbontás, gyakran a 16 fokozat is elég. A programot könnyen módosíthatjuk eszerint. Ennek az az előnye, hogy a ciklus gyorsabban végigmegy, vagyis a vágási frekvencia magasabb lehet! Jegyezzük meg tehát, hogy a fokozatok száma arányos a lefoglalt erőforrásokkal!
A következő, (3.ábra) azt mutatja be, hogyan lehet egy ciklusban több analóg portot (esetünkben egyszerre 8-at) is vezérelni:
3.ábra, 8 PWM analóg kimenet egyetlen ciklusban futtatva:
10 CLS
11 INPUT "1? ",F1:IF F1>255 OR F1<0 THEN 11:REM analog port 1 adatbekeres
12 INPUT "2? ",F2:IF F2>255 OR F2<0 THEN 12:REM analog port 2 adatbekeres
13 INPUT "3? ",F3:IF F3>255 OR F3<0 THEN 13:REM analog port 3 adatbekeres
14 INPUT "4? ",F4:IF F4>255 OR F4<0 THEN 14:REM analog port 4 adatbekeres
15 INPUT "5? ",F5:IF F5>255 OR F5<0 THEN 15:REM analog port 5 adatbekeres
16 INPUT "6? ",F6:IF F6>255 OR F6<0 THEN 16:REM analog port 6 adatbekeres
17 INPUT "7? ",F7:IF F7>255 OR F7<0 THEN 17:REM analog port 7 adatbekeres
18 INPUT "8? ",F8:IF F8>255 OR F8<0 THEN 18:REM analog port 8 adatbekeres
20 A1=1:A2=1:A3=1:A4=1:A5=1:A6=1:A7=1:A8=1:GOSUB 100:FOR C=0 TO 255
21 IF F1=C THEN A1=0:GOSUB 100
22 IF F2=C THEN A2=0:GOSUB 100
23 IF F3=C THEN A3=0:GOSUB 100
24 IF F4=C THEN A4=0:GOSUB 100
25 IF F5=C THEN A5=0:GOSUB 100
26 IF F6=C THEN A6=0:GOSUB 100
27 IF F7=C THEN A7=0:GOSUB 100
28 IF F8=C THEN A8=0:GOSUB 100
30 NEXT:GOTO 20
100 REM adatkiiras a portra
105 A=(A1*1)+(A2*2)+(A3*4)+(A4*8)+(A5*16)+(A6*32)+(A7*64)+(A8*128)
110 OUT &H278,A:OUT &H378,A:OUT &H3BC,A:RETURN
Készítette: a szerző
Akinek megtetszik, tegye rá a LED-es tesztpanelt, s figyelje meg a működést 255, majd 16-ra módosított fokozaton, többfajta értékkel! Ugye, milyen érdekes szerkezet??? J
Létrahálós átalakító- az olcsó, egyszerű, gyors megoldás;
A PWM átalakító zseniálisan egyszerű, praktikus megoldás, de sajnos folyamatos vezérlést igényel. A most bemutatatott áramkör ezzel szemben olcsó, pár forintos, egyforma értékű ellenállásokat alkalmaz, ugyanakkor elegendő kiírni a portra a megfelelő analóg értékhez tartalmazó számadatot, s ettől kezdve a kimeneten folyamatosan rendelkezésre áll a feszültség. Nem szükséges az állandó szoftver-erőforrás! J
Az átalakító az ún. R-2R létra megoldást alkalmazza. Ennek az a lényege, hogy minden bit fele akkora ellenállásértéket kapcsol be. Ez a működés az ellenállások párhuzamos kapcsolásán alapul. Hatalmas előnye azonban, hogy csupa egyforma alkatrészeket használhatunk benne. A beszerzésnél a boltban kérjük el az összes 10K-s ellenállást, s egy multimérrel lehetőleg az összes digitre egyező értékűekyből szedjük össze a kellő mennyiséget. Ha nincs 10K-sból a kellő mennyiség, használhatunk más értékeket is. Pl. 8,2K 22K, stb. A lényeg, hogy a felhasznált alkatrészek értéke a lehető leginkább azonos legyen, mert az átalakítási hibát, vagyis a pontosságot ez alapvetően meghatározza. A kapcsolás egyenértékűen használhatjuk a PWM átalakítóval. Azonban az ott jelentkező „zaj” itt nem létezik. Ezért sok szempontból előnyösebb megoldás sok helyre.
A 4. ábra mutatja a kapcsolást, melyet most 8-bitesre rajzoltam ki. Természetesen a periodikusan ismétlődő áramkör értelemszerűen megépíthető nagyobb, vagy alacsonyabb bitfokozatra egyaránt:
4.,ábra az R-2R létrahálós átalakító rajza.
Ezzel a D/A átalakítókról eleget tudunk. Következő alkalommal egy újabb meghajtó fokozattal ismerkedünk meg. Kellemes kísérletezést!