Forum: Mikrocontroller und Digitale Elektronik Externe PWM Lösung zur LED Ansteuerung


von Kamin Katze (Gast)


Lesenswert?

Moin

Ich bin auf der Suche nach externen PWM Bausteinen, am liebsten mit 8 
AUsgängen zum direkten (oder indirekten) Anteuern von LEDs. Ich dachte 
dabei könnte pro Ausgang der Wert 0-255 seriell übertragen werden was 
schließlich in der Helligkeitsänderung der angeschlossenen LED 
resultiert.
Bislang habe ich mit dem TL494 gelibäugelt, aber vielleicht gibt es ja 
bessere Lösungen...

Gruß
Kamin Katze

von Guido Körber (Gast)


Lesenswert?

Cypress hatte da mal was, einen IIC Portextender der neben einfachen 
I/Os auch mehrere PWMs drin hat.

von manu (Gast)


Lesenswert?

Wenn es auch 16 Ausgänge sein dürfen, bietet sich der TLC5950 von TI an:
Er besitzt 16 Ausgänge à 120 mA mit 6 Bit Dot Correction und 12 Bit PWM. 
Die Ansteuerung erfolgt per SPI.

http://focus.ti.com/docs/prod/folders/print/tlc5940.html

von Maik F. (sabuty) Benutzerseite


Lesenswert?


von manu (Gast)


Lesenswert?

TLC5940 sollte es natürlich heissen ^^

von avr (Gast)


Lesenswert?

Hallo Kami Katze,

von NXP (Philips) gibt es einen ganzen Sack voll I2C
Bausteine für LED-PWM:

http://www.nxp.com/#/homepage/cb=[t=p,p=/71114/41735/48878]|pp=[t=pfp,i=48878]

Von den simplen 8 Bit bis zu 16 Bit mit Gruppenbildung.

avr

von Kamin Katze (Gast)


Lesenswert?

Danke für die Tipps erstmal.

Allerdings ist mir das ganze zu langsam... Ich bin dabei, eine RGB-Led 
Leiste mit etwa 100 LEDs (a 5mm = 50cm) durch Rotation als leuchtende 
"Littfasssäule" darzustellen. Der Umfang sollte etwa 200 LEDs sein; das 
heißt, dass sich die Leiste pro Umdrehung 200 mal ändert. Bei einer 
Geschwindigkeit von etwa 100 Umdrehungen pro Sekunde (evtl. gehts auch 
mit 50 flimmerfrei, bin dahingehend noch am testen) ändert sich die 
Leiste also 20.000 mal pro Sekunde.

Halbbilder (Interlacing) darstellen usw. kommt nicht in Frage, da durch 
die Umdrehung jede LED nur 1/200 pro Sekunde an jeder einzelnen 
horizontalen Position leuchtet. Die Leuchtkraft wird durch die Trägheit 
des Auges ohnehin schon stark vermindert, jede weitere Absenkung wäre in 
der Tat strafbar...

Die Ansteuerung habe ich auf 3 AVRs aufgeteilt (pro Farbe 1 AVR), das 
dürfte ausreichen. Allerdings stellt PWM wohl das größte Problem dar... 
Der PCA9626 (24LED PWM Treiber) hat zum Beispiel eine 97 kHz 
PWM-Frequenz. Bei 20.000 Umdrehungen würden also pro LED und Position 
etwa 5PWM Zyklen durchlaufen werden. Das ist zwar nicht viel, würde aber 
funktionieren.

Schlechter schaut es mit der Ansteuerung der PWM-Treiber aus. Der 
obgenannte Treiber wird per I2C angesteuert im normalen Modus also mit 
100kb/s. Das ist eindeutig zu wenig, um die PWM-Daten für 24LED zu 
übertragen.

Hat jemand einen Lösungsansatz?


Gruß
Kamin Katze

von Markus C. (ljmarkus)


Lesenswert?

MBI5030 würde ich dir Empfehlen.


lg, markus

von Jankey (Gast)


Lesenswert?

Du brauchst etwas schnelleres als I2C zb SPI, der AS3693 oder AS1112 
sollte passen.

lg

von MaWin (Gast)


Lesenswert?

> Hat jemand einen Lösungsansatz?

Klar, versuch's mal mit nachdenken.

100 Umdrehungen pro Sekunde, 200 Positionen, 5 komplette PWM Zyklen, 
Helligkeit mit 8 bit also 256 Stufen, macht 25.6MHz PWM Takt.

Schon mit einem AVR die 60 kByte Helligkeitswerte 100 mal pro Sekunde 
umherzuschalfen, ist 'ambitioniert', woher sollen die Daten denn auch 
kommen, RAM gibt's jedenfalls nicht so viel.

Einen TL494 bloss weil er PMC Controller heisst, als LED Dimmer 
einzusetzen, zeugt von grandioser Unkenntnis.

