Cuprins:

LED-uri Charlieplexing - Teoria: 7 pași (cu imagini)
LED-uri Charlieplexing - Teoria: 7 pași (cu imagini)

Video: LED-uri Charlieplexing - Teoria: 7 pași (cu imagini)

Video: LED-uri Charlieplexing - Teoria: 7 pași (cu imagini)
Video: Серводвигатель, косвенная адресация и электронная блокировка. Часть 10. Основы микроконтроллера (PIC10F200) 2024, Iunie
Anonim
LED-uri Charlieplexing - Teoria
LED-uri Charlieplexing - Teoria
LED-uri Charlieplexing - Teoria
LED-uri Charlieplexing - Teoria

Acest instructiv este mai puțin un proiect de construcție propriu și mai mult o descriere a teoriei charlieplexingului. Este potrivit pentru persoanele cu elementele electronice de bază, dar nu pentru începători complet. L-am scris ca răspuns la numeroasele întrebări pe care le-am primit în Instructables publicate anterior.

Ce este „Charlieplexing”? Conduce o mulțime de LED-uri cu doar câțiva pini. În cazul în care vă întrebați, Charlieplexing este numit după Charles Allen la Maxim, care a dezvoltat tehnica. Acest lucru poate fi util pentru multe lucruri. Poate fi necesar să afișați informații de stare pe un microcontroler mic, dar aveți doar câțiva pini de rezervă. Poate doriți să afișați o matrice de puncte fantezie sau un afișaj de ceas, dar nu doriți să utilizați o mulțime de componente. Câteva alte proiecte care demonstrează charlieplexing la care ați putea dori să vă uitați sunt: Cum să conduceți o mulțime de LED-uri de la câțiva pini de microcontroler. de Westfw: - https://www.instructables.com/id/ED0NCY0UVWEP287ISO/ Și câteva proiecte proprii, ceasul Microdot: - https://www.instructables.com/id/EWM2OIT78OERWHR38Z/ Ceasul Minidot 2: - https://www.instructables.com/id/E11GKKELKAEZ7BFZAK/ Un alt exemplu interesant de utilizare a charlieplexing este la: https://www.jsdesign.co.uk/charlie/ Ceasul Minidot 2 introduce o schemă de charlieplexing avansată pentru fading / dimming care nu va fi discutat aici. ACTUALIZARE 19 august 2008: Am adăugat un fișier zip cu un circuit care ar putea să exploateze matricea charliplexing pentru LED-uri de mare putere discutate (pe larg:)) în secțiunea de comentarii. Are un buton + codificator de poziție pentru a face o interfață cu utilizatorul, plus circuite pentru controlul computerului USB sau RS232. Fiecare dintre șinele de înaltă tensiune laterală poate fi setată la una dintre cele două tensiuni, să spunem 2.2V pentru LED-urile ROȘI și 3.4V pentru verde / albastru / alb. Tensiunea pentru șinele laterale înalte poate fi setată de trimpot. Aș prevedea ca un cablu panglică IDC de 20 fire să fie conectat la placă și conectori IDC de 20 pini adăugați pe lungimea panglicii, fiecare placă LED având legături cu orice fire din matrice sunt dorite. Circuitul este în Eagle Cad și redat în imaginea secundară de mai jos. Circuitul lateral înalt este implementat prin utilizarea optocuploarelor care cred că ar putea fi potrivite. De fapt, nu am testat acest circuit și nici nu am scris niciun software din cauza lipsei de timp, dar l-am pus pentru comentarii, sunt deosebit de interesat de implementarea optocuplatorului. Oricine este suficient de curajos pentru a-i da drumul … vă rugăm să publicați rezultatele. ACTUALIZARE 27 august 2008: Pentru cei care nu utilizează EagleCad …. adăugat mai jos este un pdf al schemei

Pasul 1: unele teorii LED

