Problem mit daisy chain mit TLC5940

Hallo,

so langsam bin ich am verzweifeln! :'(

Ich versuche mehrere TLC5940 LED-Treiber mit meinem Arduino Duemilanove (ATmega328p) zu verbinden. Als Programmierumgebung benutze ich die Arduino IDE 0018. Als Library nehme ich die (code.google.com/p/tlc5940arduino/) von acleone.

Mit nur einem TLC funktioniert alles wunderbar. Beim Versuch einen zweiten TLC anzuschließen tritt folgendes Problem auf:

  • Die LEDs am ersten TLC verhalten sich normal
  • Am zweiten TLC verhalten sich die ersten 3 Ports genau so wie die des ersten TLCs. Alle weiteren Ports sind geöffnet, dh. alle weiteren LEDs leuchten im Dauerbetrieb.

Als Testsketch verwende ich das "BasicUse" Beispiel aus der Library. Die Schaltung ist genauso aufgebaut wie dort beschrieben (mehrfach geprüft). NUM_TLCS in der tlc_config.h habe ich auf 2 gesetzt. Was ich jetzt allerdings nicht verstehe ist, dass man nach dem Ändern der tlc_config.h eine TLC5940.o Datei löschen soll. Diese Datei existiert bei mir gar nicht?! Ist das vielleicht mein Problem?

Was mach ich falsch? Bitte um schnelle Hilfe.

Danke Martin

Zu deinem Problem kann ich wenig beitragen, allerdings das hier:

Was ich jetzt allerdings nicht verstehe ist, dass man nach dem Ändern der tlc_config.h eine TLC5940.o Datei löschen soll. Diese Datei existiert bei mir gar nicht?! Ist das vielleicht mein Problem?

ist wohl eher ein Relikt aus älteren Arduino-Versionen. Da wurde die Library einmal compiliert, die dabei enstehende Datei war die "Library.o". Wollte man entwas an der Library ändern, musste man die .o-Datei löschen, damit der Compiler eben auch die Library aus den (mittlerweile veränderten) Quelldateien neu compiliert und nicht einfach die alte .o-Datei benutzt. Ist seit einigen Versionen soweit ich weiß aus der Welt geschafft und der Compiler bastelt jedesmal aus den Quelldateien eine aktuelle .o-Datei zusammen.

Danke für die Info!

Inzwischen konnte ich das Problem etwas weiter eingrenzen. Und zwar habe ich festgestellt, dass wenn ich den SIN-Pin des 2 TLCs ebenfalls direkt vom Arduino versorge, funktioniert die Schaltung insofern, dass beide TLCs das gleiche machen, was ja auch logisch ist. Nur wenn ich wieder den SIN von TLC 2 auf SOUT des ersten TLC lege, macht der TLC 2 wieder Mist.

Das beweist zumindest, dass die Schaltung soweit richtig ist. Offenbar versorgt der erste TLC den zweiten nicht mit den richtigen Daten. Leider habe ich kein Oszilloskop, sonst würde ich mir das Ausgangssignal des ersten TLCs mal genauer anschauen.

Ein Tausch der TLCs hat übrigens auch nichts gebracht.
Auch nicht gegen andere TLC 5940. Immer das selbe Spiel :frowning:

Mein Problem habe ich lösen können.

Ich hatte die ganze Zeit die Zahl der verwendeten TLCs in die falsche tlc_config.h eingetragen. Und zwar habe ich die tlc_config.h aus dem BasicUse Example Ordner angepasst, statt die aus dem arduino-0018\libraries\Tlc5940\ Ordner.

Blöder Anfängerfehler :frowning:

und wie hast du das den gemacht den ich habe so meine probs mit dem tlc ich habe 3 einen für rot einen für die grüne eine für blau

Ich habe ledigtlich dem Parameter "#define NUM_TLCS" die Anzahl der verwendeten ZLCs übergeben in der Datei tlc_config.h aus dem Ordner "c:\Program Files (x86)\arduinoSoftware-0018\libraries\Tlc5940\".

In Deinem Fall musst du "#define NUM_TLCS 3" eintragen.