Arduino + TLC5940

Hallo,

Ich Versuch seit Tagen mit einem Arduino UNO, Mega und Nano mittels eines TLC5940 mehrere LEDs zu steuern.

In meinem Testaufbau, habe ich erstmal nur 1 LED angeschlossen. Einmal geht das ganze UNO Board aus, sobald ich 5v einstecke, einmal flackert die 1 LED wie Wild, sobald der USB Anschluss mit dem Laptop verbunden ist, wenn ich den USB Anschluss herausziehe, und den Arduino mit Netzteil betreibe, leuchtet die LED mit voller Intensität.

Bin wirklich verzweifelt, denke ich habe alles mehrfach, richtig umgebaut.

Im Anhang 2 Fotos, von der Mega Schaltung. Ist sicher nicht viel zu sehen, aber vielleicht habt ihr noch eine Idee, nen Tipp, oder nen Link der mir weiterhelfen kann.

Danke, Gruß daMeier

Welchen Wert hat der grüne Widerstand?
Grüße Uwe

Hallo,

wurde als 2000 oder 2k von mir gekauft, darauf steht 2k2 5% 5W

das ist richtig.
Ich weiß dann nicht was der Fehler sein könnte. Kannst DU ein Foto machen wo man die Verdratung sieht (wo die einzelnen Kabel am TLC hingehen)
Grüße Uwe

hallo,

ja aber leider erste heute Nachmittag, fahr jetzt Arbeiten, melde mich dann wieder.

gruß und danke!

Hey,

vieleicht liegt es aber auch an meinem Code.

Wie müssten den ein gaaanz einfacher Code der nur bsp. Channel 3 auf volle helligkeitsstufe einschaltet aussehn?

Habe leider meinen Test Code nicht hier sonst würde ich ihn mal dazu posten.

gruß

Der Code kann keinen Kurzschluß erzeugen. Da liegt sicher eine Fehlbeschaltung vor.
grüße Uwe

Hallo,

Stimmt, aber bei der Mega Variante vom Bild war es so, dass alles unkontrolliert geblinkt hat, wenn USB eingesteckt war und wenn nur Strom eingesteckt war, hat die LED Vollgas geleuchtet.

hi,

hier eine sehr gute anleitung im playground.

http://arduino.cc/playground/Learning/TLC5940

ausprobiert, funktioniert.

gruß stefan

Servus,

falsche Taste, jetzt darf ich alles wieder Tippen.

Ich habe folgenden Aufbau noch einmal gemacht.

Arduino Mega 2560
TLC5940
1 Blaue LED
12V Stromversorgung

Ich habe den Arduino Mega wie in Bild 1 mit dem TLC und den TLC mit der LED verbunden. Außerdem habe ich wie in Bild 2 die anderen Anschlüsse des Megas im vergleich zum UNO verwendet.

Ich habe alles neu zusammen gesteckt und 5 mal Kontrolliert, es sollte so also stimmen.

Als "Programm Code" habe ich folgendes auf den Arduino geladen.

Die LED blinkt ab und an, mehr nicht.

Liegt es an meiner Schaltung oder an meinem Code? Ich tendiere zum Code, ich weiß er ist sehr spartanisch, aber ich möchte gerade einfach nur verstehen wie es geht und was die befehle sind.

Vielen dank für eure Hilfe.


#include "Tlc5940.h"

void setup()
{
Tlc.init();
}

void loop()
{
Tlc.clear();
Tlc.setAll(4095);
Tlc.update();
delay(100000);
}


@ Eisebaer

An dieser Anleitung hatte ich mich orientier, einziger Unterschied, ich habe nur 1 LED verbaut,

hi,

wenn ich das richtig sehe, hast Du die analogen pins (am foto links) genommen. Du mußt aber die PWM-pins mit der gleichen nummer auf der rechten seite nehmen, wenn ich mich recht erinnere. also 9, 11, 12 mit PWM.

gruß stefan

Hey,

suuper! das ist mir garnicht aufgefallen! hab ich gleich mal geändert und den Code habe ich wie folgt geändert.

Was sagst du/ihr zu dem Code? Es passiert so garnichts, eben ging wenigstens nach einer ewigkeit die LED an, jetzt passiert garnichts. Habe ich irgendeinen denkfehler im Code noch?


#include "Tlc5940.h"

void setup()
{
Tlc.init();
}

void loop()
{
Tlc.clear();
Tlc.setAll(4095);
delay(1000);
Tlc.setAll(0);
delay(1000);
Tlc.update();
}


Hi,
also damit Daten an den TLC gesendet werden muss die update Funktion aufgerufen werden. sonst läuft das nur intern im Arduino.

#include "Tlc5940.h"
 
void setup()
{
  Tlc.init();
}
 
void loop()
{
  Tlc.clear();
  Tlc.setAll(4095);
  Tlc.update();
  delay(1000);
  Tlc.setAll(0);
  Tlc.update();
  delay(1000);
}

Ahhhh......

Ich muss also nach jedem Befehl Tlc.update eingeben, dachte nur einmal am Schluss, was ein Aufwand zum Programmieren.

