Sari la conținut
ELFORUM - Forumul electronistilor

Multiplexare corecta la afisajele LED 7 seg.


Vizitator mya

Postări Recomandate

Vizitator mya

M-ar interesa care sint timpii corecti de multiplexare la un afisaj cu LED (digiti - 7 segmente) pentru ca afisajul sa se vada bine si sa nu pilpiie... daca stie cineva. Eu din ce am testat a iesit totul aiurea.Adica m-ar interesa : - cit timp trebuie tinut digutul aprins ? si cu ce curent ? (daca nu sta tot timpul aprins banuiesc ca trebie curent mai mare de 20mA , nu ? ) - dupa ce se stinge si se trece la urmatuorul mai trebuie facuta o pauza ? daca da, de cit ? - cu ce frecventa trebuie afisat fiecare digit ? - si daca mai e ceva ce am omis eu ...

Link spre comentariu
  • Răspunsuri 9
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • srdjan

    2

  • stefan_k

    2

  • izua

    1

  • 10vid

    1

Top autori în acest subiect

la 25Hz e 40 milisecunde perioada... cu factor de umplere 50% se vede foarte bine. totusi depinde cati digiti are afisajul tau. cu cat mai multi ai trebuie sa creasca frecventa si evident o sa pierzi din luminozitate

Link spre comentariu

In mod semi-empiric, pentru un numar de 6 digiti am ajuns la rezultate OK in modul urmator: - stins digit-ul precedent - aprins digit-ul curent - sleep 2 milisecunde - reluat ciclul (pentru digitul urmator)Ar fi bine sa ai o sincronizare foarte buna a pinilor; de genul sa stingi/aprinzi toate ledurile simultan pe tot portul (nu stiu cum e la pic, eu folosesc altceva, ideea e sa nu aprinzi cate un led pe rand ca pierzi cicli importanti si obtii efecte vizuale nedorite).Cele 2 milisecunde le-am calculat in felul urmator: - la afisare cu frecventa de 60Hz, inseamna ca trebuie afisare completa trebuie sa se realizeze in 1/60 = 17 milisecunde, de unde rezulta numarul de milisecunde pentru fiecare digit (eu am folosit 6 digiti): 17/6. Cum da cu virgula, am incercat si cu 2 si cu 3. Cel mai bine s-a vazut cu 2ms (dar ar trebui sa iau in considerare ca in functie de X conditii se mai petreceau eventual calcule la fiecare ciclu, deci perioada de asteptare crestea si implicit scadea frecventa).Curentul prin leduri: tot semi-empiric trebuie sa il afli. Adica calculezi cam cat ar fi teoretic caderea de tensiune pe led, curentul maxim suportat de microcontroller (pe pinul comun - daca nu folosesti tranzistor extern), etc. La o adica poti incerca chiar si fara rezistente de limitare. Si nu e nevoie de curent mai mare de 20mA.

Link spre comentariu
Vizitator mya

Multumesc pt raspunsuri.Eu am 5 digiti...Da, ledurile de la un digit le aprind pe toate o data. Se poate si cu PIC.Deci la tine 2 ms ar fi timpul cit se afiseaza un digit. Si intre stingerea celui precedent si aprinderea celui curent nu bagi nici un delay ? Mda, asa e, parca PIC-ul nu da mai mult de 25mA pe pin, deci merge si fara rezistente...

Link spre comentariu

ba trebuie rezistente pentru limitare pentru ca risti sa arzi pic-ul.la 5 digiti pe 40ms ajunge 8ms/digit. asta va fi delay-ul pentru fiecare digit deoarece comutatia de la un digit la altul dureaza doar cateva clock-uri. practic factorul de umplere pentru fiecare digit va fi aproape 100% astfel obtii luminozitatea maxima. daca vrei sa scazi luminozitatea poti modifica factorul de umplere (nimeni nu cred ca doreste asa ceva)

Link spre comentariu

Si intre stingerea celui precedent si aprinderea celui curent nu bagi nici un delay ?

Nu, de ce ai vrea pauza cat timp nu e afisat nimic? Toata ideea e sa treci cat mai repede din stadiul de stins in cel de aprins, fara nici un delay. Abia dupa ce il aprinzi astepti un timp pentru ca 1) ledurile sa ajunga la luminozitate maxima si 2) ochiul sa "memoreze" imaginea cu ledurile aprinse. Cat este acel timp de asteptare ... din calcule iese bine si cu 8ms, dar din practica mie mi-a mers mai bine cu 2ms decat cu 3ms (la care, recunosc, se adaugau alte delay-uri pe care nu le-am calculat cat durau, desi nu cred ca erau asa de mari). Oricum nu e mare lucru, incearca care ti se potriveste tie mai bine, ca tu stii ce alte procesari mai ai acolo.Iar cu rezistentele de limitare, asculta de srdjan, ca zice bine.
Link spre comentariu
Vizitator mya

Ok, am sa incerc asa.Normal ca nu doresc sa scad luminozitatea. La ce am facut eu pina acum, daca e un pic de soare in camera abia se mai vad cifrele pe afisaj...

Link spre comentariu

Nu trebuie să stingi și să aprinzi, pentru că faci două operații (asta dacă nu te optimizează compilatoru, sau scrii direct în asm). Operațiile pe orice port (fie el avr, pic, arm sau un banal 8086) sunt atomice la nivel de byte, deci ceva de genulPORTx = 0xF0, va 'stinge' biții 0-3 și va 'aprinde' MSB-s.Cu rezistențele, eu de obicei nu pun, pentru că curenții prin leduri sunt date doar de PIC. Astfel o să ai luminozitate maximă, iar ca să aduci curentul la niște valori mai normale, poți face o pauză mai mare după ce treci printr-un ciclu complet de multiplexare. Cel mai simplu, dacă ai 4 digiți, numeri, de exemplu, până la 16. Electrodul comun va fi activ doar pe primele 4 valori. Așa, poți controla și luminozitatea ușor din software, și scapi și de piese în plus. Într-adevăr, nu e cea mai safe chestie pentru controller, dar eu nu am pățit-o până acum.

Link spre comentariu

Eu am facut vreo cateva numaratoare cu 4 digit-uri pentru firma la care lucrez. Am ales frecventa de 40Hz si pot spune ca dupa-masa sau seara nu palpaie, dar cand e soare puternic palpaie. Totusi nu deranjeaza, si pentru ca nimeni nu s-a plans, le voi lasa asa. Pare chiar old-school. ;)Am avut pana acum niste numaratoare produse de CBM (din Cluj) care aveau un refresh de cca. 60Hz (CBM 28A, CBM 419, avand un singur microcontroller AT90S4433 la 4Mhz). Nici un flicker, asa ca 60Hz e safe, pot spune. Oricum frecvente mai mari nu-si au rostul.Ca un fapt divers, am desfacut cel mai nou numarator de la CBM (CBM555), care are un refresh overkill in jur de 1000Hz! (microcontroller ST la 16Mhz), si contine nu mai putin de 7 integrate.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări