Ich möchte gerne ein Lauflicht mit Atemga8 und dem LTC5940 aufbauen. Die LED sollen an einer Kette nacheinander hochlaufen und dabei unterschiedlich "warm" flackern, wie kleine Kerzen. Nun finde ich diesen TLC recht praktisch dafür, denn er scheint alles genau zu können. Nur hätte ich noch einige fragen zum Anschluss und Betriebsmodi: Betriebsmodi: Es gibt zwei? Den GS (Grayscale PWM Mode @12 Bit) und den DC (Dot Correction @6Bit) mode. Der Mode wird über DCPRG und VPRG eingestellt (0/1). Ich denke mal der PWM Mode sollte für mich der richtige sein? Also muss ich über SW SPI 192 Bit schubsen. Nur muss ich jedes mal neue 192 Bit senden, wenn die nächste LED angehen soll? Weiterhin verstehe ich das folgende nicht: http://www.farnell.com/datasheets/85896.pdf (Auszug aus DB) "When the counter reaches a count of FFFh, the counter stops counting and all outputs turn off. Pulling BLANK high before the counter reaches FFFh immediately resets the counter to zero." Ich kann doch die PWM je Kanal einstellen? Heisst das, dass eine ausgeht und eine andere noch leuchten kann? Hm, kurz zusammengefasst: LED0 an ,192Bit senden, nur die Bits für LED0 füllen, die restlichen 0 LED1 an ,192Bit senden, nur die Bits für LED0&1 füllen, die restlichen 0 LED2 an ,192Bit senden, nur die Bits für LED0&1&2 füllen, die restlichen 0 Dabei sollten alle unterschiedlich flackern. Also muss doch jede mit einem andern PWM Wert geladen werden? mfg
Roland Bumm wrote: > Ich denke mal der PWM Mode sollte für mich der richtige sein? Du brauchst beide: Mit Dot Correction stellst du den Strom ein, und mit PWM dimmst du die LEDs danach. > Nur muss ich jedes mal neue 192 Bit > senden, wenn die nächste LED angehen soll? Nein, einmal reicht (außer man möchte die Helligkeit ändern). > "When the counter reaches a count of FFFh, the counter > stops counting and all outputs turn off. Pulling BLANK high before the > counter reaches FFFh immediately resets the counter to zero." So wie ich das verstanden (und umgesetzt habe), scheint es keine echte PWM zu sein, sondern eine Art programmierbares Monoflop: Nach jedem Blank scheint die LED für die durch den PWM Wert bestimmte Dauer zu leuchten. Danach geht sie aus. Zumindest konnte ich bei mir solch ein Verhalten feststellen und das deckt sich auch mit obigem Satz. Konkret heißt das also, dass man alle 4096 Takte Blank kurz aktivieren muss.
@ Roland Bumm (rolandb) >Es gibt zwei? Den GS (Grayscale PWM Mode @12 Bit) und den DC (Dot >Correction @6Bit) mode. Der Mode wird über DCPRG und VPRG eingestellt >(0/1). >Ich denke mal der PWM Mode sollte für mich der richtige sein? Ja, er bietet mehr Auflösung für dein LED-Fading, ist aber ein wenig kompizierter. >ich über SW SPI 192 Bit schubsen. Nur muss ich jedes mal neue 192 Bit >senden, wenn die nächste LED angehen soll? Nein, du musst sogar die 192 neu senden, wenn deine einzelene LED einen neuen Helligkeitswert annehmen soll. >"When the counter reaches a count of FFFh, the counter >stops counting and all outputs turn off. Pulling BLANK high before the >counter reaches FFFh immediately resets the counter to zero." Das Ding ist ein One Shot Counter, sprich ein Zähler der einmal durchläuft und dann stehen bleibt. Danach musst du ihn rückstetzten und kannst danach einen neuen PWM-Zyklus starten. >Ich kann doch die PWM je Kanal einstellen? Ja, über die 192 Bits. > Heisst das, dass eine ausgeht und eine andere noch leuchten kann? ??? >LED0 an ,192Bit senden, nur die Bits für LED0 füllen, die restlichen 0 >LED1 an ,192Bit senden, nur die Bits für LED0&1 füllen, die restlichen 0 >LED2 an ,192Bit senden, nur die Bits für LED0&1&2 füllen, die restlichen 0 Ja, das geht so. >Dabei sollten alle unterschiedlich flackern. Also muss doch jede mit >einem andern PWM Wert geladen werden? Ja. Für den Anfangs solltest du es erstmal mit dem Dot Correction Mode probieren, der ist einfacher. MfG Falk
@ Benedikt K. (benedikt) >> Ich denke mal der PWM Mode sollte für mich der richtige sein? >Du brauchst beide: Mit Dot Correction stellst du den Strom ein, und mit >PWM dimmst du die LEDs danach. Nein, der IC kann nur den einen ODER den anderen, nicht beide gleichzeitig! Der Maximalstrom wird über einen Widerstand eingestellt. >Nein, einmal reicht (außer man möchte die Helligkeit ändern). Was der OP ja wohl ausdrücklich will . . . >So wie ich das verstanden (und umgesetzt habe), scheint es keine echte >PWM zu sein, sondern eine Art programmierbares Monoflop: Ist es auch. MFG Falk
Ok danke euch beiden. Also, ich brauche beide Modis. @Benedikt Ich möchte ja die Helligkeit steuern. Die LED's sollen ja flackern wie Kerzen, und dabei die Kette mit ca. 1,5sec/LED hochlaufen. Die vorhergehende LED soll anbleiben und zu jeder LED soll eine andere Flackerfrequenz herschen. Also kann ich folgendes tun: 1. 16*6=96Bit senden LED0 über DC einstellen (das lass ich immer konstant für LED0..15) 2. 16*12=192Bit senden LED0 über GS den PWM0 Counter laden dann 1.5 Sekunden warten: 1. 16*6=96Bit senden LED0&1 über DC einstellen (das lass ich immer konstant für LED0..15) 2. 16*12=192Bit senden LED0&1 über GS den PWM0 Counter laden kann man so überhaupt erreichen das die unterschiedlich flackern? mfg
Falk Brunner wrote: > Nein, der IC kann nur den einen ODER den anderen, nicht beide > gleichzeitig! > Der Maximalstrom wird über einen Widerstand eingestellt. Dann sag das mal meiner 16x16xRGB Matrix, bei der ich das genau so mache... Da geht das nämlich wunderbar. Wäre ja auch dumm für TI wenn es nicht gehen würde, denn genau so wird das IC angepriesen: Die Dot Correction (daher ja auch der Name) dient dazu um die LED Toleranzen auszugleichen, deshalb auch das EEPROM. Wenn alle LEDs aus die gleiche Helligkeit getrimmt sind, dann kann man diese per PWM dimmen. Roland Bumm wrote: > Also kann ich folgendes tun: > > 1. 16*6=96Bit senden > LED0 über DC einstellen (das lass ich immer konstant für LED0..15) > 2. 16*12=192Bit senden > LED0 über GS den PWM0 Counter laden > > dann 1.5 Sekunden warten: > > 1. 16*6=96Bit senden > LED0&1 über DC einstellen (das lass ich immer konstant für LED0..15) > 2. 16*12=192Bit senden > LED0&1 über GS den PWM0 Counter laden Wieso 1,5s warten? Sagen wir mal du willst 200Hz PWM Frequenz, dann benötigt das IC rund 820kHz an GSCLK. Alle 5ms (=200Hz) muss Blank kurz aktiviert werden und falls notwendig neue Daten an das IC gesendet werden. Der DC Wert muss nur einmal gesendet werden, danach wird die Helligkeit über die PWM Werte verstellt (man kann es natürlich auch umgekehrt machen, aber so hat der Hersteller das ursprünglich geplant).
Um mal ein bisschen Licht ins Dunkel zu bringen: Die Dot Correction (DC) ist ursprünglich dazu gedacht, die herstellungsbedingten Helligkeitsunterschiede von LEDs permanent auszugleichen. Wenn man also nur eine LED pro Port des TLC5940 hätte, würde man bei der Inbetriebnahme die LED-Helligkeiten über die Dot Correction angleichen und diese Werte dann im EEPROM des TLC5940 speichern. Für farbtreue Videodisplays etc. macht das auch Sinn. Jetzt erst kommt die PWM ins Spiel: die individuelle Helligkeitssteuerung der LEDs funktioniert im Sinne von TI damit. Die LED wird über den via Dot Correction eingestellten Strom getrieben, solange der PWM-Wert das erlaubt. Das mit dem One Shot wurde ja schon vorher erläutert. Man kann sich das allerdings auch zunutze machen, dass man für die PWM ja nie die vollen 12 Bit ausnutzen muss, man kann die Zähler ja schon via BLANK nach beliebigen Intervallen zurücksetzen. Wenn man also nur an/aus braucht, kann man auch eine 1-Bit-PWM bauen ;) EDIT: juhu, Benedikt hat seinen Beitrag um die Informationen ergänzt, die ich hier gebe, während ich meinen geschrieben habe...
@ Roland Bumm (rolandb) >Die LED's sollen ja flackern wie Kerzen, und dabei die Kette mit ca. >1,5sec/LED hochlaufen. Dann musst du aber in den 1,5s mehrere Dutzend bis Hundert mal neue Daten in den IC laden. >1. 16*6=96Bit senden >LED0 über DC einstellen (das lass ich immer konstant für LED0..15) >2. 16*12=192Bit senden >LED0 über GS den PWM0 Counter laden >dann 1.5 Sekunden warten: Und wie soll die LED dann langsam gedimmt werden? >kann man so überhaupt erreichen das die unterschiedlich flackern? Nö ;-) @ Benedikt K. (benedikt) > Nein, der IC kann nur den einen ODER den anderen, nicht beide > gleichzeitig! >Dann sag das mal meiner 16x16xRGB Matrix, bei der ich das genau so >mache... OK, stimmt. ist nicht auf die Schnelle herauszulesen, muss man ein wenig genauer lesen und das Blockschaltbild anschauen :-0 MFG Falk
Aha, also da ist mein Denkfehler. Der LTC5940 kann von sich aus nur dimmen. Mit einem bestimmten Startwert, hinunter zu "0" Licht. Den DC habe ich jetzt auch gerafft. Also, wie bekomme man das flackern mit dem gleichzeitigen hochlaufen der LED? Also doch, mittels mehrfachen senden der GS Bytes? mfg @Benedikt kannst du mir bitte mal den Stromlaufplan vom LTC Part senden? Oder hier posten. Laut dem Datenblatt müssen da FET's hinein. Hast du die drin?
@ Roland Bumm (rolandb) >Aha, also da ist mein Denkfehler. Der LTC5940 kann von sich aus nur >dimmen. Mit einem bestimmten Startwert, hinunter zu "0" Licht. NEIN! Er kann nun allein STATISCH den LEDs ein bestimmte Helligkeit geben. Wenn die sich zeitlich ändern soll, muss der uC das neu laden. >Den DC habe ich jetzt auch gerafft. Hab da meine zweifel. >Also, wie bekomme man das flackern mit dem gleichzeitigen hochlaufen der >LED? Also doch, mittels mehrfachen senden der GS Bytes? JA! >kannst du mir bitte mal den Stromlaufplan vom LTC Part senden? Ist der so kompliziert? Gibts doch im Datenblatt. > Oder hier posten. Laut dem Datenblatt müssen da FET's hinein. Nur wenn man den EEPROM programmieren will. Wenn nicht einfach mit einem normalen IO-Pin schalten. DC Register kann man auch im uC im EEPROM speichern und nach dem Reset einfach in den TLC schreiben. MFG Falk
Roland Bumm wrote: > Also, wie bekomme man das flackern mit dem gleichzeitigen hochlaufen der > LED? Also doch, mittels mehrfachen senden der GS Bytes? Das Flacken usw. musst du alles selbst erstellen. Du sagst dem IC z.B. LED1 soll zu 1234/4096 leuchten. Das macht das IC. Alles andere musst du selbst machen. Den Flackereffekt musst du also irgendwie in Software berechnen, z.B. mit einem Zufallszahlengenerator. > kannst du mir bitte mal den Stromlaufplan vom LTC Part senden? Oder hier > posten. Laut dem Datenblatt müssen da FET's hinein. Hast du die drin? Welche FETs? Meinst du die in Figure 22. Cascading Devices? Die sind nur zum Programmieren notwendig, das brauchst du nicht. Der VPRG Pin dient dann nur zum Auswählen zwischen DC und GS.
Cool, danke. Ansonsten ist ja da nicht viel drann. Alle Pins gehen an PortD des Atmega8.Ich werde den LTC auf ca. 35mA einstellen und mittels Poti feintunen. Kann man da nicht ein Poti für beide LTCs nutzen? Beide bekommen nen 800er Widerstand gehen, dann aber über ein Poti? Und das flackern via Software implementieren. mfg
@ Roland Bumm (rolandb) >Dateianhang: v1_ltc5940.jpg (45,8 KB, 1 Downloads) Bildformate!!! >PortD des Atmega8.Ich werde den LTC auf ca. 35mA einstellen und mittels >Poti feintunen. Und wozu? das Ding kann MEHRFACH digital eingestellt werden, und du willst noch nen Poti dranbauen? > Kann man da nicht ein Poti für beide LTCs nutzen? Nicht unbedingt. >Beide bekommen nen 800er Widerstand gehen, dann aber über ein Poti? Wozu? Mach nen Festwiderstand dran und gut.
Naja, ich will das Teil einmal programmieren, einstellen und den Apparat verschliessen. Dann falls mir was nicht gefällt, etwas mit Poti nachstellen. Das mit den durchschieben habe ich auch noch net gerafft. Aber ich denke, das ist dann eine SW Frage und keine HW technische. @sorry fürs Bild. Werde PNG nächstes mal nehmen. Danke für den Hinweis falk. Ach nochwas, ich finde den exakten Footprint nicht. Ist das ein schmales DIP28 Gehäuse oder ein breites? (300/600?) danke und mfg RolandB.
@ Roland Bumm (rolandb) >Dateianhang: ver1.png (7,8 KB, 0 Downloads) PNG ist richtig, die Auflösung nicht. Das kann man nur schlecht lesen. >Das mit den durchschieben habe ich auch noch net gerafft. Aber ich >denke, das ist dann eine SW Frage und keine HW technische. AVR-Tutorial: Schieberegister >Ach nochwas, ich finde den exakten Footprint nicht. Ist das ein schmales >DIP28 Gehäuse oder ein breites? (300/600?) Keine Ahnung. Im Datenblatt stehts nicht :-( MfG Falk
Danke für den Link, aber hier wird doch ein internes Schieberegister genommen, vom LTC und kein externes. Ich Meinte wie die Codefolge dafür aussehen muss, welche Pins also gesetzt werden müssen. Mit dem Bild. Ist von KiCAD die Option "Plot to Clipboard" und dann in Irfanview reinkopiert. Dann einfach als PNG gespeichert. Werde mal schauen wo man bei Irfanview die Auflösung einstellen kann. mfg
@ Roland Bumm (rolandb) >Danke für den Link, aber hier wird doch ein internes Schieberegister >genommen, vom LTC und kein externes. Ich Meinte wie die Codefolge dafür >aussehen muss, welche Pins also gesetzt werden müssen. GENAU SO! Stell dich mal nicht so mädchenhaft an. >Mit dem Bild. Ist von KiCAD die Option "Plot to Clipboard" und dann in KiCAD = KinderCAD?
Falk Brunner wrote: > @ Roland Bumm (rolandb) > >>Danke für den Link, aber hier wird doch ein internes Schieberegister >>genommen, vom LTC und kein externes. Ich Meinte wie die Codefolge dafür >>aussehen muss, welche Pins also gesetzt werden müssen. > > GENAU SO! Stell dich mal nicht so mädchenhaft an. > >>Mit dem Bild. Ist von KiCAD die Option "Plot to Clipboard" und dann in > > KiCAD = KinderCAD? :-) vergraul mal hier nicht die Mädels ;-) KinderCAD ist gar nicht mal so übel, bisjetzt noch nichts negatives festgestellt.Naja, das ist aber auch ne andere Diskussion. mfg
Habe den Schaltplan fertig. Denke er sollte so in Ordnung sein? Anregungen bzw Verbesserungen sind gerne erwünscht! mfg RolandB.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.