Szilágyi Sándor Zoltán hobbielektronika és amatőr robottechnika oldala

Arduino kezdőknek cikksorozatom, melynek első 13 része publikálásra került. Amatőr robotok, robot autók és LED-kockák építése.

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._abra_-_a_3..8-as_demultiplexer_elve.png

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._abra_-_demultiplexeres_kapcsolas.png

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._abra_-_probapanel_jogi_nevvel_kicsinyitett.jpg

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._abra_-_31._program_8_bites_futofeny_demultiplexerrel.png

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

 

Weblap látogatottság számláló:

Mai: 7
Tegnapi: 3
Heti: 10
Havi: 135
Össz.: 3 864

Látogatottság növelés
Oldal: Arduino kezdőknek 11 - A demultiplexer, 8 bites DMX futófény
Szilágyi Sándor Zoltán hobbielektronika és amatőr robottechnika oldala - © 2008 - 2025 - szilagyi-robot.hupont.hu

A HuPont.hu ingyen adja a tárhelyet, és minden szolgáltatása a jövőben is ingyen ...

ÁSZF | Adatvédelmi Nyilatkozat

X

A honlap készítés ára 78 500 helyett MOST 0 (nulla) Ft! Tovább »