Câteva teorii LED
Câteva teorii LED
Câteva teorii LED
Câteva teorii LED

Charlieplexing se bazează pe o serie de aspecte utile ale LED-urilor și ale microcontrolerelor moderne.

În primul rând, ce se întâmplă atunci când conectați un LED la electricitate. Diagrama principală de mai jos arată ceea ce se numește curba If v Vf a unui LED tipic de 5 mm cu putere redusă. Dacă înseamnă „curent înainte” Vf înseamnă „tensiune directă”. Axa verticală în alte cuvinte arată curentul care va curge printr-un LED dacă puneți tensiunea axei orizontale peste bornele sale. Funcționează și invers, dacă măsurați că curentul este de o anumită valoare, puteți privi spre axa orizontală și puteți vedea tensiunea pe care LED-ul o va prezenta la bornele sale. A doua diagramă prezintă o reprezentare schematică a unui LED cu eticheta If și Vf. Din diagrama principală am etichetat și zone ale graficului care sunt de interes. - Prima zonă este locul în care LED-ul este „oprit”. Mai precis LED-ul emite lumină atât de slab încât nu îl veți putea vedea decât dacă aveți un fel de intensificator de imagine super-duper. - A doua zonă are LED-ul care emite doar o lumină slabă. - A treia zonă este în cazul în care un LED este de obicei acționat și emite lumină conform ratingului producătorilor. - Zona a patra este în cazul în care un LED este acționat dincolo de limitele sale de funcționare, probabil că luminează foarte puternic, dar, din păcate, doar pentru o scurtă perioadă de timp înainte ca fumul magic din interior să scape și nu va mai funcționa … prea mult curent curge prin el. Rețineți că curba If / Vf sau curba de funcționare a LED-ului este o curbă „neliniară”. Adică, nu este o linie dreaptă … are o îndoire sau o îndoială. În cele din urmă, această diagramă este pentru un LED roșu tipic de 5 mm proiectat să funcționeze la 20 mA. LED-uri diferite de la diferiți producători au curbe de funcționare diferite. De exemplu, în această diagramă la 20mA, tensiunea directă a LED-ului va fi de aproximativ 1,9V. Pentru un LED albastru de 5 mm la 20 mA, tensiunea înainte ar putea fi de 3,4 V. Pentru un LED de lux alb de mare putere la 350mA, tensiunea de înaintare ar putea fi de aproximativ 3,2V. Unele pachete de LED-uri pot fi mai multe LED-uri în serie sau în paralel, schimbând din nou curba Vf / If. În mod obișnuit, un producător va specifica un curent de funcționare care poate fi utilizat în siguranță la LED-ul și tensiunea directă la acel curent. De obicei (dar nu întotdeauna) veți obține un grafic similar celui de mai jos în foaia de date. Trebuie să vă uitați la fișa tehnică a LED-ului pentru a determina care este tensiunea directă la diferiți curenți de funcționare. De ce este atât de important acest grafic? Deoarece arată că atunci când o tensiune este peste LED, curentul care va curge va fi conform graficului. Reduceți tensiunea și curge mai puțin curent…..și LED-ul va fi „oprit”. Aceasta face parte din teoria charlieplexării, la care vom ajunge în pasul următor.

Pasul 2: Legile (electronice)

Legile (electronice)
Legile (electronice)
Legile (electronice)
Legile (electronice)
Legile (electronice)
Legile (electronice)

