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 13 - A CD74HC238E demultiplexer minőségi vizsgálata. 8-bites futófény meghajtása tranzisztorokkal

Szilágyi Sándor Zoltán   Villamosmérnök, mérnök-informatikus

 

A cikket megírtam: 2023. 10. 08

A Rádiótechnikában megjelent: 2023. 11. 1.

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 ismét egy nagyobb kihagyás után írtam meg, mert egyre gyakrabban csalódtam a lapban, ugyanis nem kaptam semmit a munkámért. További csalódásom volt a papír és a nyomtatás  minősége, illetve az utolsó nyomdahiba, mely végleg kiverte nálam a biztosítékot: a 13-adik cikkemet 11-edikként jelentették meg. Ezért úgy döntöttem, hogy ezek után nem küldök be nekik több cikket, inkább elkezdek keresgélni más magazin után, vagy saját weboldalt írni.  Egy külföldi magazint találtam, kellő angol tudás megszerzése után ott szeretném majd folytatni, de addig is a weboldalamra írok, mivel így több emberhez jut el, mint a magyar nyelvű műszaki lapokban. Mivel a Rádiótechnika magazin már nem kapható, ezért a megjelent 13 cikkemet itt folytatnám, a következő lapon a 14-ediktől.

 

 

13.1 A CD74HC238E demultiplexer IC működési hibái

     Ebben a cikkben a korábban bemutatott demultiplexeres kapcsolás bővítése, illetve az IC mérése következik. Azért láttam ennek szükségét, mert a kiválasztott demultiplexer működése csak részben egyezik meg azzal, mint amit a középiskolai/főiskolai tankönyvek leírnak. A kiválasztott DMX esetében ezeket a tapasztalatokat egy mellékelt táblázatban is összegyűjtöttem. Több kísérleti áramkört is építettem, teszteltem, de végül a tranzisztoros megoldásnál maradtam. Így a mérési jegyzőkönyv mellett egy új alap kapcsolást is közreadok. A demultiplexerekkel szemben általánosítani nem szeretnék, így az itt leírtak csak erre az egy IC típusra jellemzőek, más típusú DMX-ekkel majd a későbbiekben szeretnék foglalkozni.

     Ahogy korábban írtam, a demultiplexerek olyan kombinációs logikai áramkörök, amelyeknek a bemeneti jelkombinációja alapján egy adott kimenete lesz aktív. Tehát időben egyszerre csak egy. Eddig egy DMX IC-t tanulmányoztam, és ez a CD74HC238E, mely egy 3 adatbemenettel és 8 outputtal rendelkező nagy sebességű CMOS áramkör.

     Az előző cikk írásánál, tesztelés közben vettem észre, hogy a demultiplexer nem teljesen úgy működik, mint ahogyan azt tanítják. Egy adott bemeneti jelkombináció alapján a hozzá tartozó kimenet egyedüliként kerül logikai H (magas) szintre míg a többi kimenetnek logikai alacsony szinten kellene maradnia. Sajnos a jelenlegi IC esetében nem ez történik, azaz míg az adott kimenet valóban megkapja a H szintet, addig a hozzá képest az Y7 irányába levő kimenetek is kaptak egy keveset belőle, viszont az Y0 irányába levők már közel 0V-on vannak.

     Ez azért is probléma, mert a (+5V) CMOS áramkörök 3,5-5 V bemeneti magas és 0-1,5 V bemeneti alacsony szinttel, illetve a kimeneteken 4,4-5 V logikai H szinttel és 0-0,33 V logikai L szint kellene rendelkezniük, úgy, hogy a feszültség értékek a köztük levő tiltott (unallowed) tartományba nem kerülhetnek. A CD74HC238E egy ellenpélda erre nézve.

     További érdekesség, hogy a kivezérlési hibája csak akkor jelentkezik, ha nyomógombbal vezérlejük az Arduino-t, azaz az előre programozott DMX-es futófénynél ez a hiba még nem jött elő.

     A jelen kapcsolásban levő IC Vcc pontját nem szabad tápfeszültségre kötni, mivel azon 4,2 V-os feszültség van jelen (Ne is próbáljuk!). Az IC cseréje se oldotta meg a hibát. Ekkor elkezdtem kísérletezni, mérni, a többségüket összegyűjtve közreadnám.

      Az első kísérlet a ledek védőellenállás értékeinek növelése volt. (Az 50-edik ábrán még 220 Ohmos ellenállás az 54-edik ábrán már 1 kOhm-osra cserélve.) Ennek hátránya, hogy kisebb fényerővel fognak égni, illetve sokan észre se veszik a hibát, de mivel elég zavaró így érdemes tovább folytatni a kísérletezést.

     Ezután döntöttem el, hogy számítással határozom meg az ideális ellenállás értéket. A számításban kb 5 V tápfeszültséget (DMX Y-kimenete és a GND pont között) feltételezve, illetve a leden 2 V feszültségeséssel és 20 mA átfolyó árammal számoltam. Mivel a védőellenállás sorosan kapcsolódik a leddel, így azon 5-2 = 3 V feszültség esik. Ezt a rajtuk átfolyó 20 mA-el elosztva 150 Ohm jön ki. Mivel különböző korú ledeket használtam, így az eredménynél kicsit nagyobb értékűeket építettem be, azaz 220 Ohmosakat. A számításból tehát látható, hogy az 1 kOhm sok.

     A folytatás a diódás vágóáramkörökkel következett, a melyeket köthetjük a fogyasztóval (jelen esetben a kimenetre kötött ellenállás a vele sorba kötött leddel) párhuzamosan, illetve sorosan is. Pozitív eredményt egyikkel se értem el. A párhuzamos vágóáramkör néhány DMX kimenet használata esetén működik, az L-H szint közötti kivezérlést nem kapó LED alacsony szintre kerül, viszont néhánynál több kimenet esetén az egészet lesöntölte, működésképtelenné téve a teljes kapcsolást. A soros diódás vágóáramkör esetén a cél az IC kimeneti feszültségének fix 0,6V-al való csökkentése lett volna (IC Y-kimenete – dióda anód – katód – ellenállás – led – földpont) a katód és az ellenállás közti feszültség a 0V-hoz képest jelentősen felugrott, nagyobbra, mint ami a DMX kimenetén megjelent.

