Guten Tag,
ich habe mir wahrscheinlich ein zu großes Projekt vorgenommen, nun sich
aber alle Sachen schon bestellt und angekommen sodass ich es durchziehen
muss.
Es geht mir um Instrumentenbeleuchtung im Auto mit RGB LED´s, welche ich
gerne per Arduino steuern möchte.
Da es eine größere Anzahl an LED´s ist, mehr als beim Arduino PWM Pins
verfügbar sind habe ich mir folgendes Modul bestellt.
http://www.adafruit.com/products/1429
Alles so angeschlossen wie es im Datenblatt steht. Erstes Problem, ich
sehe dass die LED´s "flimmern" und zwar immer dann wenn ein Programm
läuft oder ich ein Code gerade auf das Arduino lade.
Entkopplungskondensatoren habe ich an der Spannungsversorgung schon
ausprobiert. Hat aber nicht wirklich eine Besserung gebracht. Evtl. ist
das ein normales Phänomen oder ich habe die Kondensatoren falsch
angeschlossen? Wäre schon nice-to-have das loszuwerden, da es sicherlich
auf dauer dann nerven wird.
Habe es vorerst nur mit gewöhnlichen weissen 3,2V Leds Probiert.
Das zweite Problem besteht darin, dass die miniatur RGB LED´s welche ich
mir bestellt habe. "PLCC-2 SMD LEDs 3528"
http://www.ebay.de/itm/20-RGB-SMD-LEDs-PLCC-2-3528-Rot-Grun-Blau-FULLCOLOR-LED-/310261485548
Leider bei den Farben unterschiedliche Spannungen benötigen.
- Spannung: rot max. 2,4V / grün&blau max. 3,5V
- Strom: ca. 30mA
Das schließt natürlich eine gemeinsame Spannungsversorgung ja aus. Daher
muss ich schauen eine separate Spannungversorgung für den Roten Kanal
mit max. 2,4 V zu bekommen.
Da habe ich auch noch nicht wirklich eine Idee wie ich das ganze
Anschließen soll.
Widerstände wären wohl keine gute Wahl schon allein wegen den
Spannungsschwankungen im Auto.
Die Frage stelle ich mir auch ob ich die LED´s überhaupt an den
LED-Controller auf die Dauer anschließen sollte, oder lieber mit
Transistoren etc. arbeiten sollte. 30 mA sind immerhin als Limit
angegeben.
Habe das Problem auch hier direkt geschildert (falls ich hier evtl was
vergessen habe): http://forum.arduino.cc/index.php?topic=264325
Erhoffe mir hier evtl. mehr hilfe, da ich dann später auch einige Fragen
zum Codieren meiner gewünschten Anwendung haben werde, wenn dieses
Elektronische Problem erledigt ist.
Das Problem ist die habe ich nur in der 5050 Ausführung gefunden. Gibt
es kleinere?
Auf Grund von Platzmangel wäre das heikel.
Ich habe vorhin verschiedene Elkos an die Stromversorgung gehängt, sogar
das ganze an einem Akku betrieben, aber es scheint irgendwie am
Controller zu liegen.
Ist dieses Flimmern evtl. charakteristisch für diesen Controller und ich
mache mir umsonst die Mühe?
Georg P. schrieb:> Ist dieses Flimmern evtl. charakteristisch für diesen Controller
Mit Sicherheit nein.
Dabla:
To use: Power V+ with 5-30VDC, and connect ground to the common
ground.Then send 3-5V logic SPI data on DIN (data in), CLK (clock)
and LAT (latch). If you'd like to quickly turn off all the outputs,
raise the OE pin - it's pulled low to enable the PWM outputs
Der einzige Grund für Flimmern wäre OE pin. Ob du das irgendwie im
Code schaffst oder dein Arduino ständig zum Reset springt, kann dir
niemand ohne Code sagen.
@ Georg P. (georg123)
>http://www.adafruit.com/products/1429>Alles so angeschlossen wie es im Datenblatt steht. Erstes Problem, ich>sehe dass die LED´s "flimmern" und zwar immer dann wenn ein Programm>läuft oder ich ein Code gerade auf das Arduino lade.
Dann stimmt was nicht. Entweder ein Softwareproblem (Die PWM muss
zyklisch einen Reset kriegen) oder Hardwareproblem.
>Leider bei den Farben unterschiedliche Spannungen benötigen.>- Spannung: rot max. 2,4V / grün&blau max. 3,5V>- Strom: ca. 30mA>Das schließt natürlich eine gemeinsame Spannungsversorgung ja aus.
FALSCH! Ein Blick ins Datenblatt deines ICs, enthüllt, dass der 16
wunderschönen Konstantstromausgange hat! Damit kann man LEDs mit
verschiedenen Flußspannungen direkt anschließen, den Rest regelt der IC.
>Widerstände wären wohl keine gute Wahl schon allein wegen den>Spannungsschwankungen im Auto.
Du braucht doch so oder so eine STABILISIERTE Versorgungsspannung, hier
wahrscheinlich 5V. Die schwankt dann so oder so NICHT mehr.
>Die Frage stelle ich mir auch ob ich die LED´s überhaupt an den>LED-Controller auf die Dauer anschließen sollte,
Natürlich. Warum denn nicht? Der Name ist Programm!
> oder lieber mit>Transistoren etc. arbeiten sollte.
Bei deinem Wissen? Eher nicht.
> 30 mA sind immerhin als Limit angegeben.
Von wem?
Georg P. schrieb:> Leider bei den Farben unterschiedliche Spannungen benötigen.
das ist nicht 'leider' sondern ist ganz normal.
zweitens ist das nichts, was dir graue Haare bereiten muss, denn darum
kümmert sich der LED Treiber. Du schliesst den einfach an die
Spannungsversorgung (laut Beschreibung kannst du alles von 5 bis 30 Volt
nehmen) an, und der Treiber macht den Rest.
Marc Vesely schrieb:> Georg P. schrieb:>> Ist dieses Flimmern evtl. charakteristisch für diesen Controller>> Mit Sicherheit nein.> Dabla:> To use: Power V+ with 5-30VDC, and connect ground to the common> ground.Then send 3-5V logic SPI data on DIN (data in), CLK (clock)> and LAT (latch). If you'd like to quickly turn off all the outputs,> raise the OE pin - it's pulled low to enable the PWM outputs>> Der einzige Grund für Flimmern wäre OE pin. Ob du das irgendwie im> Code schaffst oder dein Arduino ständig zum Reset springt, kann dir> niemand ohne Code sagen.
Der hängt frei, evtl ist das der Grund, evtl. störung? Das werde ich mir
mal anschauen danke für den Tipp. Als Spannung habe ich bis jetzt immer
5V genommen, 3,2 V dann für die LED versorgung.
Falk Brunner schrieb:> FALSCH! Ein Blick ins Datenblatt deines ICs, enthüllt, dass der 16> wunderschönen Konstantstromausgange hat! Damit kann man LEDs mit> verschiedenen Flußspannungen direkt anschließen, den Rest regelt der IC.
Das habe ich z.B. schon vermutet war mir aber nicht ganz sicher, daher
auch der Thread hier.
D.h. ich könnte die einfach an 12 V (oder meinetwegen durch einen
Spannungsregler an 5V Bordspannung anschließen) und der Treiber kümmert
sich darum dass jederzeit maximal die 15 mA oder 30 mA (je nachdem
welchen Referenzwiderstand ich einbaue) durch die LED´s fliessen?
Im Code kann ich dann (für alle Farben?) die Helligkeit von 0 - 4095 für
die einzelnen Pins setzen.
Falk Brunner schrieb:>> oder lieber mit>>Transistoren etc. arbeiten sollte.>> Bei deinem Wissen? Eher nicht.
Habe ich bereits direkt am Arduino mit PowerLeds gemacht, hat wunderbar
geklappt.
Paul Baumann schrieb:>>> 30 mA sind immerhin als Limit angegeben.>> Falk frog:>>Von wem?>> Von besagtem wunderschönen Datenblatt....> ;-)> (Wirklich!)>> MfG Paul
Ja das Datenblatt ist nicht das Beste.
Georg P. schrieb:
> Der hängt frei, evtl ist das der Grund, evtl. störung? Das werde ich mir> mal anschauen danke für den Tipp. Als Spannung habe ich bis jetzt immer>> the OE pin - it's pulled low to enable the PWM outputs
OE muss auf low, also mit Masse verbinden.
Marc Vesely schrieb:> Georg P. schrieb:>> Der hängt frei, evtl ist das der Grund, evtl. störung? Das werde ich mir>> mal anschauen danke für den Tipp. Als Spannung habe ich bis jetzt immer>>>> the OE pin - it's pulled low to enable the PWM outputs>> OE muss auf low, also mit Masse verbinden.
Habe ich nun gemacht flimmert immer noch.
Stromversorgung läuft jetzt sauber nur von 5V und zwar das Arduino wird
von 5V per USB versorgt und die Stromversorgung des LED-Treibers hängt
samt dem V+ (Versorgung für LED´s) ebenfalls an dem 5V-PIN des Arduino.
kein Unterschied ob ich es am PC betreibe oder an einem 700mA
USB-Ladeschaltnetzteil.
Es ist jetzt auch kein Flimmern welches sonderlich auffällt oder nervt.
Man merkt jedoch den Unterschied, das Leuchten der LED´s ist anders
(Flimmerfrei) wenn ich die Verbindung zum Arduino vom LED Treiber
trenne.
Evtl. habe ich eine falsche Vorstellung davon.
Ein Video kann ich hier auch nicht hochladen, da die Cam das Flimmern
wohl nicht aufnehmen würde.
Code ist folgender.
@Georg P. (georg123)
>D.h. ich könnte die einfach an 12 V (oder meinetwegen durch einen>Spannungsregler an 5V Bordspannung anschließen) und der Treiber kümmert>sich darum dass jederzeit maximal die 15 mA oder 30 mA (je nachdem>welchen Referenzwiderstand ich einbaue) durch die LED´s fliessen?
Ja.
>Im Code kann ich dann (für alle Farben?) die Helligkeit von 0 - 4095 für>die einzelnen Pins setzen.
Ja, per PWM, die macht der IC selber. Man muss nur neue Daten dort
reinladen, wenn man andere Werte haben möchte. Dort könnte dein Flackern
herkommen. Du lädst zu oft oder zu ungleichmäßg, wodurch die PWM im IC
unterbrochen wird. Teste mal ob es flimmert, wenn du für ein paar
Sekunden KEINERLEI neue Werte in den IC schreibst (also konstante
LED-Farben).
"Man merkt jedoch den Unterschied, das Leuchten der LED´s ist anders
(Flimmerfrei) wenn ich die Verbindung zum Arduino vom LED Treiber
trenne."
AHA! dann werden keine neuen Daten mehr reingeladen und der IC läuft mit
konstanten PWM-Daten vom letzten Update. Dort musst du ansetzen und es
besser machen. Möglicherweise ist der Treiber für den IC, den du ja
"unsichtbar" benutzt, nicht so gut. Da der
"All outputs are turned off at the XLAT rising edge."
Wenn das zufällig mitten im PWM Zyklus passiert, flackert es, logisch!
Ergo. Der IC ist nicht optimal für flackerfreie Farbübergänge. TLC5940
ist besser, denn da kann man das Synchronisieren.
@Falk Brunner
werde ich machen.
übrigens.
http://www.adafruit.com/products/1429
We include a few extras to make this board easy to use: a durable 5V
low-dropout regulator (with reverse polarity protection in case y'know,
you plug it in backwards), a green power-good LED, four mounting holes
and a current-set resistor. A bit of 0.1" header is also included so you
can solder it on and plug into a breadboard.
To use: Power V+ with 5-30VDC, and connect ground to the common ground.
Then send 3-5V logic SPI data on DIN (data in), CLK (clock) and LAT
(latch). If you'd like to quickly turn off all the outputs, raise the OE
pin - it's pulled low to enable the PWM outputs.Our Arduino library will
get you started with blinking LEDs, install it and run the example code
with the noted pin configuration.
Das Board ist ja an sich schon recht noob-sicher gemacht.
Dieser "OE" PIN ist bereits auf LOW gesetzt. Daher war mein Versuch
sinnfrei.
auf 5V ist es wohl auch schon stabilisiert.
Die Ursache wird wohl also wirklich in der Software liegen.
D.h. das Flimmern wird nur dann auftreten wenn gerade eine Farbänderung
abläuft
Falk Brunner schrieb:> "Man merkt jedoch den Unterschied, das Leuchten der LED´s ist> anders> (Flimmerfrei) wenn ich die Verbindung zum Arduino vom LED Treiber> trenne.">> AHA! dann werden keine neuen Daten mehr reingeladen und der IC läuft mit> konstanten PWM-Daten vom letzten Update. Dort musst du ansetzen und es> besser machen. Möglicherweise ist der Treiber für den IC, den du ja> "unsichtbar" benutzt, nicht so gut. Da der>> "All outputs are turned off at the XLAT rising edge.">> Wenn das zufällig mitten im PWM Zyklus passiert, flackert es, logisch!>> Ergo. Der IC ist nicht optimal für flackerfreie Farbübergänge. TLC5940> ist besser, denn da kann man das Synchronisieren.
Das wäre dann der hier?
http://www.adafruit.com/products/815
Ist eher für Servos geeignet steht in der Beschreibung.
Marc Vesely schrieb:> Georg P. schrieb:>> Code ist folgender.>> Wieviele LEDs hast du ?
24 - Alle Ausgänge sind belegt
Georg P. schrieb:>> Wieviele LEDs hast du ?>> 24 - Alle Ausgänge sind belegt
Wie kommst du dann auf 8 ?
8 * einschalten, delay, 8 * einschalten == Flimmern.
Falk Brunner schrieb:> @Georg P. (georg123)>>>D.h. ich könnte die einfach an 12 V (oder meinetwegen durch einen>>Spannungsregler an 5V Bordspannung anschließen) und der Treiber kümmert>>sich darum dass jederzeit maximal die 15 mA oder 30 mA (je nachdem>>welchen Referenzwiderstand ich einbaue) durch die LED´s fliessen?>> Ja.>>>Im Code kann ich dann (für alle Farben?) die Helligkeit von 0 - 4095 für>>die einzelnen Pins setzen.>> Ja, per PWM, die macht der IC selber. Man muss nur neue Daten dort> reinladen, wenn man andere Werte haben möchte. Dort könnte dein Flackern> herkommen. Du lädst zu oft oder zu ungleichmäßg, wodurch die PWM im IC> unterbrochen wird. Teste mal ob es flimmert, wenn du für ein paar> Sekunden KEINERLEI neue Werte in den IC schreibst (also konstante> LED-Farben).
Perfekt.
Wenn ich alle PWM-Werte setze und dann einmal
1
2
tlc.write();
3
delay(10000);
oder
1
tlc.write();
2
for(inti=0;i<10000;i++){
3
delay(1);}
Ausführe. D.h. keine dynamischen Werte in den Variablen mehr. Dann
flimmert nix mehr.
Ist für die Anwendung aber auch OK denn der Farbwechsel soll nicht
ständig durchgeführt werden. Eher selten.
Marc Vesely schrieb:> Georg P. schrieb:>>> Wieviele LEDs hast du ?>>>> 24 - Alle Ausgänge sind belegt>> Wie kommst du dann auf 8 ?> 8 * einschalten, delay, 8 * einschalten == Flimmern.
Du meinst wohl die Funktion aus dem Code den ich weiter oben gepostet
habe?
1
// Slightly different, this makes the rainbow equally distributed throughout
2
voidrainbowCycle(uint8_twait){
3
uint32_ti,j;
4
5
for(j=0;j<4096;j++){// 1 cycle of all colors on wheel
6
for(i=0;i<8*NUM_TLC5974;i++){
7
Wheel(i,((i*4096/(8*NUM_TLC5974))+j)&4095);
8
}
9
tlc.write();
10
delay(wait);
11
}
12
}
Die 8 bezieht sich auf die 8 RGB LED´s die ich aber zurzeit nicht
angeschlossen habe.
8 RGB LEDS * 3 Chips pro LED = 24
Aus der Berechnung da ergibt sich dann irgendeine Art Farbverlauf sofern
man alle pins mit RGB LED´s belegt hat.
Die arbeiten da auch mit "tlc.setLED()" nicht mit "tlc.setPWM()"
tlc.setLED() spricht wohl 3 Pins gleichzeitig an um den RGB Wert
darzustellen
tlc.setPWM() spricht dann nur einen Pin an (was ich in meinem Code
nutze)
Ich habe einfach 24 weisse LED´s angeschlossen. Statt Farbunterschiede
gibt es eben nur Helligkeitsunterschiede.
Die Funktion habe ich auch nicht geschrieben sondern war als "Demo"
schon dabei.
@Georg P. (georg123)
>http://www.adafruit.com/products/815>Ist eher für Servos geeignet steht in der Beschreibung.
Ist ungeeignet, keine Konstantstromausgänge, viel weniger
Gesamtausgangsstrom.
Den zweiten Rat bräuchte ich und zwar.
Dieser OE Pin der beim HIGH Signal alle LED´s ausschaltet soll bis zur
Betriebsbereitschaft vom Arduino auf HIGH stehen.
Wie würdet ihr sowas aufbauen?
Der Controller soll also in der Lage sein, den OE pin der dauerhaft an
Spannung hängt auf GND (LOW) zu setzen.
Ich habe eine grobe Vorstellung wohl eine Pulldown Schaltung. Aber
möchte mich hier absichern, welche Widerstände ich wo einsetzen soll
usw. bevor mir da ein Pin durchbrennt.
Georg P. schrieb:> Ich habe eine grobe Vorstellung wohl eine Pulldown Schaltung. Aber> möchte mich hier absichern, welche Widerstände ich wo einsetzen soll> usw. bevor mir da ein Pin durchbrennt.
4K7 bis 10K sind üblich.
Georg P. schrieb:> Der Controller soll also in der Lage sein, den OE pin der dauerhaft an> Spannung hängt auf GND (LOW) zu setzen.
Das ist ein Pull-Up wenn er OE mit Plus verbindet.
Marc Vesely schrieb:> Georg P. schrieb:>> Ich habe eine grobe Vorstellung wohl eine Pulldown Schaltung. Aber>> möchte mich hier absichern, welche Widerstände ich wo einsetzen soll>> usw. bevor mir da ein Pin durchbrennt.>> 4K7 bis 10K sind üblich.>> Georg P. schrieb:>> Der Controller soll also in der Lage sein, den OE pin der dauerhaft an>> Spannung hängt auf GND (LOW) zu setzen.>> Das ist ein Pull-Up wenn er OE mit Plus verbindet.
Ich kann mich also an diesen Schaltplan richten. (Nummer 1.3 in der
schaltung)
http://www.elektronik-kompendium.de/public/schaerer/bilder/pullr_01.gif
D.h
an die Basis des Transistors kommt der Ausgangspin des Arduino (über nen
10kOhm Widerstand der in der Zeichnung noch fehlt?)
und den OE Pin des LED Treibers schließe ich zwischen den Collector und
den (wieder 10kOhm Widerstand) in der Zeichnung?
soweit richtig?
@ Georg P. (georg123)
>Ich kann mich also an diesen Schaltplan richten. (Nummer 1.3 in der>schaltung)
Nimm 1.1, den Transistor brauchst du nicht. Der Taster entfällt, der Pin
bleibt so wie er ist an deinen Arduino angeschlossen.
Falk Brunner schrieb:> @ Georg P. (georg123)>>>Ich kann mich also an diesen Schaltplan richten. (Nummer 1.3 in der>>schaltung)>> Nimm 1.1, den Transistor brauchst du nicht. Der Taster entfällt, der Pin> bleibt so wie er ist an deinen Arduino angeschlossen.
Das Problem ist, dass ich den auf GND schalten muss damit der LED
Treiber aktiviert ist.
Der soll dauerhaft auf HIGH sein bis Arduino komplett an ist um den
Trnasistor zu öffnen und den PIN auf "LOW" zuschalten und die Kontrolle
zu übernehmen.
Daher die Transistor schaltung.
Wie soll ich allein mit dem Arduino den PIN auf GND schalten?
@ Georg P. (georg123)
>Das Problem ist, dass ich den auf GND schalten muss damit der LED>Treiber aktiviert ist.
Das ist kein Problem, das ist normal.
>Der soll dauerhaft auf HIGH sein bis Arduino komplett an ist um den>Trnasistor zu öffnen und den PIN auf "LOW" zuschalten und die Kontrolle>zu übernehmen.
Genau das wird passieren.
Arduino ist im Rest, Booten, Programmierung -> IO Pin ist hochohmig
(Eingang) .> Widerstand ziegt das Pin (vom Arduino und vom TLC) auf
HIGH.
Arduion ist gestartet, IO Pin wurde auf Ausgang geschaltet und zieht nun
das Pin auf GND (und auch den Widerstand).
-> Alles super.
>Wie soll ich allein mit dem Arduino den PIN auf GND schalten?
Indem man den Ausgang einfach auf 0 schaltet? Wie jeden anderen Ausgang
auch. Sachen gibts.
Ah ok, ich bin mit der genauen Funktionsweise der Arduino PIN´s noch
nicht vertraut.
d.h. ich kann an den PIN die 5V ohne jeglichen Schutz anschliessen? Der
diese dann im Betrieb auf GND setzen kann?
Wie ist es eigentlich wenn ich mit einem digitalem Pin ledliglich
überwachen möchte ob Spannung anliegt oder nicht?
Ausgang auch direkt anschließen?
http://arduino.cc/en/Tutorial/DigitalPins
Das letztere laut dieser Seite schon, da standardmäßig hochohmiger
Input.
Sofern der aber auf "output" (LOW) schaltet könnten die 5V an dem PIN
fatal enden?
Hab jetzt die Transistorschaltung gebastelt, funktioniert OK, bin mir
nur nicht wegen den Widerstandswerten sicher, bei einem BC337 ?
@ Georg P. (georg123)
>Ah ok, ich bin mit der genauen Funktionsweise der Arduino PIN´s noch>nicht vertraut.
Scheint so.
>d.h. ich kann an den PIN die 5V ohne jeglichen Schutz anschliessen?
Wenn er als Eingang konfiguriert ist, kann man zwischen 0-VCC (hier
meist 5V) alles anlegen.
>Wie ist es eigentlich wenn ich mit einem digitalem Pin ledliglich>überwachen möchte ob Spannung anliegt oder nicht?
Das ist ein Eingang.
>Ausgang auch direkt anschließen?
Sicher.
>Sofern der aber auf "output" (LOW) schaltet könnten die 5V an dem PIN>fatal enden?
Sicher. Von aussen kommen 5V, der AVR will aber auf 0V ziehen. Das ist
nicht gut. Meist geht bei sowas ein IO-Pin kaputt, beim AVR sind die
aber erstaunlich robust.