Încă nu s-a aflat încă la magia charlieplexării … trebuie să mergem la câteva elemente de bază ale legilor electronice. Prima lege de interes afirmă că tensiunea totală din orice serie de componente conectate dintr-un circuit electric este egală cu suma individului tensiuni peste componente. Acest lucru este prezentat în diagrama principală de mai jos. Acest lucru este util atunci când utilizați LED-uri, deoarece bateria medie sau pinul de ieșire al microcontrolerului nu vor fi niciodată exact tensiunea potrivită pentru a rula LED-ul dvs. la curentul recomandat. De exemplu, un microcontroler va rula de obicei la 5V, iar pinii de ieșire vor fi la 5V când este pornit. Dacă pur și simplu conectați un LED la pinul de ieșire al micro-ului, veți vedea din curba de funcționare din pagina anterioară prea mult curent va curge în LED-ul și se va încălzi și arde (probabil va deteriora și micro-ul) Cu toate acestea, dacă introducem o a doua componentă în serie cu LED-ul, putem scădea o parte din 5V, astfel încât tensiunea stângă să fie corectă pentru a rula LED-ul la curentul de funcționare corespunzător. Acesta este de obicei un rezistor și, atunci când este utilizat în acest mod, se numește rezistor de limitare a curentului. Această metodă este folosită foarte frecvent și duce la ceea ce se numește „legea ohmilor” … așa numit după domnul Ohm. Legea lui Ohms urmează ecuația V = I * R unde V este tensiunea care va apărea pe o rezistență R când un curent I curge prin rezistor. V este în volți, I este în amperi și R este în ohmi. Deci, dacă avem 5V de cheltuit și vrem 1,9V peste LED pentru a-l rula la 20mA, atunci vrem ca rezistorul să aibă 5-1,9 = 3,1 V peste el. Putem vedea acest lucru în a doua diagramă. Deoarece rezistorul este în serie cu LED-ul, același curent va curge prin rezistor ca LED-ul, adică 20mA. Deci, rearanjând ecuația, putem găsi rezistența de care avem nevoie pentru a face acest lucru. până acum … mișto. Uită-te acum la diagrama 3. Are LED-ul între două rezistențe. Conform primei legi menționate mai sus, avem aceeași situație la a doua diagramă. Avem 1,9V peste LED, deci funcționează conform fișei sale de specificații. De asemenea, fiecare rezistor scade fiecare 1,55V fiecare (pentru un total de 3,1). Adăugând tensiunile împreună avem 5V (pinul microcontrolerului) = 1,55V (R1) + 1,9V (LED) + 1,55V (R2) și totul se echilibrează. Folosind legea ohmilor, constatăm că rezistențele trebuie să aibă fiecare 77,5 ohmi, care este jumătate din suma calculată din a doua diagramă. Bineînțeles, în practică, ați fi greu să găsiți un rezistor de 77,5 ohm, deci ați înlocui doar cea mai apropiată valoare disponibilă, să spunem 75ohmi și ați termina cu un pic mai mult curent în LED-ul sau 82ohms pentru a fi în siguranță și pentru a avea un pic mai puțin. și este util pentru pasul următor.

Pasul 3: Introducerea „Drive-ului complementar”

Vă prezentăm „Drive complementar”
Vă prezentăm „Drive complementar”

Un alt nume care este mai precis pentru a descrie „charlieplexing” este „unitate complementară”.

În microcontrolerul dvs. mediu, în firmware puteți spune micro-ului să seteze un pin de ieșire să fie fie „0” sau „1”, fie să prezinte o tensiune de 0V la ieșire sau o tensiune de 5V la ieșire. Diagrama de mai jos arată acum LED-ul sandwich cu un partener inversat … sau un LED complement, deci unitatea complementară. În prima jumătate a diagramei, micro produce 5V la pinul A, iar 0V la pinul B. Curentul va curge astfel de la A la B. Deoarece LED2 este orientat înapoi spre LED1, nu va circula curent prin el și nu strălucire. Este ceea ce se numește polarizat invers. Avem echivalentul situației din pagina anterioară. Practic putem ignora LED2. Săgețile arată fluxul curent. Un LED este în esență o diodă (deci diodă emițătoare de lumină). O diodă este un dispozitiv care permite curentului să curgă într-o direcție, dar nu și în cealaltă. Schema unui tip de LED arată acest lucru, curentul va curge în direcția săgeții …… dar este blocat în sens invers. Dacă instruim micro-ul să scoată acum 5V la pinul B și 0V la pinul A, avem opusul. Acum LED1 este polarizat invers, LED2 este polarizat înainte și va permite fluxul curent. LED2 va străluci și LED1 va fi întunecat. Acum ar putea fi o idee bună să ne uităm la schemele diferitelor proiecte menționate în introducere. Ar trebui să vedeți o mulțime de perechi complementare într-o matrice. Desigur, în exemplul de mai jos, conducem două LED-uri cu doi pini de microcontroler …. ai putea spune de ce să te deranjezi. Ei bine, următoarea secțiune este locul în care ajungem la curajul charlieplexării și modul în care utilizează eficient pinii de ieșire ai microcontrolerelor.

