Forum: Mikrocontroller und Digitale Elektronik LED Matrix 8x8 mit Multiplexing und PWM


von Bernd O. (predator7)


Lesenswert?

Hallo, ich habe eine 8x8 LED Matrix nach dem LED-Matrix Artikel 
aufgebaut erst mal in der Version mit den UDN2981a und ULN2803a 
Treibern.

Hier ist der Link dazu:
http://www.mikrocontroller.net/articles/LED-Matrix#Treiber

Die Matrix soll im Multiplexverfahren arbeiten und die LEDs sollen auch 
per pwm gedimmt werden.


Da ich mit FPGA und Mikrocontroller üben möchte, würde ich die LEDs erst 
mal mit dem FPGA ansteuern und später soll der Mikrocontroller die 
Berechnung übernehmen und dem FPGA über einen seriellen BUS (spi, i2c) 
Steuerbefehle geben.

Habe aber ein Verständnisproblem, wie ich  die ganzen 
Bildwiederholfrequenzen berechne.

Habe mir diese LEDs für die Matrix gekauft:

http://www.reichelt.de/LEDs-super-ultrahell/LED5-43-24000-WS/3/index.html?;ACTION=3;LA=5000;GROUP=A5332;GROUPID=3019;ARTICLE=126474;START=0;SORT=user;OFFSET=500;SID=11T9jPF38AAAIAAGE0K-00d3ad9028045a5c31903d2a8957452f0

Im Datenblatt dazu sind diese Werte.

Maximale Werte
Forward Voltage [VF] = 3.3V
Continuous Forward Current [IF] = 25mA (Test Condition sind 20mA)
Peak Forward Current [IFM] = 100mA

Duty Ratio = 0.1%
Pulse Width = 10us

Wie dimensioniert man jetzt Die Bildwiederholfrequenz der ganzen Matrix?

Sagt man z.B. man möchte das der volle Bildaufbau 100Hz hat, damit das 
Bild nicht flackert und dann rechnet man das auf die gegebene Matrix um?

1/100Hz = 0,01s

Bei einer Matrix mit N Spalten soll jede Spalte 1/N der Zeit für einen 
vollen Bildaufbau an sein.

0.01s * (1/8) = 0,00125s = 1,25ms

Für das LED Dimmen soll die Multiplexzeit einer Spalte gleich der 
PWM-Periodendauer sein.

Die LEDs können laut Datenblatt mit 100mA geplust werden, ich denke ich 
sollte da auch nicht drüber gehen, sonst würde die Lebenserwartung der 
LEDs schneller sinken. Was ich nicht verstehe ist, wie kriege ich dieses 
Duty Ratio und Pulse Width mit der Spaltenmultiplexzeit zusammen. Ist 
Duty Ratio das gleiche wie Duty Cycle?

Ist es so das die 10us Pulse Width, nur 0,1% (Duty Ratio) der gesamten 
Periode entsprechen, und man dann die gesamte Periode so ausrechnet:

T = 10us * 1000 = 10ms  (LED – Periodendauer = PWM - Periodendauer ),

* 1000 um auf die vollen 100% zu kommen.

Wie kriegt man jetzt diese LED-PWM-Periodendauer mit der Multipexzeit 
zusammen?

Die Auflösung der PWM z.B. 8 Bit, wird damit dann die ganze PWM 
Periodendauer in 256 Abschnitte eingeteilt oder nur der Puls?

Gruß

von Falk B. (falk)


Lesenswert?

@  bernd olsen (predator7)


>Duty Ratio und Pulse Width mit der Spaltenmultiplexzeit zusammen. Ist
>Duty Ratio das gleiche wie Duty Cycle?

Ja.

