Arduino kezdőknek 11 - A demultiplexer, 8 bites DMX futófény
Szilágyi Sándor Zoltán Villamosmérnök, mérnök-informatikus
A cikket megírtam: 2023. január végén
A Rádiótechnikában megjelent: 2023. február
Ez a blog oldal tehát az eredeti, saját tulajdonomban levő dokumentum, és nem a nyomtatásban megjelent másolata. A cikket én írtam, én küldtem be, és csak azután jelent meg nyomtatott formában is. A nyomtatásban megjelent cikkeimre szerződést nem kötöttek velem, és anyagi juttatást se kaptam soha érte. Ezt a cikket már nagyobb kihagyás után írtam meg, mert csalódtam a lapban, ugyanis 10 db cikket küldtem be, de nem kaptam semmit a korábbi főszerkesztő által ígért 2500-7500 Ft/oldal-ból. Mivel a magazin már nem kapható, ezért a megjelent 13 cikkemet itt folytatnám, mivel Magyarországon jelenleg nincs hobbielektronikával foglalkozó magazin.
11.1 Demultiplexerek, dekóderek
A digitális elektronikában az adatok többnyire bináris formában fordulnak elő. A dekóder a bemenetére érkező n-bites kódot átalakítja át úgy, hogy az m db kimenete közül mindig csak egy lesz aktív. Mindegyik kimeneti értékhez a bemeneti értékek egy-egy adott kombinációja tartozik.
Pl.: egy 4-bites bináris-hexadecimális átalakító egy bináris kódot alakít át (24=16) hexadecimális számmá úgy, hogy a 16 db kimenet egy-egy hexa számot (0-tól F-ig) jelöl és a bemeneti jelkombináció alapján a kimeneten egy aktív 1 jelenik meg, miközben a többi kimenet passzív 0; vagy egy aktív 0 jelenik meg, miközben a többi kimenet passzív 1, attól függően, hogy milyen jellegű „n-ből 1 típusú” az adott kódátalakító. A dekódolóknak számtalan fajtája van, pl bináris-BCD, bináris-hexa, oktális-bináris, BCD-bináris, Gray-dekóder, stb.
A demultiplexerek annyira hasonlítanak az „n-ből 1 típusú” dekóderhez, hogy akár helyettesíthetők is egymással. Itt is megtalálható az n db adatbemenet, ami 2n db adatkimenetet ad. A különbség, hogy engedélyező/tiltó bemenetei is vannak, melyekkel a DMX-ek vezérelhetők, illetve tilthatók (49. ábra). Így tehát adott engedélyező utasítás alapján lehet az adott bemeneti jelkombinációt a kimenetek közül időben egy adott kimenetre küldeni. Időben egyszerre tehát csak egy kimenet vezérelhető, több nem.
Az időbeni kivezérlés mellett további szabály az „m” kimenetek maximális száma is: 2n≥m, azaz „n” db bemenet esetén a kimenetek száma nem lehet nagyobb mint 2n . Például egy 3-bemenetű DMX esetén a bemeneti jelkombináció 8-féle lehet, több nem, kevesebb viszont előfordulhat: 23=8, így tehát maximum 8 db kimenetünk lehet.
A kereskedelemben kapható demultiplexerek általában kevesebb kimenetet adnak, mint amire egy adott feladat (pl LED-kocka) esetében szükség lenne, ekkor több DMX-et kell összekapcsolni. Erről a közeljövőben megjelenő cikkeimben fogok részletesen írni.
49. ábra
11.2 A CD74HC238E DMX rövid bemutatása, bekötése
Az áramkör kapcsolási rajza az 50. ábrán látható. Az előző számhoz képest tehát egy új alkatrésszel bővült a kapcsolás, és ez a CD74HC238E demultiplexer IC.
50. ábra
Az 1-3 lábakra kerülnek az A0, A1, A2 címkiválasztó jelek (Address Select), azaz az Arduino 13, 12 és 11-es digitális kimenetei, melyekre kódolt jel kerül. Ezt fogja feldolgozni, majd a kimenetekre kiküldeni a demultiplexer. Ezek a már korában megismert értékadó művelettel kapnak egy-egy 0 vagy 1 értéket.
A 15-9 lábakról, illetve a 7-edik lábról vesszük le a kimeneti jeleket, melyek a katalógus szerint Output 0-tól 7-ig tartanak. A 15-ös láb az Y0, míg a 7-es láb az Y7.
Az IC a pozitív tápfeszültséget a 16-os lábra kapja (VCC), míg a negatív pólusa a 8-as láb (GND) lesz. A tápfeszültség igénye +5V. A tápegység GND pontjára kell bekötni az Arduino, a ledek és a demultiplexer földpontjait. Jelen esetben még nincs szüksége tápegységre, az Arduino-ról kapott jelek ki tudják vezérelni.
A tok 3 db engedélyező/tiltó bemenetet tartalmaz: G0|, G1| és G2. A |-jel a negálást, negált állapotot jelenti. Ezek a tok 4-5 és a 6-os bemenetei.
Az IC az Arduino-val kompatibilis, nem igényel illesztést, közvetlenül összeköthető vele.
A ledek bekötése megegyezik az eddigiekkel, egy-egy 220 Ohm-os ellenállásokon keresztül kapják a jeleket az anódjaikra, majd a katódjaikat közösítjük a GND-re.
A próbapanel egy lehetséges kialakítása az 51. ábrán látható.
51. ábra
31. program: demultiplexer teszt
Mielőtt összetettebb demultiplexeres feladatba kezdenénk, érdemes itt is az alapokkal megismerkedni. Ehhez a legegyszerűbb 8-bites programot írjuk meg. A ledek a jeleiket már nem az Arduino-ról kapják, hanem a demultiplexerről. Ez tehát egy olyan 8-bites futófény, ahol időben egyszerre csak 1 led világíthat, pontosan úgy, mint a 25-ödik programban. Az előző két számban megjelent 8 db futófény közül tehát csak ez valósítható meg DMX-el, mivel egyszerre csak egy kimenet lehet aktív az IC-n. A többi programban ugyanis egyszerre több led is kapott H szintet.
Az első 30 program nem tartalmazott Arduino-hoz csatlakoztatott IC-t. A 31-edik programtól kezdve viszont előfordulhat. A programozásban ez nem jelent nagy különbséget a korábbiakhoz képest. Jelenleg csak az engedélyező jelekkel lesz több deklarálnivalónk.
Ha a DMX címkiválasztó bemeneteit „A0”, „A1” és „A2” néven deklaráljuk, a fordító hibát fog kijelezni: „conflicting declaration 'byte A0'”, ugyanis A0-A5-ig az analóg bemeneteket így jelöli, tehát kisbetűvel kell beírni őket: „a0”, „a1”, „a2”. Ezeket az Arduino 13-11 digitális kimeneteire definiáltam. Az IC „G0n”, „G1n”, „G2” néven deklarált bemenetei pedig a 10-8 kimenetekre definiáltam. Mind a hat változó byte típusú. A változó nevében szereplő „n” betű a negálást jelenti.
A setup részben csak a fenti hat változót kell kimenetként felvenni.
Az engedélyező/tiltó bemeneteknél (most még) előre meg kell adni azt az állapotot, ami esetében a demultiplexer működhet, de a későbbiek során ezeket is felhasználhatjuk az IC vezérlésére. A G0n-t és a G1n-t alacsony, míg a G2-t magas szintre állítjuk a ciklus elején. A program egyszerű, lefutó típusú, csak az a0, a1, a2 logikai értékei változnak. Ez az 1. táblázatban is látható. Az egyes állapotok közé érdemes késleltetést beállítani, például 0,5 másodpercet.
A program az 52. ábrán látható.
beme-netek |
kime-netek |
Y0 (15) |
Y1 (14) |
Y2 (13) |
Y3 (12) |
Y4 (11) |
Y5 (10) |
Y6 (9) |
Y7 (7) |
A0 |
L |
H |
L |
H |
L |
H |
L |
H |
|
A1 |
L |
L |
H |
H |
L |
L |
H |
H |
|
A2 |
L |
L |
L |
L |
H |
H |
H |
H |
1. táblázat
52. ábra
Felhasznált irodalom:
Dr. Szittya Ottó: Digitális és analóg technika informatikusoknak 2. (1999)
Zsom Gyula: Digitális technika 1. (7. kiadás, 2010)
Rőmer Mária: Digitális rendszerek áramkörei (8. kiadás, 2010)
Kovács Csongor: Digitális elektronika (ismeretlen évjárat)
A cikket megírtam: 2023. január végén
A Rádiótechnikában megjelent: 2023. február