Pasul 4: În cele din urmă … o matrice Charlieplex

În cele din urmă … o matrice Charlieplex
În cele din urmă … o matrice Charlieplex
În cele din urmă … o matrice Charlieplex
În cele din urmă … o matrice Charlieplex

După cum s-a menționat în introducere, charliplexarea este un mod la îndemână de a conduce o mulțime de LED-uri cu doar câțiva pini pe un microcontroler. Cu toate acestea, în paginile anterioare nu am salvat cu adevărat niciun pini, conducând două LED-uri cu doi pini ….

Ei bine, putem extinde ideea de acțiune complementară într-o matrice charlieplex. Diagrama de mai jos prezintă matricea minimă charlieplex formată din trei rezistențe și șase LED-uri și care utilizează doar trei pini de microcontroler. Acum vedeți cât de utilă este această metodă? Dacă ai vrea să conduci șase LED-uri în mod normal … ai avea nevoie de șase pini de microcontroler. De fapt, cu N pini ai unui microcontroler, puteți conduce N * (N - 1) LED-uri. Pentru 3 pini, acesta este 3 * (3-1) = 3 * 2 = 6 LED-uri. Lucrurile se acumulează rapid cu mai mulți ace. Cu 6 pini puteți conduce 6 * (6 - 1) = 6 * 5 = 30 de LED-uri …. uau! Acum, la bitul charlieplexing. Uită-te la diagrama de mai jos. Avem trei perechi complementare, o pereche între fiecare combinație de pini de ieșire micro. O pereche între A-B, o pereche între B-C și o pereche între A-C. Dacă ați deconecta pinul C pentru moment, am avea aceeași situație ca înainte. Cu 5V pe pinul A și 0V pe pinul B, LED1 va străluci, LED2 este polarizat invers și nu va conduce curentul. Cu 5V pe pinul B și 0V pe pinul A LED2 va străluci și LED1 este polarizat invers. Acest lucru urmează pentru ceilalți micro pini. Dacă deconectăm pinul B și setăm pinul la 5V și pinul C la 0V, atunci LED5 ar străluci. Inversând astfel încât pinul A să fie 0V și pinul C să fie 5V, atunci LED6 ar străluci. La fel și pentru perechea complementară dintre pinii B-C. Stai așa, te aud spunând. Să ne uităm la cel de-al doilea caz puțin mai atent. Avem 5V pe pinul A și 0V pe pinul C. Am deconectat pinul B (cel din mijloc). OK, deci un curent trece prin LED5, curentul nu trece prin LED6 deoarece este polarizat invers (la fel și LED2 și LED4) … dar există, de asemenea, o cale pe care curentul să o ia de la pinul A, prin LED1 și LED3 nu este acolo? De ce aceste LED-uri nu strălucesc la fel de bine. Iată inima schemei charlieplexing. Într-adevăr există un curent care curge atât LED1 cât și LED3, cu toate acestea, tensiunea din ambele combinate va fi egală cu tensiunea din LED5. De obicei, ar avea jumătate din tensiunea pe care o are LED5. Deci, dacă avem 1,9V pe LED5, atunci doar 0,95V vor fi pe LED1 și 0,95V pe LED3. Din curba If / Vf menționată la începutul acestui articol putem vedea că curentul la această jumătate de tensiune este mult mult mai mic decât 20mA … și acele LED-uri nu vor străluci vizibil. Acest lucru este cunoscut sub numele de furtul curent. Astfel, cea mai mare parte a curentului va curge deși LED-ul pe care îl dorim, cea mai directă cale prin cel mai mic număr de LED-uri (adică un LED), mai degrabă decât orice combinație în serie de LED-uri. Dacă v-ați uitat la fluxul curent pentru orice combinație de a pune 5V și 0V pe oricare doi pini de acționare ai matricei charlieplex, veți vedea același lucru. Doar un LED va străluci odată. Ca exercițiu, priviți prima situație. 5V pe pinul A și 0V pe pinul B, deconectați pinul C. LED1 este cea mai scurtă rută pe care trebuie să o ia curentul, iar LED-ul 1 va aprinde. Un curent mic va trece, de asemenea, prin LED5, apoi va face backup pentru LED4 la pinul B ….. dar din nou, aceste două LED-uri din serie nu vor putea sifona suficient curent în comparație cu LED-ul 1 pentru a străluci puternic. Astfel se realizează puterea charlieplexării. Vedeți a doua diagramă care este schema pentru ceasul meu Microdot …..30 LED-uri, cu doar 6 pini. Ceasul meu Minidot 2 este practic o versiune extinsă a Microdotului …. aceeași 30 de LED-uri dispuse într-o matrice. Pentru a crea un model în matrice, fiecare LED care se aprinde este aprins scurt, apoi micro-ul trece la următorul. Dacă este programat să fie iluminat, este repornit pentru o scurtă perioadă de timp. Prin scanarea rapidă a LED-urilor suficient de rapid, un principiu numit „persistența viziunii” va permite unei game de LED-uri să afișeze un model static. Articolul Minidot 2 are un pic de explicație cu privire la acest principiu. Dar așteaptă ….. Am părut că am glosat puțin în descrierea de mai sus. Ce este această afacere „deconectați pinul B”, „deconectați pinul C”. Următoarea secțiune vă rog.