>T = 10us * 1000 = 10ms  (LED – Periodendauer = PWM - Periodendauer

Streng genommmen stimmt das. Praktisch hält sich keiner dran und die 
LEDs überleben das ganz gut.

D.h. du kannst deine LEDs auch 1,25ms mit 100mA Pulsstrom betreiben.

>Die Auflösung der PWM z.B. 8 Bit, wird damit dann die ganze PWM
>Periodendauer in 256 Abschnitte eingeteilt oder nur der Puls?

Wo ist für dich der Unterschied? Beim Multiplexen ohne PWM wird jede 
Spalte mit hier im Beispiel 1,25ms pulsartig eingeschaltet, das ist 
gleichbedeutentd mit 100%. Mit PWM muss man die 1,25ms nochmals 
unterteilen, um die Helligkeit verringern zu können. Die PWM hat also 
800 Hz, daran sieht man, warum sowas meist mit Hardwareunterstützung 
machen muss, weil Soft-PWM hier meist an die Grenzen des sinnvoll 
machbaren stößt.

von MaWin (Gast)


Lesenswert?

> Wie dimensioniert man jetzt Die Bildwiederholfrequenz der ganzen Matrix?

Dafür sind eher die ULN2803 und UDN2981 zuständig, und die sind ziemlich 
langsam.
Wenn 100Hz reichen, nimmt man für 8 Zeilen 1/800 Sekunde pro Zeile,
bei einem Strom von 100mA damit im Schnitt die LED 12.5mA bekommt.

Wenn du nun jedoch dimmen willst, da gibt es ja 2 Methoden (bei 8 bit).

Die LED statt 1/800 Sekunden nur 0/204000 bis 255/204000 Sekunde an 
lassen,
oder die LED mit dem niederwertigsten bit des Dimmwerts beschicken und 
1/204800 Sekunde warten, das nächstniederwertige bit nehmen und 2/204800 
Sekunde warten, das drittniedrigste und 4/204800 bis zum höchstwertigen 
bit und 128/204800 Sekunde warten.

Letzteres Verfahren wird mit den langsamen Treibern nicht funktionieren, 
obwohl das FPGA schnell genug waäre. Das erste Verfahren wird zwar keine 
lineare Helligkeit liefern, aber irgendwie schon gehen.

Daher nimmt man besser MOSFETs und Konstatstromtreiber wenn man so 
schnell dimmen will.

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.8.1

von Bernd O. (predator7)


Lesenswert?

Dann würde ich doch mit MOSFET's die Schaltung aufbauen,

die Schaltung ist auch im LED-Matrix Artikel.

http://www.mikrocontroller.net/articles/LED-Matrix#MOSFETs

Ich habe mir einen MOSFET-Treiber ausgesucht, den IR2113, den würde ich 
dann für die HIGH- und LOW-Side verwenden.

Hier ist der Link für Reichelt:

http://www.reichelt.de/ICs-CA-ISD-/IR-2113/3/index.html?;ACTION=3;LA=446;ARTICLE=41572;GROUPID=2910;artnr=IR+2113

Im Datenblatt dazu sind N-Kanal Mosfets für die HIGH- und LOW-Side 
eingetragen, aber im LED-Matrix Artikel sind für die LOW-Side (Kathoden) 
N-Kanal und  für die HIGH-Side (Anoden) P-Kanal Mosfets benutzt worden, 
Spielt das eine Rolle ausser der Stromrichtung, oder könnte ich für 
alles N-Kanal Mosfets verwenden?

An dem FPGA kann ich nur 3,3V maximal ausgeben.

von MaWin (Gast)


Lesenswert?

> Ich habe mir einen MOSFET-Treiber ausgesucht

Du brauchst keine MOSFET-Treiber für so was simples wie eine LED-Matrix.

von Bernd O. (predator7)


Lesenswert?

Ich habe gelesen das man die mosfet's nicht direkt über die Ausgänge des 
mikroControllers/FPGA steuern sollte, da wegen der Gatekapazität und des 
umladens bei hohen Frequenzen doch gössere Ströme fliesen könten und das 
das die Ausgänge belastet.

Was nimmt man denn da normalerweise z.B. (Ausser jetzt einem 
Mosfet-Treiber der für diesen Fall überdimensioniert wäre) 
Schieberegister, Pegel-Shifter, ..., um den Controller nicht zu 
belasten?

von MaWin (Gast)


Lesenswert?

> Ich habe gelesen das man die mosfet's nicht direkt über die Ausgänge des
> mikroControllers/FPGA steuern sollte, da wegen der Gatekapazität und des
> umladens bei hohen Frequenzen doch gössere Ströme fliesen könten und das
> das die Ausgänge belastet.

Die üblichen 20mA sind lang ausreichend für eine LED-Matrix.

> Was nimmt man denn da normalerweise z.B. (Ausser jetzt einem
> Mosfet-Treiber der für diesen Fall überdimensioniert wäre)
> Schieberegister, Pegel-Shifter, ..., um den Controller nicht zu
> belasten?

Maximal braucht man Pegelwandler vom 3.3V FPGA zu den 5V der 
Matrix-Versorgung, dazu tun es billige 74HCT244, bei mehr CD40109.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.