Az utolsó kísérlet a demultiplexer minőségi hibáinak javítására egy nyolc darab tranzisztorból álló kapcsoló áramkör lett, ahol a BC337-es NPN tranzisztorok bázisai egy-egy 220 Ohmos ellenálláson keresztül kapják meg a demultiplexer kimeneteiről a jeleket (57. ábra). A kollektorok az Arduino +5V-os pontjáról kapnak feszültséget, míg az emittereik külön-külön szintén egy-egy 220 Ohmos ellenálláson keresztül kivezérlik az adott ledet. A bázis ellenállások változtatásával a ledek fényereje változtatható, de a korábban beállított 220 Ohmos értéknél maradtam. Minőségi javulást csak részben értem el: Y0-t aktív állapotba helyezve az előtte levő ledek is halványan világítani fognak, míg az Y7 aktív állapota esetén (nincs nyomógomb megnyomva) rajta kívül egyik led se világít, köztes kimenetet (Y1-Y6) aktív állapotba helyezve az eredmény hasonló a fentebb leírtakkal: ezeket az állapotokat, feszültség értékeket egy mérési jegyzőkönyvbe foglaltam össze (2. táblázat).

     A működéshez szükséges program megegyezik az előző cikkben közölttel: 55. ábra (32. program). A kapcsolást próbapanelen építettem meg, a fényképe az 58. ábrán látható.

 

57._abra_-_dmx_minosegenek_javitasa.png

57. ábra

 

58._abra_-_probapanel_dmx_es_tranzisztorok_jogi_nevvel_kicsinyitett.jpg

58. ábra

 

 