Pasul 5: Tri-state (nu Tricycles)

Tri-state (nu Tricycles)
Tri-state (nu Tricycles)
Tri-state (nu Tricycles)
Tri-state (nu Tricycles)

În pasul anterior am menționat că un microcontroler poate fi programat pentru a emite o tensiune de 5V sau 0V. Pentru a face ca matricea charlieplex să funcționeze, selectăm doi pini în matrice și deconectăm orice alți pini.

Desigur, deconectarea manuală a pinilor este un pic dificil de realizat, mai ales dacă scanăm lucrurile foarte repede pentru a folosi persistența efectului de vedere pentru a arăta un model. Cu toate acestea, un pin de ieșire cu microcontroler poate fi, de asemenea, programat să fie și pin de intrare. Când un micro pin este programat să fie o intrare, acesta intră în ceea ce se numește „impedanță ridicată” sau „tri-stare”. Adică prezintă o rezistență foarte mare (de ordinul megaohmilor, sau milioane de ohmi) la pin. Dacă există o rezistență foarte mare (a se vedea diagrama), atunci putem considera în mod esențial pinul ca fiind deconectat, astfel încât schema charliplex funcționează. A doua diagramă arată pinii matricei pentru fiecare combinație posibilă pentru a ilumina fiecare dintre cele 6 LED-uri din exemplul nostru. De obicei, o tri-stare este notată cu un „X”, 5V este prezentat ca „1” (pentru 1 logic) și 0V ca „0”. În microfirmware-ul pentru un „0” sau „1” ați programa pinii ca să fie o ieșire și starea sa este bine definită. Pentru tri-stare, îl programați să fie o intrare și, pentru că este o intrare, nu știm de fapt care poate fi starea … de aceea „X” pentru necunoscut. Deși am putea aloca un pin pentru a fi tri-stare sau o intrare, nu este nevoie să-l citim. Profităm doar de faptul că un pin de intrare pe un microcontroler are o impedanță mare.