Die üblichen spinning LED signs machen gar keine Helligkeit, sondern nur 
voll an oder voll aus. Nehmen wir an, die Helligkeitsregulierung um 
Videos darzustellen ist das Besondere an deiner Schaltung. 5 PWM Zyklen 
brauchst du nicht. Wenn man bei digitaler PWM bleibt (also LED ist n/256 
der Zeit voll an, dann aus) mit 300 Kanälen, müssen 300 Byte-Counter 
5120000 mal pro Sekunde dekrementiert und 20000 mal pro Sekunden neu 
geladen werden. Will man das mit einem Chip machen, sollte man zu einem 
FPGA greifen, einem Spartan mit mindestens 80000 Zellen und 320 I/O 
Pins. Die haben dann auch 60k RAM zum Puffern der Daten. Das sind schon 
die grösseren, also lass dich im FPGA Forum nach der preiswertesten 
Lösung beraten.

Mit fertigen serilee versorgten mehrkanaligen LED PWM Dimmern wirst du 
Abstriche machen müssen.

von Michael (Gast)


Lesenswert?

Hallo Kamin,
Wenn du bewegte Bilder anzeigen möchtest sehe ich schwarz.
Wenn du "nur" fixe Bilder anzeigen möchtest, würde es folgender Maßen 
gehen: Aus dem Bild werden die RGB-Infos extrahiert, und diese wiederum 
in PWM-Infos in einer Tabelle abgelegt. Die Tabelle wird anschliessend 
auf "Vor-Ort"-AVR's aufgeteilt. Dazu wird eine normale serielle 
Übertragung benutzt. Die Vor-Ort-AVR's ´treiben die LED's direkt (das 
können die). Einige AVR'S können bis 20MHz getaktet werden, das heisst 
ein Takt dauert 50 ns (Nano-Sekunden). Die meisten Maschinenbefehle 
dauern 1-2 Takt-Zyklen.
Laut deinen Angaben, wird eine LED für 50us mit einer best. PWM 
angesteuert (1/(200Umdr. x 200 LED's)=50us). Während dieser Zeit sollen 
mindestens 5 PWM-Zyklen durchlaufen werden. Man hat also 50us Zeit, die 
PWM-Daten für die nächsten 50us vorzubereiten. Mithin ca. 500 
Maschineninstruktionen. Das sollte reichen, um aus einer Tabelle 
indiziert zu lesen.
Damit die LED's auch alle schön synchron sind, müssen die Vor-Ort-AVR 
pro Runde einmal per externem Hardware-Signal synchronisiert werden.

von Kamin Katze (Gast)


Lesenswert?

Hallo Michael

AVR sind für die direkte Ansteuerung nicht geeignet, da pro LED etwa 
20mA, je nach Farbe sogar bis zu 30mA, benötigt werden. Außerdem braucht 
man bei einer Leiste mit 100 RGB-LEDs, sprich 300 LEDs auch 300 direkte 
Ausgänge die alle PWM beherrschen bzw per Software simulieren. Da brauch 
man Unmengen von AVRs dazu...

Ich hab mir die Sache mit FPGA schon überlegt, genauer gesagt hab ich 
mir mal einen Xilinx XC3S4000 angeschaut. Die sind mit 100Euro erheblich 
tuerer als eine AVR Lösung wäre aber das größte Problem wird wohl sein, 
den Chip mit seinen 900 Pins mal auf die Platte zu bekommen. Wäre toll 
wenns da so ne Lösung gäbe, wie bei SOcket 775, hab aber bislang nix 
gefunden.

Gruß
Kamin Katze

von Michael (Gast)


Lesenswert?

Hallo nochmal,
Ich wünsch Dir weiterhin viel Glück bei deinem Projekt.
Wie du schon erkannt hast, sind 300 Ausgänge eine Menge. Gerade deswegen 
würde ich eine modulare Lösung vorziehen. Bei den Stromangaben muss ich 
Dir wiedersprechen, laut Original Atmel-Dokumentation, liegen die 
"absolute maximum-ratings" für "DC-Current per I/O-Pin" bei 40mA.
So, dann noch viel Spass beim Löten von 300 FPGA-Pins ;-)

von Kamin Katze (Gast)


Lesenswert?

ja, pro Pin vielleicht. Aber insgesamt hast du nicht mehr als 300mA 
Source zu verfügung, 350mA als Sink (ungefähr, müsst nochmals 
nachschaun...)

Gruß
Kamin Katze

von Falk B. (falk)


Lesenswert?

@  Kamin Katze (Gast)

>Ich hab mir die Sache mit FPGA schon überlegt, genauer gesagt hab ich
>mir mal einen Xilinx XC3S4000 angeschaut. Die sind mit 100Euro erheblich

Ist da ne 0 zuviel? Back erst mal kleinere Brötchen, nimm einen vom 
Kaliber XC3S400 (vierhundert), der hat im TQFP144 Gehäuse ~100 User-IOs 
und ist sehr preiswert.
Davon drei und fertig ist die Laube.

MfG
Falk

von Guido Körber (Gast)


Lesenswert?

Bei so vielen LEDs und so schnellen Wechseln: Schon mal Gedanken über 
die Synchronisation gemacht? Die Daten werden ja nacheinander 
geschrieben.

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.