Charlieplexing … s méně dráty více funkcí

Co to je charlieplexing? Metoda, která dostala název po Charlie Allenovi z firmy Maxim Integrated a je určena ke snížení počtu vodičů potřebných k řízení multiplexovaných LED displejů nebo rozměrných LED matic. Uplatní se při přímém ovládání LED pomocí mikrokontroléru (bez vložených dekodérů jako je například dekodér BCD/sedmisegment 7447) nebo ve specializovaných integrovaných řadičích displejů. Byla použita například v obvodech  MAX6950, MAX6951, MAX6954, MAX6955, MAX6958 nebo MAX6959.

Při vysvětlení principu vyjdeme z možností ovládání šesti samostatných stejných LED. Nejjednodušší způsob je dát každé LED vlastní pin mikrokontroléru a zdroj proudu (proud omezující rezistor). Ovládání je krajně jednoduché, statické, můžeme nezávisle rozsvítit kteroukoli LED nebo jejich kombinaci. Potřebujeme 6 pinů mikrokontroléru (katody LED jsou společně připojeny na zem).

bez_mpx

Nejjednodušší zapojení (bez multiplexu)

Standardní multiplexování zapojí LED do matice, v daném případě bude mít 3 sloupce a 2 řádky. LED v řádku mohou svítit společně, řádky se rychle střídají. Vlivem setrvačnosti oka vzniká dojem, že svítí všechny LED současně. Potřebujeme tolik pinů mikrokontroléru, kolik je součet počtu řádků a počtu sloupců, v daném případě 3+2=5. Na počet pinů jsme si tedy moc nepomohli, ale čím je matice větší a čtvercovější, tím je úspora pinů výraznější. Standardní multiplexování vystačí se dvěma logickými úrovněni výstupů, každý výstup je buď v H nebo v L, nic jiného ani nelze.

mpx_standard

Standardní způsob multiplexování

Charlieplexing využívá toho, že většina pinů mikrokontrolérů může pracovat třístavově. Když je pin nasměrován jako výstup, pak je na něj poslána uroveň H nebo L. Ale je tu ještě další možnost, nasměrovat  pin jako vstup, pak se jeví jako vodič s vysokou impedancí. Takové piny nečteme jako vstupy, nepotřebujeme to, stačí nám, že jimi neteče (významný) proud ani proti úrovni H, ani proti úrovni L.

Rezistory ve schématu jsou označeny podle toho, pro kterou LED mohou pracovat. Každou LED je možné ovládat samostatně, současně svítit mohou ale jen vybrané dvojice LED (například 1 a 5). Vystačíme se třemi (třístavovými) piny, to je docela významný pokrok.

charlie

Multiplexování metodou chralieplexing

Pokud chceme rozsvítit jen LED1, musíme mít na vývodech toto:

A - výstup s úrovní H
B - výstup s úrovní L
C - vstup (respektive vysoká impedance, v podstatě totéž jako odpojený vývod)

Druhý příklad. Chceme rozsvítit LED2 a současně LED6:

A - výstup s úrovní L
B - výstup s úrovní H
C - výstup s úrovní H

Při multiplexování budeme v podobném zapojení zpravidla přepínat LED jednotlivě. Cenou za uspořený počet  pinů je jednak nutnost použít třístavové piny, jednak podstatně složitější programové ovládání a vyšší nároky na výkon mikrokontroléru, pokud se má zachovat zdání svitu bez blikání, a leckdy také to, že se zkrátí relativní doba svitu jednotlivých LED, takže buď musí pracovat s vyšším pulzním proudem, nebo se svit jeví méně jasný.

Podívejme se, jak bude vypadat zapojení pro osmimístný sedmisegmentový displej. Počítáme-li segmenty včetně desetinné tečky, pak je znakovka osmisegmentová a celé zapojení je stejné, jako by šlo o ovládání 64 LED v matici 8×8.

DI217Fig01

Standardní multiplexování osmimístného displeje (obrázek převzatý z internetových stránek http://www.maximintegrated.com)

DI217Fig02

Multiplexování metodou charlieplexing (obrázek převzatý z internetových stránek http://www.maximintegrated.com)

Ve standardním zapojení potřebujeme k ovládání celkem 16 dvoustavových pinů (8 pro segmenty a 8 pro volbu znakovky). Všechny segmenty jedné znakovky mohou svítit společně (případně stejný segment na všech znakovkách svítí současně), ovládání je poměrně jednoduché, rozsvěcíme jednu znakovku po druhé a stejné segmenty najdeme vždy na stejných pinech.

Při charlieplexingu vystačíme s 9 třístavovými piny, to ve výrazná úspora. Nelze říci, které piny slouží pro segmenty, a které pro volbu znakovky, všechny mají obojí význam podle situace. Segmenty jedné znakovky mohou svítit současně, ale pro každou znakovku jsou piny ovládající příslušné segmenty jiné! Na ty segmenty, které mají svítit, se posílá stav H, na ty, které nemají svítit, se připojí vysoká impedance (ne stav L !!!), na vývod vybírající znakovku se pošle stav L.

Pro názornější ukázku tohoto zapojení si ještě uvedeme rozkreslení řízení pro jen dvoumístný displej. V prvním případě ovládání znakovky nula je výstup nula řadiče sepnutý proti zemi, tím dostane zem na společnou katodu všech segmentů znakovky nula (modrá linie). Ty segmenty, které mají svítit, mají příslušný FET tranzistor zavřený a teče jimi proud ze spínaného zdroje proudu. Ty segmenty, které nemají svítit, mají příslušný FET také zavřený a jejich zdroj proudu je vypnutý (vývod je ve stavu vysoké impedance). Obdobně na druhém obrázku je stav pro ovládání znakovky jedna. Všimneme si, že stejný segment (levá LED v řadě) NENÍ ovládán vždy stejným pinem.

DI217Fig03

Ovládání znakovky nula

DI217Fig04

Ovládání znakovky jedna

Zdroj obrázků sedmisegmentových displejů:

http://www.maximintegrated.com/en/app-notes/index.mvp/id/1880

Kat. 1