Mikroelektronika a villamossági eszközökben IX. – a mikrovezérlő
2015/3. lapszám | Porempovics József | 3978 |
Figylem! Ez a cikk 9 éve frissült utoljára. A benne szereplő információk mára aktualitásukat veszíthették, valamint a tartalom helyenként hiányos lehet (képek, táblázatok stb.).
A modern, korszerű moduláris kivitelű villamossági eszközök többsége többfunkciós, vagy másképpen multifunkciós, ami azt jelenti, hogy egy eszköz a maga feladatkörében (pl. időrelé) különféle működési módokra képes.
Az eszközkínálat és az egyes eszközök funkciói általában lefedik a villamossági feladatoknál felmerülő igényeket. Az eszközökön kiválasztható az éppen szükséges funkció, illetve beállíthatók a funkcióhoz tartozó paraméterek. A kiválasztáshoz, beállításhoz különböző alkatrészek állnak rendelkezésre az eszközök előlapján, mint pl. potenciométer, forgókapcsoló, DIP-kap-csoló, nyomógomb, kijelző, LED-ek stb. A több funkciónak és ezek beállíthatóságának a megvalósítása elektronikai szempontból ma már elképzelhetetlen valamilyen számítástechnikai megoldás igénybevétele nélkül, mely a mikrovezérlők hatalmas fejlődésével kiváló ár/érték arányú eszközök fejlesztését teszi lehetővé nagy működési megbízhatóság mellett.
A mikrovezérlők tudása, megbízhatósága, kis fogyasztása és alacsony árfekvése miatt nem csupán a multifunkciós eszközök készülnek ezekkel az alkatrészekkel, hanem szinte minden, legyen az akár a legalacsonyabb szintű vezérlő, szabályozó eszköz is.
A mikrovezérlőkről a cikksorozat alkatrészekkel foglalkozó előző részében már volt szó, illetve a mikroprocesszor és a mikrovezérlő közötti különbségről is. Az 1. ábrán, alkatrész szinten, egy-egy konkrét chip lábkiosztása alapján látható a lényeges különbség (itt egy régi, mondhatni „őskori” mikroprocesszor van bemutatva a kivezetések funkcióinak egyszerűbb átláthatósága miatt). Az ábra fenti részén található mikroprocesszor chip „lábai” nem alkalmasak közvetlenül a perifériák meghajtására. A címbusz egy egyirányú busz, csak a CPU felől van meghajtva, mely megcímez egy be- vagy kimeneti illesztő áramkört, vagy éppen az adatmemóriát vagy a programmemóriát a következő utasítás beolvasására. Az adatbuszon zajlik az információátadás tartalmi része oda és vissza, tehát ez kétirányú busz. A különböző vezérlőbuszok pedig az adatáramlást és a címzést segítik.
Az is látható, hogy a mikroprocesszor külső órajel-bemenettel rendelkezik, mert a legtöbb processzor ütemjelét külső órajel-generátor állítja elő. Ez utóbbi a mikrovezérlőknél is rendelkezésre áll, de többségük a saját belső órajel-generátorával is működhet, melyet még kalibrálni is lehet, tehát nem feltétlen szükséges külső kvarc vagy kerámia rezonátor használata. Kivezetett cím-, adat- és vezérlőbusz viszont csak néhány speciális mikrove-zérlőnél van, általában nem jellemző, ami nem azt jelenti, hogy ezek a buszok nem léteznének a mikrovezérlőknél. Az adat- és programmemóriák a mikrovezérlő chipjén találhatók, tehát a tokozáson belül, így a buszok is itt vannak, de kívülről nem lehet elérni őket. Ha nagyobb tároló- kapacitásra van szükség, mint amekkora a mikrovezérlő saját memóriamérete, akkor van lehetőség külső memóriák használatára is, melyeket valamilyen IC-k közötti szabványos soros kommunikációs csatornán lehet elérni, mint pl. I2C, SPI stb.
1. ábra: Az alkatrészek lábainak funkcióból ítélve is szembetűnő a különbség mikroprocesszor és mikrovezérlő között.
A legszembetűnőbb különbség azonban a mikrovezérlő kivezetéseinek funkcióiban található (lásd 1. ábra lenti része), mégpedig az, hogy egyetlen kivezetéshez a „/” jellel elválasztva több funkció is jelölve van. Mint említettük már, a mikrovezérlő közvetlen perifériakezelési utasításokkal és az ehhez társuló legkülönfélébb perifériákkal is rendelkezik, ezért is nevezik egychipes mikroszámítógépnek. A be- és kimeneti perifériák megfelelő programozás után azonnal használhatók, csupán a külvilág jeleihez kell illeszteni őket. Az 1. ábra lenti mikrovezérlője például a következő perifériákkal használható:
- Az RA0–RA5 vagy RC0–RC5 elnevezésű kivezetések a portok digitális alapműködésére utalnak, mely szerint lehet digitális be- vagy kimenet. Egy kivezetés funkcióját egy adott alkalmazásban a programozó és/vagy a hardvertervező dönti el. Egy belső „kapcsoló” beállításával szoftveresen kijelölhető bármelyik kivezetés úgy, hogy digitális bemenetként kétállapotú jeleket (0/1) tudjon fogadni, ami lehet pl. egy kapcsoló vagy nyomógomb is (0=kikapcsolva; 1=bekapcsolva/lenyomva). A kivezetés beállítható kimenetként is, így kétállapotú jelekkel (0/1) képes vezérelni, pl. be- vagy kikapcsolni egy relét (0=kikapcsolás; 1=bekapcsolás) – persze egy kapcsolótranzisztoron át.
- Az AN0–AN7 elnevezések arra utalnak, hogy a hozzájuk tartozó kivezetések analóg bemenetként is használhatók, így nem csupán az előzőleg említett kétállapotú jelek fogadására van lehetőség, hanem a folytonos jelek, mint pl. hőmérsékletérzékelés feldolgozására is – természetesen analóg–digitális átalakítás után a jel digitális megfelelője áll rendelkezésre a chip egyik belső tárolójában.
- A C1xy és C2xy két komparátort (összehasonlítót) jelent, mely feszültségszintek összevetésére használható akár pl. elemes készülékeknél az elem állapotának ellenőrzésére: egy előre beállított referenciaszint és az elem feszültsége kerül összehasonlításra, és amennyiben az elem feszültsége a referenciaszint alá csökken, egy megfelelő programrész segítségével jelzést ad az eszköz és/vagy letiltja a nagyobb fogyasztókat az áramkörben.
- A CCP1 üzemmódra beállított kivezetés segítségével speciális időeseményeket lehet indítani, ugyanez a kivezetés működhet PWM kimenetként is. PWM kimenettel már LED fényerőszabályozást hajthatunk meg, vagy éppen motorfordulatszámot változtathatunk, szabályozhatunk (ehhez nyilván szükség van egy sebességgel arányos bemeneti jelre, ami szintén nem egy nagy probléma, hiszen egy bemenetet kiválasztva már csak jelszinteket – feszültség/áram – kell illeszteni). Anélkül, hogy folytatnánk a felsorolást, látható, hogy milyen sokrétű a mikrovezérlők felhasználhatósága, hiszen még nem is beszéltünk a belső modulokról, melyek számlálókat, időzítőket is magukban foglalnak. A chipen belüli modulok segítségével a programozó mentesül az ilyen típusú alapfeladatok programozással, utasítások sorozatával történő megoldása alól, elegendő pl. csak beállítani és elindítani a belső időzítést, majd megadni, hogy mi történjen, amikor lenullázódott – mindezt néhány egyszerű utasítással a programmemória megfelelő címén.
A 2. ábrán a leggyakrabban használt, egyben a legegyszerűbb perifériákat illesztjük egy mikrovezérlő kivezetéseihez. Mint a rajzból is kitűnik, nem túl bonyolult maga a fizikai, hardveres illesztés, hiszen egyszerűen csak bekötjük a megfelelő alkatrészt a bemenetre vagy kimenetre, és elvileg készen is van. Persze csak majdnem, hiszen szoftveresen is kezelni kell a csatlakoztatott eszközöket.
Egy nyomógombbal nem sok dolga akad a hardveresnek és a szoftveresnek sem. Hardveresen egy felhúzó ellenállással beállítjuk a bemenet alaphelyzetét – amikor a nyomógomb nyitott, akkor a +Vcc feszültséghez közeli jelszint lesz a bemeneten. A nyomógomb megnyomásakor a GND pontot zárjuk a bemenetre, így „0” V-ot fog kapni (lehetne fordított is). Szoftverben ez a két jelszint, illetve a jelszint változása egyszerűen kezelhető, érzékelhető, de a szoftveresnek más dolga is lesz, ugyanis a nyomógomb érintkezőjének pergését is ki kell szűrni. Mivel hardveresen semmilyen alkatrész, pl. szűrőkondenzátor sincs az áramkörben, ezért szoftveresen kell programozni egy késleltetés elindítását, amikor ezen a bemeneten jelváltozás történik. A késleltetési idő néhány 10 ms lehet, a nyomógomb minőségétől is függően.
A késleltetés időtartama alatt nincs figyelve a bemenet, leteltekor, ha még mindig aktív a bemenet, itt a rajzon GND-n van, akkor azt már biztonsággal gombnyomásként lehet értelmeznie a programnak, és indítható a gomb funkciójának megfelelő programrész, ami villamossági eszközöknél pl. egy tesztgomb, egy üzemmódváltó gomb, vagy éppen egy kapcsolóóra beállítására szolgáló egyik nyomógomb az előlapon. Lehetséges a nyomógomb felengedésének figyelése is, amennyiben az eszköz kezelése nem válik kényelmetlenné azzal, hogy a gomb lenyomására látszólag még semmi nem történik, csak a felengedésre. Ez csak szoftver kérdése.
A kapcsoló illesztése gyakorlatilag teljesen megegyezhet a nyomógombéval, hiszen ez is kontaktus. A különbség abban van, hogy a kapcsoló bármelyik állapota hosszabb ideig is fennállhat, ami a hardver szempontjából nem annyira érdekes, ha a fogyasztást nem nézzük (elemes áramköröknél már nem elhanyagolható). Szoftveresen sincs más teendő, mint mindig az ellentétes állapot bekövetkeztét várni, illetve mindkét irányban pergésmentesítő késleltetést kell elindítani.
Fenti két példában digitális bemenetként használtuk a mikrovezérlő kivezetéseit. Az 1. ábra mikrovezérlőjének jobb oldalán két kimenet vezérlésének kapcsolása, illesztése látható, ahol a két kivezetést kimenetként kell felprogramozni.
A moduláris villamossági eszközök szinte mindegyikében találhatók LED visszajelzők. A tápfeszültség visszajelzője általában nem egy központi vezérlő által működtetett visszajelzés, hanem ténylegesen, direkt úton a tápfeszültségről hajtódik meg, viszont a funkciókat, üzemállapotokat visszajelző LED-ek már a mikrovezérlő által irányítottan működnek, funkcióik szerint. Pl. felügyeleti relékben a tápjelző LED-en kívül külön található a kimeneti relék működését jelző LED és külön-külön a túlfeszültség és az alacsony feszültség hibajelzése. A LED meghajtása nem okoz gondot egy mikrovezérlő kimenetének, mert elegendő áramot képes szolgáltatni egy LED „kigyújtásához”. Erre a mikroprocesszor egyik busza sem képes közvetlenül, a buszkivezetés tönkremenne a rajta átfolyó áramtól – persze ezek a buszok nem is erre készültek. A mikrovezérlő kimenetek meg tudnak hajtani tranzisztorokat, triakokat, teljesítmény MOSFET-eket stb., néhány egyszerű illesztő alkatrész közbeiktatásával. Tehát a LED-nél csak annyi a teendő, hogy az áramát le kell korlátozni egyetlen ellenállással. Vezérlése is egyszerű: ha a kimenet „0” szinten van, vagyis GND potenciálon, akkor világít a LED, ha közel a Vcc, vagyis a tápfeszültség potenciálján, azaz logikai „1”, akkor nem világít. Ez a beégetett programban is ennyire egyszerűen oldható meg.
A villamossági eszközeink többsége relékimenettel rendelkezik, ez a legáltalánosabb és leggyakrabban használt kimeneti fokozat. A mikrovezérlőnek ez sem jelent problémát. Nagyon kis áramú relét akár közvetlenül is képes lenne meghajtani, de nem szokás így használni – az annyira kis áramú, de kapcsolási teljesítményében elfogadható relé pedig vagy drága, vagy nehéz beszerezni.
Egy SMD tokozású tranzisztornak az 1. ábra jobb oldalán jelzett bekötésével egyszerűen tudunk ki- és bekapcsolni akár nagyobb teljesítményű reléket is. Még akkor is, ha a relé tápfeszültsége magasabb a mikrovezélő tápjánál – és ez általában így is van. A bekötés nem más, mint a jól ismert nyitott kollektoros kimenet, ahol a kollektorra egy relé kapcsolódik. A relé meghúzásához a tranzisztort nyitni kell, tehát logikai „1” szintet, vagyis közel a Vcc-t kell kiadni a mikrovezérlő kimenetére (ami előzőleg kimenetként is lett beállítva) és a tranzisztor bázisára, hiszen a rajz szerint itt NPN tranzisztort vezérlünk. A relé elengedéséhez zárni kell a tranzisztort, ezért logikai „0” szintet, azaz GND-t kapcsolunk a bázisra.
Az 1. ábra mintakapcsolásában külön vezéreltük a relét és külön a LED-et. Ha a LED kijelzővel a relé működését szeretnénk visszajeleztetni, akkor azt a programban kell megoldani, hiszen nincs közvetlen kapcsolat a két alkatrész között. Ez így működik a legtöbb villamossági eszközben, vagyis a LED jelzéséből annyit lehet kikövetkeztetni, hogy a mikrovezérlő feltehetően működik, és valószínű, hogy a relé is meghúzott, ha világít a LED. A két alkatrész függetlensége miatt viszont mégsem egyértelmű a visszajelzés, nem tudható, hogy a relé tényleg működik-e vagy a kontaktusa átad-e. Nyilván ez már a szőrszálhasogatás szintjét súrolja, de az esetleges hibakeresésnél jó tudni, milyen jelekben lehet 100%-ban megbízni – sok bosszúságtól lehet megkímélni magunkat.
A rajz utolsó alkatrésze a potenciométer (1. ábra – bal alsó rész), melyet nagyon sok eszközben megtalálunk, mint értékbeállító alkatrészt. Időrelékben finomállító, alkonykapcsolókban fényerősségállító, áramfigyelőkben áramlimit- beállító stb. A potenciométer egyszerűen kezelhető, kis helyen elfér, és analóg mivolta miatt az áramkörben biztosított tartományában végtelen számú értéket képes szolgáltatni. A mikrovezérlőhöz való illesztése az ábra alapján ugyanolyan egyszerű, mint az eddigi eszközöké, melyből az is látható, hogy a mikrovezérlők fejlesztése során a hardver minimalizálása is egy cél. Amit csak lehet, azt a chipen belüli funkcionális modulokba próbálnak beintegrálni, illetve – a fenti példákban is – sok funkció inkább szoftveres kezelést igényel.
Mivel a középső csúszkájáról analóg jelet tudunk levenni – konkrétan feszültségjelet, mert feszültségosztóként funkcionál –, ezért a mikrovezérlő bemenetét nem digitális bemenetre, hanem analóg bemenetre kell programozni. Ekkor a chipen belül a bementi csatlakozópont egy elektronikus analóg kapcsolóval az egyik belső A/D átalakítóval kerül kapcsolatba. Az analóg-digitál átalakító kimenete egy belső tároló (regiszter), ahol a folyamatosan beolvasott analóg jel digitális megfelelője található, és felhasználható további jelfeldolgozáshoz. Az analóg jelfeldolgozáshoz egyébként külön, a mikrovezérlőben előállított stabil referencia- feszültség is rendelkezésre áll, így egészen precíz mérésekre is adódik lehetőség.
Bizonyára azonnal felmerült a kérdés, hogy ha a poti analóg jelét ilyen egyszerűen fel tudjuk dolgozni, akkor pl. egy ellenállás-hőmérsékletérzékelő (termisztor) jelét is?! Igen, bár ott a programban meg kell oldani egyet s mást, ami a következő lapszám egyik témája is lesz.