Pasul 6: Unele aspecte practice

Magia charlieplexării se bazează pe faptul că tensiunea individuală prezentată pe mai multe LED-uri din serie va fi întotdeauna mai mică decât cea pe un singur LED atunci când singurul LED este în paralel cu combinația de serie. Dacă tensiunea este mai mică, atunci curentul este mai mic și, sperăm, curentul din combinația de serie va fi atât de scăzut încât LED-ul nu se va aprinde. Acest lucru nu este întotdeauna adevărat. Să spunem că ați avut două LED-uri roșii cu tensiunea directă de 1.9V în matricea dvs. și un LED albastru cu o tensiune directă de 3.5V (să zicem LED1 = roșu, LED3 = roșu, LED5 = albastru în exemplul nostru cu 6 LED-uri). Dacă ați aprinde LED-ul albastru, veți ajunge cu 3,5 / 2 = 1,75V pentru fiecare dintre LED-urile roșii. Acest lucru poate fi foarte aproape de zona de operare slabă a LED-ului. S-ar putea să descoperiți că LED-urile roșii vor lumina slab atunci când albastrul este iluminat. Prin urmare, este o idee bună să vă asigurați că tensiunea directă a oricărui LED colorat din matrice este aproximativ aceeași la curentul de funcționare sau, altfel, utilizați aceeași culoare LED-uri într-o matrice. În proiectele mele Microdot / Minidot nu trebuia să-mi fac griji în legătură cu acest lucru, am folosit LED-uri SMD albastre / verzi de înaltă eficiență care, din fericire, au aceeași tensiune directă ca roșii / galbeni. Totuși, dacă aș implementa același lucru cu LED-uri de 5 mm, rezultatul ar avea mai multe probleme. În acest caz aș fi implementat separat o matrice charlieplex albastră / verde și o matrice roșie / galbenă. Aș fi avut nevoie să folosesc mai mulți pini …. dar iată-te. O altă problemă este să te uiți la extragerea ta curentă din micro și cât de luminos vrei LED-ul. Dacă aveți o matrice mare și o scanați rapid, fiecare LED este aprins doar pentru o scurtă perioadă de timp. Acesta va apărea relativ slab în comparație cu un afișaj static. Puteți înșela creșterea curentului prin LED prin reducerea rezistențelor de limitare a curentului, dar numai la un punct. Dacă trageți prea mult curent din micro pentru prea mult timp, veți deteriora pinii de ieșire. Dacă aveți o matrice care se mișcă încet, spuneți un afișaj de stare sau ciclon, puteți menține curentul la un nivel sigur, dar aveți totuși un afișaj LED luminos, deoarece fiecare LED este aprins mai mult timp, posibil static (în cazul unui Unele avantaje ale charlieplexingului: - folosește doar câțiva pini pe un microcontroler pentru a controla mai multe LED-uri - reduce numărul de componente deoarece nu aveți nevoie de multe cipuri / rezistențe de driver etc. atât starea de tensiune, cât și starea de intrare / ieșire a pinilor - trebuie să fie atenți la amestecarea diferitelor culori - Structura PCB este dificilă, deoarece matricea LED este mai complexă.

Pasul 7: Referințe

Există o mulțime de referințe despre charlieplexing pe web. Pe lângă link-urile din partea din față a articolului, unele dintre acestea sunt: Articolul original de la Maxim, acest lucru are multe de spus despre conducerea afișajelor pe 7 segmente, ceea ce este, de asemenea, posibil. https://www.maxim-ic.com/appnotes.cfm/appnote_number/1880A intrare wiki

Recomandat: