Go Down

Topic: und noch ne Frage zum TLC5490 (Read 3003 times) previous topic - next topic

currymuetze

Möchte den gerne in der Setup initialisieren, in etwa so:
Code: [Select]
void setup()
{
 Serial.begin(9600);
 Tlc.init();
 for (int r=0; r<16; r++) {
 Tlc.clear();
Tlc.set(r, 1500);
    Tlc.update();
 }
}

Was passiert ist (nachgemessen) dass er ganz kurz die Spannung am Ausgang bzw den PWM Wert auf 1500 setzt, und dann wieder sofort zurück auf 0, und das für jeden Channel. Was muss ich ändern dass er den Wert zunächst behält?
Oder muss beim TLC durchgängig der jeweils aktuelle Wert in der Hauptprogrammschleife geupdated werden?
Hoffe auf Aufklärung

in den Examples steht dazu leider nix ausser
Quote
void setup()
{
  /* Call Tlc.init() to setup the tlc.
     You can optionally pass an initial PWM value (0 - 4095) for all channels.*/
  Tlc.init();
}


Gruß und Danke


spaceball

Hallo,
probier mal:
Code: [Select]
void setup()
{
  Serial.begin(9600);
  Tlc.init();

  Tlc.clear();

  for (int r=0; r<16; r++) {
   Tlc.set(r, 1500);
   Tlc.update();
  }
}

currymuetze

So endlich Zeit gehabt und getestet.
Fazit: geht immer noch nicht, auch nicht in der Main loop, da fängts einfach nur an zu flimmern.
Hoffe hier ist jemand, der sich gut auskennt mit dem TLC und mich mal aufklären kann.
Gruß

uwefed

#3
Dec 26, 2011, 01:20 am Last Edit: Dec 26, 2011, 01:29 am by uwefed Reason: 1
Hallo currymuetze
Ich hab etwas Erfahrung mit dem TLC5490; Ich kann Dir aber nicht weiterhelfen da ich ihn zusammen mit einem A2983 im Multiplexbetrieb mit 6 x 5 RGB LEDs erfolgreich betreibe. Genau gesagt eine TIX-Uhr inspirierte Uhr http://www.tixledclock.com/ mit den Monome inspirierten Silikontasten von Sparkfun http://www.sparkfun.com/products/7835 .
Näheres und Bibiothek unter http://www.thebox.myzen.co.uk/Hardware/Mini_Monome.html und http://www.thebox.myzen.co.uk/Hardware/Mini_Monome_files/Arduino_Firmware.zip . Ich habe die Bibiothek auf meine Bedürfnisse umgeschrieben.
Meine Uhr ist noch im Projektstadium. Die Anzeige funktioniert, der Sketch hat noch nicht alle Funktionen die ich möchte, muß noch eine Möglichkeit finden einen Buzzer anzuschließen (die Ausgänge des Arduino sind bereits alle verbraucht) und das Gehäuße muß noch gemacht werden.

Der TLC5490 braucht, wenn wir die Datenübertragung außer acht lassen, 2 Takte für die PWM Funktion:
4096 Takte an GSCLK und dann einen Impuls an BLANK um den Zyklus wieder zu starten.
Die Daten für die PWM bzw wenn vorgesehen die DOT CORRECTION brauchen nur einmal übertragen werden und werden bei jedem PWM-Zyklus verwendet.

Dies alles sollte die Bibiothek übernehmen.

Wie versorgst Du die LEDs mit Strom? Welchen LED-Strom hast Du eingestellt (Widerstand an IREF)? Über die 5V des Arduinos? Hat Du eine externe Stromversorgung der LED versucht? Hast Du eine andere Bibiothek versucht?

Viel Grüße Uwe

Unten 2 Fotos: Uhr von vorne mit allen LED eingeschaltet und Platine mit Arduino NANO, TLC5490, A2983 und RTC-DS1307-Modul. Die roten Platinen sind die der Silikontasten.

uwefed

#4
Dec 26, 2011, 01:48 am Last Edit: Dec 26, 2011, 01:52 am by uwefed Reason: 1
Nochmal Deinen Kode angeschaut:
Code: [Select]
void setup()
{
 Serial.begin(9600);
 Tlc.init();                               //initialisiert die Bibiothek
 for (int r=0; r<16; r++) {          // Schleife von 0 bis 15
   Tlc.clear();                          // Löscht die Daten des Buffers
   Tlc.set(r, 1500);                   // setzt PWM Wert
   Tlc.update();                       // überträgt Buffer auf TLC
 }
}


