Billentyű márixok

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!