13.2 A CD74HC238E demultiplexer minőségi vizsgálata

 

     A táblázat első oszlopa a demultiplexer nyolc kimenetének a neveit tartalmazza, míg az egyes nevekhez tartozó 4-4 db sor az egyes kimenetek-, az egyes tranzisztorok bázisainak-, és emittereinek-, és a ledek földponthoz képesti feszültség értékeit tartalmazzák úgy, hogy a táblázat további (Y7-Y0) oszlopai a nyolc lehetséges állapotot tartalmazzák. Így tehát mind a nyolc IC kimenet magas szintű értékeire megvizsgálhatjuk a rákapcsolt tranzisztoros körök elemeinek mind a négy feszültség értékét az adott állapotban.

     A jegyzőkönyvben minden méréssorozat 1-1 oszlopot jelent. Halványzöld színnel jelöltem az épp aktív led és az előtte levő alkatrészek feszültség értékeit tartalmazó mezőket, míg pirossal színeztem azokat, ahol a működés szempontjából minőségileg hibás feszültségek lépnek fel úgy, hogy L (alacsony) állapotban kellene lenniük. (+5V-os CMOS esetén az L szint 0-0,33V kellene, hogy legyen)

     Például az Arduino 5-ös bemenetére adunk egy H szintű jelet ”button_3-al” (lásd előző cikk programja). Ekkor a demultiplexer A0 és A2 bemenetei logikai Low állapotba kerülnek (az Arduino 11-es és 13-as digitális kimeneteiről 0,96 Voltos feszültséget kapnak), míg az DMX A1 bemenete az Arduino 12-es kimenetéről logikai magas (4,93 Volt) szintet kap. A kimeneten Y2 lesz aktív, így az Y3, Y6, Y7 körökben is fellép egy-egy kisebb hibafeszültség. (Melyeknek a tankönyvek szerint nem lenne szabad ott lenniük.)

     A CMOS áramkörökhöz hasonlóan az Arduino-nál (Atmega 328P) is előírt L és H feszültségszintek vannak. Az L szint 0-1,5 V, a H szint 3-5 V, a tiltott tartomány így 1,5-3 V.

     A számítások akkor érvényesek, ha az 57. ábrán megadott ellenállás értékekkel dolgozunk. A mérés ideje alatt az alkatrészek vadonatújak voltak (a korábbi ledeket is kicseréltem a mérés idejére), így azokban elhasználódás miatti hiba nem léphetett fel. A mérést egy új, alig használt, OMU System NMM63 típusú digitális multiméterrel végeztem.

     Néhány példa a mérési jegyzőkönyvből:

-        Az első blokk tartalmazza azt az állapotot, amikor nincs gomb megnyomva, Y7 kimenet aktív állapotban van, rajta 4,18 Voltot mértem; a bázis-föld feszültség 3,95 V, az emitter-föld 3,29 V, és a led anódjára 1,55 V jut, azaz a led világít. Az alatta levő mezők nulla – megközelítőleg nulla voltos feszültségen vannak, így a többi led nem világít.

-        Pl. az Y4 kimenetének aktív állapotát leíró oszlopot nézzük meg. Az ide tartozó mezők mutatják az itteni feszültség értékeket, amelyek már eltérnek az Y7 aktív állapotában levő kör feszültség értékeitől. A táblázatból látható, hogy lefele, azaz az Y3-Y0 -ig levő mezők szintén nulla – megközelítőleg nulla voltos feszültségen vannak, így az a 4 led nem világít. Viszont itt már lényegesen tapasztalható a  CD74HC238E minőségi hibája, azaz az, hogy az Y7, Y6, Y5 kimenetekre kapcsolt ledekre 1,12-1,17 V közötti feszültség jut, azaz ezek a ledek ha halványan is, de világítani fognak!

-        Az utolsó blokk esetén a billentyűzet utolsó gombjának a megnyomására érvényes, azaz az utolsó kimenet (Y0) lesz aktív. A táblázatból látható, hogy a logikailag passzív állapotban levő kimeneteken mégis megjelenik feszültség, aminek következtében az Y 7, Y6, Y4, Y3, Y1 körök ledjeinek anódjaira akkora feszültség kerül, ami még elég ahhoz, hogy ezek a ledek halványan világítsanak. Az Y5 és Y2 körök ledjeire elhanyagolható mértékű (a CMOS IC-k logikai L szint tartományába eső) feszültség kerül, így azok a ledek nem fognak világítani.

-        A mérési jegyzőkönyvből látható, hogy az egyes aktív állapotok (halványzöld mezők) esetén a DMX outputok és a tranzisztorok feszültség értékei az Y7 aktív állapotnál (nincs nyomógomb megnyomva) a legmagasabbak, majd az Y0 felé haladva enyhén csökkennek. További érdekesség, hogy mind a nyolc led anódján levő feszültség az aktív állapotokban – kisebb ingadozásoktól eltekintve – körülbelül állandó volt.

 2._tablazat_-_cd74hc238e_meresi_jegyzokonyv.png

2. táblázat

 

 

 

Felhasznált irodalom:

A valós digitális áramkörök legfontosabb tulajdonságai http://home.mit.bme.hu/~benes/oktatas/dig-jegyz_052/digel-ea.pdf

Dr. Oniga István  - DIGITÁLIS TECHNIKA https://irh.inf.unideb.hu/~onigai/DT/DT_13.pdf

MINDEN, AMI ELEKTRONIKA – Logikai szintek https://electro.blog.hu/2019/01/31/logikai_szintek

 

A cikket megírtam: 2023. 10. 08

A Rádiótechnikában megjelent: 2023. 11. 1.

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

Mai: 6
Tegnapi: 3
Heti: 24
Havi: 71
Össz.: 4 268

Látogatottság növelés
Oldal: Arduino kezdőknek 13 - A CD74HC238E minőségi vizsgálata
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 »