Das Ergebnis ist, daß die Ausgänge 0 bis 14 einen bis wenige PWM -Zyklen machen und Ausgang 15 dauernd den PWM ausgibt.

Um alle Ausgänge auf 1500 zu setzen:
Code: [Select]
void setup()
{
 Tlc.init();                               //initialisiert die Bibiothek
 Tlc.clear();                            // Löscht die Daten des Buffers
 for (int r=0; r<16; r++) {         // Schleife von 0 bis 15    
   Tlc.set(r, 1500);                   // setzt PWM Wert
 }
 Tlc.update();                         // überträgt Buffer auf TLC
}

Aber das ist sehr ähnlich dem was Spaceball vorgeschlagen hat.    

lies mal:
http://alex.kathack.com/codes/tlc5940arduino/html_r014/index.html
http://alex.kathack.com/codes/tlc5940arduino/html_r014/group__CoreFunctions.html#g5e5acd62f0c91579694ed4cffd88bd76

danach müßte auch ein:
Code: [Select]
void setup()
{
 Tlc.init(1500);   //initialisiert die Bibiothek und setzt alle Kanäle auf 1500
 Tlc.update();     // überträgt Buffer auf TLC
}

genügen.

Grüße Uwe

currymuetze

Hi Uwe,

ich habe die schaltung ein wenig modifiziert um damit meine KSQs für die HP LEDs zu steuern.
Siehe auch hier:
http://arduino.cc/forum/index.php/topic,57342.msg415583.html#msg415583

Gruß
Thorsten

currymuetze



danach müßte auch ein:
Code: [Select]
void setup()
{
 Tlc.init(1500);   //initialisiert die Bibiothek und setzt alle Kanäle auf 1500
 Tlc.update();     // überträgt Buffer auf TLC
}

genügen.

Grüße Uwe


das funktioniert,vielen dank!

uwefed


currymuetze

Hi,
eine Frage hierzu habe ich noch:
Wenn ich hochdimme funktioniert das sehr gut, wenn ich bei jedem Dimmschritt nur 
Tlc.set(x, y);     
Tlc.update();
ausführe und den
Tlc.clear()
weglasse.
Ist das ok so?`Wann sollte man den Buffer des TLC komplett löschen?
Hintergrund ist der, dass mit clear lösche ich ja alle 16 KAnäle, bei jedem einzelnen Dimmschritt ändere ich aber nur einen Kanal. Funktionieren tut es so gut, mich interessiert nur wann und wofürman letztendlich wirklich den Buffer löschen muss.
Gruß

uwefed

Du löscht den Buffer wenn Du alle Kanäle auf null stellen willst. Wenn Du alle LEd löschen willst und 1 neues setzen willst ist löschen schneller als die eingeschaltenen Kanäle auf null zu stellen.
Grüße Uwe

mkl0815

Zum Thema TLC5490 hätte ich auch noch eine Frage. Wo bekommt man die Teile "günstig" in Deutschland oder wenigstens Europa gekauft? Ich hab bisher nur Ami-Shops gefunden die zwischen 8 und 9 Dollar pro Chip haben wollen plus mehr oder weniger saftiges Proto. Dazu kommen ja nochmal 19% Einfuhrsteuer.
Bei seeedstudio.com gibts das komplette RGB-Shield mit 3 TLC5490 und 16 RGB LEDs für 35 Dollar
http://www.seeedstudio.com/depot/rgb-led-shield-v14-kit-p-430.html?cPath=132_134
Was bei der Summe der Teile aus meiner Sicht wieder recht preiswert wäre.

Guten Rutsch ...
Mario.

sth77

Nennt ihn einfach TLC 5940, dann findet er sich leichter bei den gängigen händlern. ;) Segor hat das gute Stück für 6,60€ im Sortiment.
Mein verwaister Arduino-Blog: http://www.sth77.de/ - letzter Eintrag: Diamex-ISP in der irgendwann mal aktuellen Arduino-IDE 1.6.4

madworm

#12
Dec 30, 2011, 03:29 pm Last Edit: Dec 30, 2011, 03:30 pm by madworm Reason: 1
Bei mouser gibt es den 5940 als DIP fuer 2.78€ + steuer (ab 25 stueck). Als einzelstueck immernoch unter 4€. Lieferung ist ab 75€ bestellwert kostenlos und per bote. Bestellung als privatmensch geht problemlos.

uwefed

Elektronikteile kosten sehr unterschiedlich ob Du 1 oder 2 Stück im nächsten Laden oder beim Versebnder kaufst oder ob Du 1000 oder 10000 beim Produzenten nimmst.
Daher der Preis des Seeedstudio Shields.
Grüße Uwe

Go Up