2010-06-13
Mikrprocesszoros vagy mikrokontrolleres kapcsolásoknál gyakori, hogy az áramkörünkhöz billentyűket kapcsolunk, amelyek segítségével vezéreljük azt.
Alap esetben ez így néz ki. A mikrovezérlőnk érzékeli, hogy az adott kapcsolót lenyomtuk, mert a hozzá tartozó láb L-re kerül. Itt letehetném a billentyűzetet, de a gyakorlatban nem annyi billentyű, mint ahány szabad láb a mikrovezérlőnkön. Egy kis telefon billentyűzet 12 gombjához 12 láb szükséges. A Hitachi gyárt csodálatos 100 lábú mikrovezérlőket is, de az a valószínűbb, hogy elkezdjük vakarni a fejünket, hogyan spórolhatnánk meg néhány lábat.
Elég közismert megoldás, hogy kössük a billentyűket mátrixba, rácsba. Az oszlopokat hajtsuk meg a mikrovezérlővel, a sorokat meg figyeljük. Az L szintet végigléptetjük az oszlopokon, és amelyik gomb le van nyomva, ott a megfelelő sorban is L-t érzékelünk. Ha a mikrovezérlőnk megfefelően programozható, mondjuk egy AVR, akkor a felhúzó ellenállásokat elhagyhatjuk (belső felhúzó ellenállások), iletve a meghajtó lábaknál a diódákat szimulálhatjuk a nem aktív lábak nagy impedanciába kapcsolásával. Három ellenállás az már elég jó :). További megtakarítás lehet, ha mondjuk a kijelzőt is mátrix szerűen kell meghajtanunk, és ahhoz is felhasználjuk az oszlop meghajtó lábakat. Ennek a kapcsolásnak az a hibája, hogy a kezelőnek egyszerre csak egy gombot szabad megnyomnia.
Mátrix |
Gomb |
Láb |
2 x 2 |
4 |
4 |
3 x 3 |
9 |
6 |
4 x 3 |
12 |
7 |
4 x 4 |
16 |
8 |
5 x 5 |
25 |
10 |
6 x 6 |
36 |
12 |
5 x 7 |
35 |
12 |
4 x 8 |
32 |
12 |
3 x 9 |
27 |
12 |
Csináltam egy kis táblázatot, amiből kiderül, hogy például 4 gomb vagy az alatt nem is érdemes a kapcsolókat mátrixba kötni. Az is látszik, minnél több kapcsolót kell alkalmaznunk, annál nagyobb megtakarítást érhetünk el a felhasznált lábak tekintetében. Azután a végén látható, hogy a legidálisabb a négyzet alakú mátrix, mert ekkor lehet legtöbb gombot lekezelni adott lábszám mellett.
Ezt a megoldást a Macintosh Apple ][ -ben alkalmazták, lehetővé teszi az összes gomb korrekt leolvasását, akár több gomb egyidejű lenyomása esetén is. A hátránya, hogy minden kapcsoló mellé kell tennünk egy diódát is. Sajnos a mai spórolós és miniatűrizált világban erre általában nincs lehetőség. Azt szokták csinálni, hogy a billentyűket mátrixba kötik, és azokat a gombokat, amelyeket együtt szoktak lenyomni a többivel (Shift, Control...), azokat külön lábra teszik.
És a végére hagytam a Number One-t. Kezeljünk le sok gombot egyetlen lábbal! Ezt a megoldást egy Technics erősítőben láttam. Valahogy vicces, hogy az analóg technika siet a segítségünkre. Egy digitális áramkörben a vezetéknek csak két állapota lehetséges, ezzel mindössze egy kapcsoló jelét tudjuk feldolgozni. Viszont, ha a mikrovezérlőnknek van egy analóg bemenete, AD-ja, akkor egyetlen lábon számos feszültség szintet is meg tudunk különböztetni. A kapcsolókkal a bemenetre kapcsolt feszültséget szabályozzuk, a mikrovezérlőnkkel meg azt figyeljük, hogy mekkora bemeneti feszültséget kapunk.
Sok sikerélményt, és jó fejlesztést mindenkinek!