Taula de continguts:

Els LED Charlieplexing: la teoria: 7 passos (amb imatges)
Els LED Charlieplexing: la teoria: 7 passos (amb imatges)

Vídeo: Els LED Charlieplexing: la teoria: 7 passos (amb imatges)

Vídeo: Els LED Charlieplexing: la teoria: 7 passos (amb imatges)
Vídeo: Controllare un tasto con ATTiny85 - #131 2024, Juny
Anonim
Els LED Charlieplexing: la teoria
Els LED Charlieplexing: la teoria
Els LED Charlieplexing: la teoria
Els LED Charlieplexing: la teoria

Aquest instructiu és menys un projecte de build tu mateix i més una descripció de la teoria del charlieplexing. És adequat per a persones amb conceptes bàsics d’electrònica, però no per a principiants. L’he escrit en resposta a les moltes preguntes que he rebut en els meus Instructables publicats anteriorment.

Què és "Charlieplexing"? Condueix molts LEDs amb només uns quants pins. En cas que us pregunteu, Charlieplexing porta el nom de Charles Allen de Maxim, que va desenvolupar la tècnica. Això pot ser útil per a moltes coses. És possible que hàgiu de mostrar informació d’estat en un microcontrolador petit, però només en teniu uns quants. És possible que vulgueu mostrar una matriu de punts de luxe o una pantalla de rellotge, però no voleu utilitzar molts components. Alguns altres projectes que demostren la flexibilitat de la pell que potser voldreu veure són: Com conduir molts LEDs des d’uns quants pins de microcontrolador. per Westfw: - https://www.instructables.com/id/ED0NCY0UVWEP287ISO/ I un parell dels meus propis projectes, el rellotge The Microdot: - https://www.instructables.com/id/EWM2OIT78OERWHR38Z/ El rellotge Minidot 2: - https://www.instructables.com/id/E11GKKELKAEZ7BFZAK/ Un altre exemple interessant de l’ús del charlieplexing es troba a: https://www.jsdesign.co.uk/charlie/ El rellotge Minidot 2 introdueix un esquema de charlieplexing avançat per a esvaïment / atenuació que no es parlarà aquí. ACTUALITZACIÓ 19 d'agost de 2008: he afegit un fitxer zip amb un circuit que pot ser capaç d'explotar la matriu charliplexing per als LED d'alta potència que es discuteixen (llargament:) a la secció de comentaris. Té un botó + codificador de posició per fer una interfície d'usuari, a més de circuits per a control d'ordinador USB o RS232. Cadascun dels carrils d’alta tensió lateral es pot configurar en un dels dos voltatges, per exemple, 2,2 V per als LEDS VERMELLS i 3,4 V per al verd / blau / blanc. El voltatge dels rails laterals alts es pot configurar mitjançant trimpot. Em plantejaria que es connectés un cable de cinta IDC de 20 fils a la placa i que s’afegissin connectors IDC de 20 pins al llarg de la cinta, cada placa LED tingui enllaços a qualsevol cable de la matriu que es desitgi. El circuit es troba a Eagle Cad i es representa a la subimatge següent. El circuit lateral alt s’implementa mitjançant optoacopladors que crec que podrien ser adequats. En realitat, no he provat aquest circuit ni he escrit cap programari per falta de temps, però ho he posat a fer comentaris, estic particularment interessat en la implementació de l’optocoplador. Qualsevol persona prou valenta com per provar-lo … publiqueu els vostres resultats. ACTUALITZACIÓ 27 d'agost de 2008: Per a aquells que no utilitzen EagleCad …. A continuació s'afegeix un pdf de l'esquema

Pas 1: Alguna teoria del LED

Alguna teoria del LED
Alguna teoria del LED
Alguna teoria del LED
Alguna teoria del LED

Charlieplexing es basa en diversos aspectes útils dels LED i dels microcontroladors moderns.

