TLC5940 --> PT4115

Hallo,

ich versuche schon seit einiger Zeit mehre (9 ST) PT4115 (KSQ von DX) per TLC5940 mit meinem Arduino und PWM zu Dimmen.
Problem ist wohl, dass der TLC5940 über eine interne KSQ nach GND schaltet.
Bis jetzt habe ich es wie folgt versucht:
270 Ohm Widerstände, die vom Ausgang des tlc5940 auf 5v geschaltet sind.
Vor dem Widerstand ist dann der DIM Eingang der KSQ bzw. dem PT4115.

Nun ist das Problem, dass die an der KSQ angeschlossenen High Power LEDs nur mit ca 60-70% ihrer Leistung laufen.

Eigentlich will ich ja nur mehrere (10-15 St) KSQ / PT4115 per PWM mittels Arduino dimmen.

Wie bekomme ich das Problem elegant gelöst?

Mfg
maestrox

Der TLC5940 hat kein selbstständiges PWM sonden muß nach einem PWM Zyklus vom Controller wieder gestartet werden (Impuls am BLANK und dann 4096 Impulse am GSCLK) Wenn nun die Ansteuerung nicht gut programmiert ist dann kann es zwischen den PWM Zyklen Pausen geben während der die Ausgänge ausgeschaltet (HIGH) sind. Das Verfälscht das PWM Verhältnis.
Lösungsmöglichkeit:
benutze den TLC5947 u: Adafruit 24-Channel 12-bit PWM LED Driver - SPI Interface [TLC5947] : ID 1429 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits der läuft autonom.
Grüße Uwe

Hallo uwefed,

danke für die schnelle Antwort. Ich glaube nicht mal, dass es an der Ansteuerung liegt sonden eher daran, dass ich die Ausgänge falsch beschallte. Bis zu den besagten 70% läuft es ja soweit einwandfrei. Zudem habe ich ja schon den tlc5940 daher würde ich ihn auch gerne nutzen :wink:

Vielleicht sollte ich mal eine Zeichnung der Schaltung zur Verfügung stellen?

Mfg

Du müßtest mal einen Ausgang mit den Oszilloskop ansegen.

Ja, Schaltung, Quelle der Bibliothek und Sketch könnten vieleicht etwas helfen.

Grüße Uwe

Hallo,

anbei schon mal die verwendete Schaltung.
Die verwendete KSQ ist so eine hier.

Grundsätzlich steuere ich den 5940 wie folgt an:

#include "Tlc5940.h"
int rot=0;
int gruen=1;
int blau=2;

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

void loop()
{
  Tlc.set(rot,4095); 
  Tlc.set(gruen,2000);
  Tlc.set(blau,1000);
  delay(500);
  Tlc.update();  
}

Folgendes habe ich festgestellt. Wenn ich die KSQ direkt per Arduino per PWM versorge, muss die KSQ ja eine gemeinsame Masse mit dem Arduino haben. Soweit klappt es ja dann auch.
Wenn ich jedoch versuche die KSQ per 5940 zu dimmen, klappt es mit der gemeinsamen Masse sogut wie garnicht.

Falls noch Infos fehlen werde ich sie natürlich nachreichen.

mfg
maestrox

Hallo,

also ich habe es heute mal mit einem 2,2kOhm Widerstand am Ausgang des TLCs versucht.
Also am Ausgang des TLCs liegt der DIM der KSQ und danach der 2,2kOhm gegen 5V vom Arduino.

Jedoch bekomme ich max ~ 4,2 V am DIM Eingang der KSQ und somit nicht die volle Leistung an der LED.

Irgendwie deprimierend... =(

mfg

Wie bereits gesagt der TLC5940 ist nicht ideal für die Ansteuerung von KSQ. Miß mit einem Osziloskop und Du wirst sehen daß da Pausen zwischen den PWM Blöcken sind, die Du nicht wegbekommst.
Benutze einen anderen PWM Kontroller.
Grüße Uwe

Hi,
ich nutze auch den TLC5940 für die Ansteuerung einer KSQ. Klappt einwandfrei. Mag sein, dass man mit einem Oszilloskop Pausen messen kann, aber so lange das für mein Auge ausreicht, müsste das doch ok sein oder? Technisch sollte das ja keine Probleme mit sich bringen.
Ich habe mein TLC analog dem Adafruit Board geschaltet, so dass ich immer 5V (leider nur mit dem Multimeter) messe.
Oder kann es sein, dass ich auch nicht auf voller Leistung fahre da ein Multimeter ja nun keinen zuverlässlichen Messwert ergibt.

Ich denke für mein nächstes Lampenprojekt werde ich mir diesen IC anschaffen:

Dadurch dass er I2C nutzt, kann man wenigstens die SPI Schnittstelle für ein EthernetBoard nutzen.
Außerdem ist auch die Ansteuerung besser, zumindest liest es sich so bei Adafruit:

It's an i2c-controlled PWM driver with a built in clock. That means that, unlike the TLC5940 family, you do not need to continuously send it signal tying up your microcontroller, its completely free running!

Außerdem kann man hier auch die gewünschte PWM Frequenz einstellen und so auch ein Netzteilfiepen abstellen. Habe leider immer noch ein fiepen, bei bestimmten PWM Werten.

VG
Thorsten

Der PCA9685 wie currymuetze vorschlägt ist sicher besser als der TLC.
Grüße Uwe

@currymuetze

vielleicht kannst du ja mal beschreiben, wie du deine KSQ per TLC5940 ansteuerst?

Falls es alles nichts bringt werde ich wohl auf einen anderen Baustein wechseln müssen, aber man soll
ja nichts unversucht lassen :slight_smile:

Im Grunde genau, wie du:

void setLight() {
  for (int i=0; i<16; i++) {
    Tlc.set(LED[i], valueLight[i]);
    Tlc.update();
  }
}

Allerdings verstehe ich nicht, wieso du zwischen set und update ein delay eingebaut hast?

Zur Schaltung selbst:
Zum einen habe ich den Widerstand bei iREF auf 2.2k gesetzt. (ist glaub ich sonst 10K)
=> Modifizeir den mal da ich denke dass dadurch die max Spannung minimiert wird.
Zum anderen habe ich jeden AUsgang mit einem 2.2K Widerstand auf 5V gezogen und den Ausgang selbst dann mit dem PlusPol der KSQ verbunden (und GND der KSQ dann mit GND des Arduinos).
Siehe hier: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/BreakoutBoards/TLC5940-Breakout-v12.pdf

Dann sollte eigentlich alles klappen.

VG

Hallo,

also ich habe mein iREF auf 2k gesetzt.
Die Ausgänge ziehe ich auch jeweils mit einem 2k bzw. 2.2k Widerstand auf 5V.
Jedoch hat meine KSQ ja einen direkten DIM Eingang und somit schließe ich diesen dann direkt an den
Ausgang selbst. (siehe Anhang)

ksq_pwm.jpg