Digitalni sat - Vremenski multipleks i drajvovanje LED displeja
Uvod i teorija
Multipleksiranje se vrši radi optimizacije komponenti i
uprošćavanja šeme. U uvodnom blogu videli ste dve šeme LED displeja: prvu šemu,
gde je svaki displej imao svoju mrežu otpornika, i drugu šemu, gde su LED
displeji delili iste otpornike.
Na prvi pogled, kod obe šeme vam se može učiniti da je
moguće upaliti sva četiri LED displeja istovremeno jer su kontrolni pinovi
povezani na baze PNP tranzistora preko Rb otpornika. Međutim, to nije tačno. U
tom slučaju bi svaki LED displej prikazivao potpuno istu cifru jer svi dele
jedan te isti LED drajver – ULN2803.
Ako želimo da svaki displej prikazuje različitu cifru u isto
vreme, na klasičan način, bio bi nam potreban po jedan ULN2803 za svaki
displej. Tako dolazimo do izuzetno složenog rešenja koje nije ni optimalno,
niti vredno truda – čak i da mikrokontroler ima četiri porta, kao što je to
slučaj kod arhitekture 8051. To prosto nije dobar pristup iz više razloga: šema
postaje prekomplikovana, rešenje nije ekonomično, teško je za implementaciju,
zahteva ogroman broj veza (žica) i rezultuje složenim PCB-om, odnosno štampanom
pločom.
Zato smo uzeli samo jedan čip ULN2803, koji se vremenski
raspoređuje tako da svaki LED displej prikazuje broj tačno u određenim
vremenskim sekvencama. Primenom visoke frekvencije takta paljenja i gašenja PNP
tranzistora dobijamo vremenski multipleks. Na taj način „varamo“ ljudsko oko i
stvaramo utisak da sve LED diode svetle istovremeno. U realnosti, to nije
tačno: u svakom mikrosekundnom trenutku svetli isključivo jedan LED displej, a
vremenski multipleks određuje tačnu sekvencu. Slike ispod prikazuju ovaj proces
kroz vremenske sekvence.
![]() |
| Slika 1: Prva vremenska sekvenca, svetli samo prvi LED displej. |
![]() |
| Slika 2: Druga vremenska sekvenca, svetli samo drugi LED displej. |
![]() |
| Slika 3: Treća vremenska sekvenca, svetli samo treći LED displej. |
![]() |
| Slika 4: Četvrta vremenska sekvenca, svetli samo četvrti LED displej. |
Ovu vremensku sekvencu paljenja i gašenja PNP tranzistora generiše mikrokontrolerska jedinica, kao što je 8051 ili Arduino (naravno, možete primeniti i bilo koje druge razvojne pločice).
![]() |
| Prvi primer multipleksiranja |
![]() |
| Obratite pažnju na brzinu vremenskog multipleksiranja. Ovaj multipleks je brži od prvog |
![]() |
| Treći primer vremenskog multipleksa je brži i od drugog i prvog. Kada se PNP tranzistori pale i gase brzo u vremenu, čovek ima osećaj da svi LED displeji rade u isto vreme |
Otpornici su obavezni kod sprege LED displeja i ULN2803 drajvera
Već sam napomenuo u ranijim blogovima da se na internetu
mogu pronaći rešenja koja izbacuju otpornike između LED displeja i ULN2803, jer
se dizajneri pogrešno vode određenim podacima iz specifikacije (datasheet-a)
displeja. Ti podaci u specifikaciji jesu tačni, ali se pogrešno interpretiraju,
što rezultuje nestabilnim kolima koja će pre ili kasnije pregoreti.
U pitanju je parametar Peak Forward Current (vršna direktna
struja), koji je ovde deklarisan na 140 mA. Koja je razlika između ovog parametra
i DC Forward Current-a (trajne jednosmerne struje) koja iznosi 25 mA? Peak
Forward Current je maksimalna struja koju LED dioda može da izdrži isključivo
ako se na nju dovede impulsni signal (Pulse Width) koji traje najduže 0.1 ms.
Pošto se LED displeji vremenski multipleksiraju, dizajneri često naprave
kardinalnu grešku i pomisle: „U redu, pošto LED može da izdrži 140 mA u piku, a
meni treba 25 mA, taj impuls svakako traje kratko, pa mi otpornik uopšte nije
potreban, mogu ga izbaciti!“
To je ogromna greška. Koliko god to radilo u teoriji ili
uspešno funkcionisalo na protobordu (prototipskoj ploči), to dugoročno nije
pouzdano. Iz računice u drugom blogu videli smo da otpornik baze „odvrće
slavinu“ PNP tranzistora na maksimum od oko 200 mA, koliko je teoretski
potrebno da svi segmenti LED displeja zasvetle odjednom. Krene da se izvršava
program za vremenski multipleks i upali se prvi LED displej.
U tom trenutku korisnik može pritisnuti taster za prikaz
datuma. Šta se tada dešava? Prekidni zahtev (IRQ) pokreće rutinu (ISR) koja
treba da obradi pritisak tastera. To znači da će IRQ mehanizam privremeno
skloniti sa procesorskog jezgra glavni program koji kontroliše vremenski
multipleks. Samim tim, signal koji drži PNP tranzistor uključenim može
potrajati znatno duže od predviđenih 0.1 ms. Ako kroz LED diodu teče struja od
140 mA ili više u dužem vremenskom intervalu, vaš LED displej će sigurno
pregoreti.
Inženjerski savet:
Zbog ovoga je zlatno pravilo u embedded sistemima da prekidne rutine (ISR)
moraju biti što kraće, a kritični hardverski zadaci poput multipleksiranja
često se poveravaju hardverskim tajmerima, a ne glavnoj petlji. Jedan takav
tajmer je Varijabilni Frekvencijski Drajver od zilsel-invent, ili 555 tajmer.
Takođe, mikrokontroler može jednostavno da se „zamrzne“ iz
bilo kog razloga (npr. zbog šuma u napajanju). Ako nemate otpornike koji ograničavaju
struju između LED displeja i ULN2803 čipa, diode će trajno stradati.
Dodatno, bez otpornika nećete imati isti intenzitet
svetlosti na svim ciframa. Ako je potrebno upaliti samo dve LED diode da bi se
prikazao broj 1, kroz njih će proći znatno veća struja nego kada se upali više
segmenata za prikaz broja 3 ili 8. To znači da će cifre sa manje upaljenih
segmenata svetleti previše jako i neravnomerno.
📦 Open Source & Podela znanja:Ovaj članak, prateće slike i PDF dokumenti su licencirani pod Creative Commons Attribution 4.0 International (CC BY 4.0) licencom. Slobodno možete deliti, kopirati i prerađivati materijal u bilo koje svrhe, uključujući i komercijalne, pod uslovom da jasno navedete izvor: zilsel-invent.com.
Autor: Vladimir Savić | Gemini AI







Comments
Post a Comment