Aber jetzt geht's, Super, danke! Manchmal ist man einfach blind vor Verzweiflung!

Jetzt noch 2 Fragen.

  • die LED Intensität wird von 0 - 4095 eingestellt. (Ist das richtig und fix?)
  • kann man das irgendwie in RGB Werte umrechnen um Farben aus der RGB Farbpalette mit RGB LEDs zu mischen?

Gruß

Jetzt noch 2 Fragen.

  • die LED Intensität wird von 0 - 4095 eingestellt. (Ist das richtig und fix?)
  • kann man das irgendwie in RGB Werte umrechnen um Farben aus der RGB Farbpalette mit RGB LEDs zu mischen?

Gruß

-Ja

  • annäherungsgemäß: Farbwert pro Farbe * 16. ( diese Rechnung beachtet nicht unterschiede in der Farbe der einzelnen Grundfarben)

Grüße Uwe

Z.B.:

Blue = map(ColorValue, 0, 255, 0, 4095);

Wenn jeder Wert der RGB-Palette durch ein Byte dargestellt wird, also Zahlen von 1 - 255 anehmen kann dann wie im Beispiel oben.

http://arduino.cc/en/Reference/Map

So, jetzt wo das endlich läuft, zum nächsten ausbauschritt:

ich möchte mehrere LED Strips, teilweise recht lange, so getrennt steuern. Bin mir nicht sicher, was der TLC5940 an Strom verträgt, aber denke mit 1A dürfte er überlastet sein?

Also würde ich gerne mit einer Transisotrschaltung arbeiten.

Ich habe schon Arduino PWM ausgänge mit Transistor genutzt um LED Strips zu steuern, das hat geklappt. Aber der Arduino gibt mir ja +5V die dann den Transisotr auf GND schalten und auch das +12V der LED Strips auf GND legen. (komisch ausgedrückt, aber ich hoffe ihr versteht das).

Der TLC5940 schaltet aber wenn ich das richtig verstehe doch -5V quasi. also genau anders herum als der Arduino.

Welchen Transistor TYP brauche ich dann NPN oder PNP?
Geht das überhaupt so, wie ich es mir grade vorstelle?
Der Transisot benötigt normalerweise ja auch einen "Vorwiderstand" damit nicht zu viel Spannung vom Arduino gezogen wird. Das blockt der TLC5940 aber doch schon mit seinem Widerstand, ja?

gruß

hi,

Ich muss also nach jedem Befehl Tlc.update eingeben, dachte nur einmal am Schluss, was ein Aufwand zum Programmieren.

...ist in die falsche richtung gedacht. Du mußt es weder nach jedem befehl(set, setAll...) eingeben, noch nur eimal am schluß, sondern wenn Du willst, daß alle änderungen, die Du gemacht hast, tatsächlich am tlc gesetzt werden.
das scheint nur in Deinem beispiel aufwendig, weil Du ja nur einen kanal benutzt, aber stell Dir vor, Du verwendest achzig kanäle. so wie ein schieberegister funktioniert, müssen IMMER ALLE kanäle auf einmal gesetzt werden, auch wenn sie sich nicht verändern.

gruß stefan

daMeier:
So, jetzt wo das endlich läuft, zum nächsten ausbauschritt:

ich möchte mehrere LED Strips, teilweise recht lange, so getrennt steuern. Bin mir nicht sicher, was der TLC5940 an Strom verträgt, aber denke mit 1A dürfte er überlastet sein?

Also würde ich gerne mit einer Transisotrschaltung arbeiten.

Ich habe schon Arduino PWM ausgänge mit Transistor genutzt um LED Strips zu steuern, das hat geklappt. Aber der Arduino gibt mir ja +5V die dann den Transisotr auf GND schalten und auch das +12V der LED Strips auf GND legen. (komisch ausgedrückt, aber ich hoffe ihr versteht das).

Der TLC5940 schaltet aber wenn ich das richtig verstehe doch -5V quasi. also genau anders herum als der Arduino.

Welchen Transistor TYP brauche ich dann NPN oder PNP?
Geht das überhaupt so, wie ich es mir grade vorstelle?
Der Transisot benötigt normalerweise ja auch einen "Vorwiderstand" damit nicht zu viel Spannung vom Arduino gezogen wird. Das blockt der TLC5940 aber doch schon mit seinem Widerstand, ja?

gruß

Die Ausgänge des TLC sind Konstantstromsenken (sie halten den Strom der von +Pol über die LED in den Ausgang gegen Masse fließt).

Damit Du einen Transistor ansteuern kannst mußt Du am Ausgang einen Widerstand von ca 2kOhm auf +5V schalten und die Basis des NPN Transistors auf den Ausgang des TLC. Den Emittor auf Masse und - Pol der LED-Strips auf den Kollektor. Den Pluspol des Strips auf + Pol der Spannungsversorgung. Die LED konnen mit 12 V versorgt werden, die Masse müssen zusammengeschaltet werden.

Grüße Uwe