En primer lloc, què passa quan connecteu un LED a l'electricitat. El diagrama principal següent mostra el que s’anomena la corba If v Vf d’un LED típic de baixa potència de 5 mm. Si significa "corrent cap endavant" Vf significa "tensió cap endavant" L'eix vertical en altres paraules mostra el corrent que fluirà a través d'un LED si es posa la tensió de l'eix horitzontal a través dels seus terminals. També funciona al revés, si mesureu que el corrent té algun valor, podeu mirar cap a l’eix horitzontal i veure la tensió que presentarà el LED a través dels seus terminals. El segon diagrama mostra una representació esquemàtica d’un LED amb etiquetes If i Vf. Des del diagrama principal també he etiquetat àrees del gràfic que són d’interès. - La primera zona és on el LED està "apagat". Amb més precisió, el LED emet llum de manera tan tènue que no el podreu veure a menys que tingueu algun tipus d’intensificador d’imatges super-duper. - La segona àrea té el LED que emet una mica lleugera. - La tercera àrea és on normalment s’activa un LED i emet llum segons la qualificació dels fabricants. - La quarta àrea és on s’activa un LED més enllà dels seus límits d’operació, probablement brilla molt intensament, però, per desgràcia, poc temps abans que s’escapi el fum màgic que hi ha a l’interior i no funcionarà de nou … és a dir, en aquesta zona es crema perquè hi circula massa corrent. Tingueu en compte que la corba If / Vf o corba de funcionament del LED és una corba "no lineal". És a dir, no és una línia recta … té un revolt o una corba. Finalment, aquest diagrama és per a un LED vermell típic de 5 mm dissenyat per funcionar a 20 mA. Els diferents LED de diferents fabricants tenen diferents corbes de funcionament. Per exemple, en aquest diagrama a 20 mA, la tensió directa del LED serà d'aproximadament 1,9 V. Per a un LED blau de 5 mm a 20 mA, la tensió directa pot ser de 3,4 V. Per a un LED de luxe blanc de gran potència a 350 mA, el voltatge frontal pot ser d’uns 3,2 V. Alguns paquets de LEDs poden ser diversos LED en sèrie o en paral·lel, canviant de nou la corba Vf / If. Normalment, un fabricant especifica un corrent de funcionament que és segur utilitzar el LED en, i la tensió directa en aquest corrent. Normalment (però no sempre) obteniu un gràfic similar al següent al full de dades. Heu de mirar el full de dades del LED per determinar quina tensió directa hi ha a diferents corrents de funcionament. Per què és tan important aquest gràfic? Com que mostra que quan hi ha una tensió a través del LED, el corrent que fluirà serà segons el gràfic. Baixa la tensió i fluirà menys corrent … i el LED estarà "apagat". Això forma part de la teoria del charlieplexing, que abordarem en el següent pas.

Pas 2: les lleis (de l'electrònica)

Les lleis (de l'electrònica)
Les lleis (de l'electrònica)
Les lleis (de l'electrònica)
Les lleis (de l'electrònica)
Les lleis (de l'electrònica)
Les lleis (de l'electrònica)

Encara no es troba en la màgia del charlieplexing … hem d’anar a alguns conceptes bàsics de les lleis de l’electrònica. La primera llei d’interès estableix que el voltatge total a través de qualsevol sèrie de components connectats en un circuit elèctric és igual a la suma de l’individu. tensions entre els components. Això es mostra al diagrama principal següent: és útil quan s’utilitzen LEDs perquè la vostra bateria mitjana o el pin de sortida del microcontrolador mai no seran exactament el voltatge adequat per fer funcionar el LED al corrent recomanat. Per exemple, un microcontrolador normalment funcionarà a 5V i els pins de sortida estaran a 5V quan estigui engegat. Si només connecteu un LED al pin de sortida del micro, veureu a la corba de funcionament de la pàgina anterior que fluirà massa corrent al LED i s’escalfarà i es cremarà (probablement també afectarà el micro) Tanmateix, si introduïm un segon component en sèrie amb el LED, podem restar alguns dels 5V de manera que el voltatge esquerre sigui correcte per fer funcionar el LED al corrent de funcionament adequat. Normalment es tracta d’una resistència i, quan s’utilitza d’aquesta manera, s’anomena resistència limitant el corrent. Aquest mètode s’utilitza molt comunament i condueix a l’anomenada "llei d’ohms" … així anomenada en honor de Mr Ohm. La llei d’Ohms segueix l’equació V = I * R on V és el voltatge que apareixerà a través d’una resistència R quan hi hagi un corrent I flueix per la resistència. V és en volts, I és en amplificadors i R en ohms. Per tant, si tenim 5 V per gastar i volem 1,9 V a través del LED perquè funcioni a 20 mA, volem que la resistència tingui 5-1,9 = 3,1 V a través seu. Ho podem veure al segon diagrama. Com que la resistència està en sèrie amb el LED, passarà per la resistència el mateix corrent que el LED, és a dir, 20 mA. Per tant, reordenant l’equació podem trobar la resistència que necessitem perquè aquest treball funcioni. V = I * RsoR = V / Substituint els valors del nostre exemple obtenim: R = 3,1 / 0,02 = 155ohms (nota 20mA = 0,02Amps) fins ara … genial. Ara mireu el diagrama 3. Té el LED intercalat entre dues resistències. Segons la primera llei esmentada anteriorment, tenim la mateixa situació al segon diagrama. Tenim 1,9 V a través del LED, de manera que funciona segons la seva fitxa tècnica. També tenim cada resistència restant 1,55V cadascuna (per un total de 3,1). Sumant les tensions junts, tenim 5V (el pin del microcontrolador) = 1,55V (R1) + 1,9V (el LED) + 1,55V (R2) i tot s’equilibra. Mitjançant la llei d’ohms trobem que les resistències han de ser de 77,5 ohms cadascuna, que és la meitat de la quantitat calculada a partir del segon diagrama. Per descomptat, a la pràctica seria difícil trobar una resistència de 77,5 ohm, de manera que només hauríeu de substituir el valor disponible més proper, per exemple, 75 ohms i acabar amb una mica més de corrent a el LED o 82ohms per estar segur i tenir una mica menys. Per què a la terra hauríem de fer aquesta sorra de resistència que condueixi un LED senzill … bé, si teniu un LED, tot és una mica ximple, però això és una instrucció sobre charlieplexing i és útil per al següent pas.

Pas 3: introducció de "Drive complementari"

Presentació de "Drive complementari"
Presentació de "Drive complementari"

Un altre nom més precís per descriure "charlieplexing" és "impuls complementari".

Al microcontrolador mitjà, podeu dir al microprogramari que configureu un pin de sortida perquè sigui un '0' o un '1' o que presenti una tensió de 0V a la sortida o una tensió de 5V a la sortida. El diagrama següent mostra ara el LED encaixat amb un soci inversat … o un LED complementari, per tant unitat complementària. A la primera meitat del diagrama, el micro està enviant 5V al pin A i 0V al pin B. El corrent fluirà així de A a B. Com que el LED2 està orientat cap enrere cap al LED1, no hi fluirà cap corrent i no brillar. És el que s’anomena polarització inversa. Tenim l’equivalent a la situació de la pàgina anterior. Bàsicament podem ignorar el LED2. Les fletxes mostren el flux actual. Un LED és essencialment un díode (per tant, un díode emissor de llum). Un díode és un dispositiu que permet que el corrent flueixi en una direcció, però no en l’altra. L'esquema d'un tipus de LED ho mostra, el corrent fluirà en la direcció de la fletxa … però està bloquejat a l'altra banda. Si donem instruccions al micro perquè ara emeti 5V al pin B i 0V al pin A tenim el contrari. Ara el LED1 és polaritzat inversament, el LED2 és polaritzat cap endavant i permetrà el flux de corrent. El LED2 brillarà i el LED1 serà fosc. Ara pot ser una bona idea mirar els esquemes dels diversos projectes esmentats a la introducció. Hauríeu de veure molts d’aquests parells complementaris en una matriu. Per descomptat, a l'exemple següent, estem conduint dos LEDs amb dos pins de microcontrolador … es podria dir per què molestar-se. Doncs bé, la següent secció és on arribem a les entranyes del charlieplexing i com fa un ús eficient dels pins de sortida dels microcontroladors.

Pas 4: Finalment … una matriu Charlieplex

Finalment ….a Charlieplex Matrix
Finalment ….a Charlieplex Matrix
Finalment….una Charlieplex Matrix
Finalment….una Charlieplex Matrix

Com es va esmentar a la introducció, el charliplexing és una manera pràctica de conduir molts LEDs amb només uns quants pins en un microcontrolador. Tanmateix, a les pàgines anteriors no hem guardat realment cap pin, accionant dos LEDs amb dos pins ….

Doncs bé, podem estendre la idea d'unitat complementària a una matriu charlieplex. El diagrama següent mostra la matriu mínima charlieplex que consta de tres resistències i sis LED i que utilitza només tres pins de microcontrolador. Ara veieu el útil que és aquest mètode? Si volguéssiu accionar sis LED de manera normal … necessitareu sis pins de microcontrolador. De fet, amb N pins d'un microcontrolador, podeu accionar potencialment N * (N - 1) LED. Per a 3 pins, això és 3 * (3-1) = 3 * 2 = 6 LED. Les coses s’apilen ràpidament amb més pins. Amb 6 pins podeu conduir 6 * (6 - 1) = 6 * 5 = 30 LEDs … wow! Ara a la mica desconcertant. Mireu el diagrama següent. Tenim tres parells complementaris, un parell entre cada combinació de pins de sortida de micro. Un parell entre A-B, un parell entre B-C i un parell entre A-C. Si desconnectéssiu el pin C per ara, tindríem la mateixa situació que abans. Amb 5V al pin A i 0V al pin B, el LED1 brillarà, el LED2 es polaritzarà inversament i no conduirà el corrent. Amb 5V al pin B i 0V al pin A, el LED2 brillarà i el LED1 es polaritzarà inversament. Això segueix per als altres micro pins. Si desconnectéssim el pin B i fixéssim el pin A a 5V i el pin C a 0V, el LED5 brillaria. Invertint de manera que el pin A sigui 0V i el pin C sigui 5V, el LED6 brillaria. El mateix per al parell complementari entre els pins B-C. Espera, t’escolto dir. Vegem el segon cas una mica més de prop. Tenim 5V al pin A i 0V al pin C. Hem desconnectat el pin B (el mig). D'acord, de manera que un corrent circula pel LED5, el corrent no circula pel LED6 perquè és polaritzat inversament (i també ho són els LED2 i el LED4) … però també hi ha un camí per prendre el corrent des del pin A, passant pel LED1 i el LED3 no hi és? Per què aquests LED no brillen també? Aquí hi ha el cor de l’esquema charlieplexing. De fet, hi ha un corrent que flueix tant LED1 com LED3, però el voltatge entre tots dos combinats només serà igual al voltatge del LED5. Normalment tindrien la meitat del voltatge que té el LED5. Per tant, si tenim 1,9 V de LED5, només 0,95 V de LED1 i 0,95 V de LED3. Des de la corba If / Vf esmentada al començament d’aquest article podem veure que el corrent en aquesta mitja tensió és molt inferior a 20mA … i aquests LED no brillaran de manera visible. Això es coneix com robatori actual. Així, la major part del corrent fluirà a través del LED que desitgem, el camí més directe a través del menor nombre de LED (és a dir, un LED), en lloc de qualsevol combinació de LED en sèrie. Si heu analitzat el flux actual de qualsevol combinació de posar 5V i 0V en qualsevol dels dos pins de la matriu charlieplex, veureu el mateix. Només un LED brillarà a la vegada. Com a exercici, mireu la primera situació. 5V al pin A i 0V al pin B, desconnecteu el pin C. El LED1 és la ruta més curta que ha de prendre el corrent i el LED 1 brillarà. També passarà un corrent petit a través del LED5 i, a continuació, farà una còpia de seguretat del LED4 al pin B ….. però de nou, aquests dos LED de la sèrie no podran sifonar prou corrent en comparació amb el LED 1 per brillar intensament. Així es realitza el poder de la reflexió. Vegeu el segon diagrama que és l’esquema del meu rellotge Microdot …..30 LEDs, amb només 6 pins. El meu rellotge Minidot 2 és bàsicament una versió ampliada del Microdot …. els mateixos 30 LED disposats en una matriu. Per crear un patró a la matriu, s’encén breument cada LED que s’ha d’il·luminar i el micro passa al següent. Si està programat que s'encengui, es tornarà a engegar durant un breu temps. Escanejant ràpidament els LEDs prou ràpidament, un principi anomenat "persistència de la visió" permetrà a una sèrie de LED mostrar un patró estàtic. L’article Minidot 2 té una mica d’explicació sobre aquest principi. Però espereu … … Aparentment he glossat una mica a la descripció anterior. Què és aquest negoci de "desconnecta el pin B", "desconnecta el pin C". Següent secció.

Pas 5: triestats (no tricicles)

Triestats (no tricicles)
Triestats (no tricicles)
Triestats (no tricicles)
Triestats (no tricicles)

En el pas anterior es va esmentar que es pot programar un microcontrolador per produir una tensió de 5V o 0V. Per fer funcionar la matriu charlieplex, seleccionem dos pins a la matriu i desconnectem qualsevol altre pin.

Per descomptat, desconnectar manualment els pins és una mica difícil de fer, sobretot si estem escanejant les coses molt ràpidament per utilitzar la persistència de l'efecte de la visió per mostrar un patró. Tanmateix, també es poden programar pins de sortida d'un microcontrolador perquè siguin pins d'entrada. Quan un micro pin està programat per ser una entrada, entra en el que s'anomena "alta impedència" o "triestat". És a dir, presenta una resistència molt elevada (de l’ordre dels megaohms, o milions d’ohms) al pin. Si hi ha una resistència molt alta (vegeu el diagrama), podem considerar essencialment que el pin està desconnectat i, per tant, l’esquema charliplex funciona. El segon diagrama mostra els pins de matriu de cada combinació possible per il·luminar cadascun dels 6 LED del nostre exemple. Normalment, un triestat es denota amb una "X", 5V es mostra com a "1" (per a la lògica 1) i 0V com a "0". Al microprogramari d'un 0 o 1, programareu els pins perquè siguin una sortida i el seu estat està ben definit. Per al triestat, el programeu perquè sigui una entrada, i com que és una entrada, en realitat no sabem quin pot ser l'estat … d'aquí la "X" per desconegut. Tot i que podríem assignar un pin a triestat o a una entrada, no cal que el llegim. Només aprofitem el fet que un pin d'entrada en un microcontrolador és d'alta impedència.

Pas 6: algunes qüestions pràctiques

La màgia del charlieplexing es basa en el fet que el voltatge individual presentat en diversos LED de la sèrie serà sempre inferior al d’un sol LED quan el LED únic està paral·lel a la combinació de la sèrie. Si el voltatge és menor, el corrent és menor i, amb sort, el corrent de la combinació de la sèrie serà tan baix que el LED no s’encendrà, però no sempre és així. tensió directa d’1,9 V a la matriu i un LED blau amb una tensió directa de 3,5 V (per exemple, LED1 = vermell, LED3 = vermell, LED5 = blau al nostre exemple de 6 LED). Si encengués el LED blau, acabaria amb 3,5 / 2 = 1,75V per a cadascun dels LED vermells. Pot estar molt a prop de la poca àrea de funcionament del LED. És possible que vegeu que els LED vermells brillaran tènue quan s’encén el blau. Per tant, és una bona idea assegurar-vos que la tensió directa de qualsevol LED de color diferent de la vostra matriu sigui aproximadament la mateixa al corrent de funcionament, o bé utilitzar el mateix color LEDs en una matriu. En els meus projectes Microdot / Minidot no m’havia de preocupar d’això, he utilitzat LED SMD de color blau / verd d’alta eficiència que afortunadament tenen el mateix voltatge directe que els vermells / grocs. Tanmateix, si implementés el mateix amb LEDs de 5 mm, el resultat tindria més problemes. En aquest cas hauria implementat una matriu charlieplex blava / verda i una matriu vermella / groga per separat. Hauria hagut d’utilitzar més pins …, però allà hi aneu. Un altre problema és mirar el vostre dibuix actual des del micro i la brillantor que voleu que el LED. Si teniu una gran matriu i l’escanejareu ràpidament, cada LED estarà encès durant un breu temps. Això apareixerà relativament feble en comparació amb una pantalla estàtica. Podeu enganyar augmentant el corrent a través del LED reduint les resistències limitants de corrent, però només fins a un punt. Si treieu massa corrent del micro durant massa temps, danyareu els pins de sortida. Si teniu una matriu que es mou lentament, per exemple, una pantalla d’estat o de cicló, podeu mantenir el corrent baix fins a un nivell segur, però encara teniu una pantalla LED brillant perquè cada LED està encès durant més temps, possiblement estàtic (en el cas d’un Alguns avantatges del charlieplexing: - utilitza només uns quants pins en un microcontrolador per controlar molts LEDs - redueix el recompte de components ja que no necessiteu molts xips / resistències de controladors, etc. tant l'estat de tensió com l'estat d'entrada / sortida dels pins: cal tenir precaució amb la barreja de diferents colors. El disseny del PCB és difícil, perquè la matriu LED és més complexa.

Pas 7: referències

Al web hi ha moltes referències sobre la flexió de la pell. A més dels enllaços de la part frontal de l’article, alguns són: L’article original de Maxim, això té molt a dir sobre la conducció de pantalles de 7 segments que també és possible. https://www.maxim-ic.com/appnotes.cfm/appnote_number/1880A entrada wiki

Recomanat: