Arduino + TLC5940

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

Hey,

boa, ich steh total auf em schlauch ...

Die +5V nehem ich vom Arduino ausgang, (stimmt das)
gebe die, mit 2kOhm auf den Transistor,
gebe dann den Transistor auf den TLC Channel,
nehme dann 12V auf die LED Strip und gebe deren "Ausgang" ebenfalls auf den Transistor.
Dann bringe ich die GNDs zusammen (wo?)

Fließen dann nicht die 12V und xxA von den LEDs durch den TLC? ist das nicht genau falsch?

oder hab ich (mal wieder) nen denkfehler?

gruß

hi,

natürlich hast Du einen denkfehler. Du denkst nämlich, daß leute wie wir jemals einen elektroniker verstehen können. glaub mir, das geht nicht. sie sind nett, sie meinens gut, aber sie reden in einer fremdsprache.

mußt Du am Ausgang einen Widerstand von ca 2kOhm auf +5V schalten

verstehe ich auch nicht. wird der strom für die steuerung des transistors nicht schon durch den widerstand am tlc geregelt?
und völlig durcheinander komm ich mit

dort geht man vom tlc in den emitter des transistors. ich dachte, man geht in die basis, um einen transistor zu steuern...

gruß stefan

Nabend,

ja bin nur ein IT Systemelektroniker! :slight_smile:

Aber alles wird gut! :slight_smile:

Kann uns jemand erleuchten?

danke!

Hallo Stefan hallo daMeier
Ich bin kein Elektroniker, ich bin ein Elektrotechniker mit Hang zur Neugier und zur Elektronik :wink: :wink:

Ist um die Maximalspannung des Ausgangs zu erhöhen (limit des TLC ist 17V) und so mehr LED in Reihe schalten zu können. Der Strom fließt immer in den TLC hinein.

Der Ausgang des TLC ist ein open collektor und hält den Strom konstant. Der Wert wird mit dem Widerstand an Pin Iref eingestellt.

Der TLC kann max 120mA bringen.

Ich meinte das mit dem Transistor so:

alternativ mit einem PNP Transistor:

oder so wobei der L317 als Konstantstromquelle verwendet wird und durch einen Widerstand ersetzt werden kann. Bei einer 12V LED Strips sind die Widerstände eingebaut und es braucht keine zusätzliche Strombegrenzung. Den 10kOhm Widerstand würde ich aber kleiner machen.

Grüße Uwe

Um eine Transistor zu treiben ist der PCA9685 besser geeignet da dieser Totem Pole Ausgänge besitzt (schaltet auf 0 und +5V).
Ansonsten ist er ähnlich. Ansteuerung über I2C.
http://www.nxp.com/documents/data_sheet/PCA9685.pdf

Der PCA ist nicht im DIL-Gehäuse erhältlich.
Eine Platine findest Du unter:
Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface [PCA9685] : ID 815 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits in Deutschland: Watterott electronic
Bibliothek:
https://github.com/kasperskaarhoj/PCA9685-Arduino-Library
Grüße Uwe

Hallo,

Ich verstehe es nicht. Aber nun gut. :slight_smile:

Hab es aber mal nachgebaut und getestet, es geht leider nicht.

Ich habe +5V mit 8200 Ohm (du meintest ja ich soll den 10k kleiner machen und 8200 hatte ich noch) mit einem Channel vom TLC.

Dann habe ich +12V mit der LED Stripe verbunden und (zum Test) nur den GND der Blauen LED an de Collektor des Transistor.

Den Emitter vom Transistor habe ich mit dem GND der 12V verbunden, soweit auch alles klar und normal. Was die Ansteuerung des Transistor betrifft.

Aber normalerweise muss die Basis des Transistor doch mit + bedient werden und alles Strom fließt dann über den Emitter ab.

In diesem fall habe ich aber wie in der Zeichnung die Basis mit dem "buddig" am TLC Channel verbunden.

Fazit: geht nitt!

Aus meinem verständnis heraus kann's ja auch nicht gehen.

Achja, der Transistor ist ein BD243 (NPN).

Der PCA9685 schaltet also +5V dann kann ich mit dem also ohne Probleme die Basis des Transistors ansteuern.

PLatine ist nich wichtig, würde mir bei RS Elektronik den Chip bestellen. Kann ich hiervon auch 2 oder 3 am Arduino anschließen wie es beim TLC möglich ist. Und hat jemand ein Bildmoder eine Zuordnung, welche Arduino Pins ich mit welchen PCA Pins verbinden muss?

Danke für eure Hilfe.

Was ich selbst schon geschafft habe, ist den Arduino Mega durch einen Nano zu ersetzen! :slight_smile:

Gruß

Hast Du den minus-Pol des 12V Netzteils mit der Masse des Arduino zusammengeschlossen?

Der BD243 ist keine gute Wahl. Er hat, wie alle Leistungstransistoren, eine relativ kleine Stromverstärkung von typischerweise 60 bis 100 je nach Collektor-Strom.
Bei 1A LED-Strippe sind das mindestens ca 16,7mA (hfe =60) Basistrom damit der Transistor in Sättigung geht. Bei 5V sind das maximal ein Widerstand von ca 250 Ohm. Also sind 8200 Ohm viel zu viel. Außerdem mußt Du den Konstantstrom des TLC auf ca 20mA stellen.

Lösung: nimm einen TIP120. Das ist ein Darlingtontransistor mit hfe von 1000 und durch die doppelte Diodenstrecke zwischen Basis und Emitter ist er auch leichter abzuschalten.

Grüße Uwe

Hallo Uwe,

Verstehe nur noch Bahnhof! :wink:

Das übersteigt wohl doch meine Kenntnisse! Habe Gehoft, es wäre einfacher.

Was sagst du zu dem PCA9685, würde der meine Probleme vereinfachen?

Kann man dem TLC nicht einfach + ausgeben lassen? :slight_smile:

Ich versteh einfach nicht, wie - Ausgabe vom TLC die Basis ansteuern kann.

daMeier:
Hallo Uwe,

Verstehe nur noch Bahnhof! :wink:
Das übersteigt wohl doch meine Kenntnisse! Habe Gehoft, es wäre einfacher.
Was sagst du zu dem PCA9685, würde der meine Probleme vereinfachen?

Nein, nicht wirklich significant.
Er verbraucht weniger Strom und da er den Ausgang auf HGH schalten kann brauchst Du keinen Pullupwiderstand der Strom verbraucht wenn die LED ausgeschaltet sein sollen.

daMeier:
Kann man dem TLC nicht einfach + ausgeben lassen? :slight_smile:

Nein.
Der TLC kann nur einen gewissen Strom auf Masse fließen lassen. ZB so wie ein ULN2803 nur mit zusätzlicher Strombegrenzung = Konstantstromsenke.

Also kann der TLC kein HIGH-Signal ausgeben!!!

daMeier:
Ich versteh einfach nicht, wie - Ausgabe vom TLC die Basis ansteuern kann.

Das HIGH-Signal muß vom Pullupwiderstand kommen.
Dieser muß genügend Strom liefern damit der Transsitor durchschaltet.

Grüße Uwe

Ok, versuche ich mal mein Verständnis Glück wenn ich es verstehe kann ich es vielleicht besser umsetzen.

Solange der TLC nicht schaltet, wird der 5V Strom vom 10k Ohm Widerstand vernichtet?

Aber was passiert wenn der TLC schaltet, dann fließt der Strom doch auch durch den Widerstand in den TLC.

Oder?

Wenn der TLC-Ausgang ausgeschaltet ist, fließt über den 10kOhm ein Strom in die Basis des NPN Transitors hinein und der Transistor leitet.
Wenn der TLC-Ausgang eingeschaltet ist fließt ein Strom über den 10kOhm Widerstand. Die Spannung am Ausgang ist so klein, daß kein Strom in die Basis fließt und so der Transistor sperrt und kein Strom über die LED-Stripe fließt. Die Spannung am ausgang muß kleiner als 0,7V (1,4V bei Darlington Transistoren) sein damit der Transistor sperrt.

Grüße Uwe

Ok, das verstehe ich, um eine ledstrip zu schalten muss ich den TLC quasi ausschalten, also umgekehrt wie Normal.damit der Strom dann fließt und den Transistor schaltet?

daMeier:
Ok, das verstehe ich, um eine ledstrip zu schalten muss ich den TLC quasi ausschalten, also umgekehrt wie Normal.damit der Strom dann fließt und den Transistor schaltet?

genau
Der Unterschied zum PCA9685 ist, daß beim TLC immer ein Strom fließt, egal ob der Transistor schaltet (Strom in die Basis fließt) oder nicht.

Beim PCA9685 fließt nur bei eingeschalteten Transistor ein Strom in die Basis.

Im Endeffekt verbraucht der TLC auf die Zeit gerechnet mehr Leistung weil auch bei ausgeschalteten LED Strom durch seine Ausgänge fließt und das Netzteil diesen Strom liefern muß.

Viele Grüße Uwe

Ok, beim programmieren später wäre dann 0 = volle Intensität und 4095 = Aus.

Nun zu den Transistoren und den Widerständen. Da ich noch nicht weiß, wie lange die Strips werden, weiß ich noch nicht wieviele Ampere fließen werden, den Tip120 gibt's wohl nicht mehr, als Alternative wird der TIP121 angeboten, da der dauerhaft 5A sollte der ausreichen.

Wie berechne ich, welchen wiederstand der TLC Brauch und welchen der pulldown?

Dann hab ich es ja schon, oder?

Der Ausgangstrom des TLC kann nicht kleiner als 5mA eingestellt werden da ansonsten der Strom instabil wird (siehe Datenblatt http://www.ti.com/lit/ds/symlink/tlc5940.pdf Seite 14 unten).
Darum berechnest Du den Widerstand an Iref daß 5mA fließen.

Der TIP121 geht auch gut. Dieser Transistor hat eine Verstärkung von 1000.
Damit der TIP121 sperrt muß die spannnung an der basis kleiner als 1,4V sein. Den Pullupwiderstand am Außgnag berechnest Du so daß bei 5mA mindestens 4V abfallen (3,6V + etwas Sicherheit) also mindestens 800 Ohm. Je anch LEDStrom (Länge der LED-Streifen) ist de minimale Bassistrom aus ILED /hfe = ILED /1000. Bei 1A sind das 1mA.
also kann der Pullupwiderstand maximal 5V-1,4V/1mA = 3,56kOHM sein. ( 5V Versorgngpannung und 1,4V Basis-Emitter Diodenstrecke). Bei größeren LED-Strom muß der Widerstand kleiner sein.

Also mußt Du den Pullupwiderstand zwischen 800 und 3,5kOhm wählen. ZB 2,2 oder 1,5Kohm.

Alles klar?

Grüße Uwe

Alles klar, nicht wirklich, aber nun gut. :slight_smile:

Die Berechnung versteh ich leider nicht, aber da fehlt es wahrscheinlich an wissen + Verständnis für diese wissen.

So wie ich dich versteh muss ich beim TLC also ein 800 Ohm Widerstand verbauen und zur Basis einen 2k Ohm z.B. Wenn ich mehr als 1A über den Transistor schicken möchte, kann es sein das ich diesen irgendwann kleiner als 2k machen muss.

Oder ist es so wie ich beim 10. lesen jetzt gedacht habe, das ich nur einen widerstand zwischen 800 und 3,56k also z.B. 2k beim +5 brauche, weil wenn der TLC schaltet Fließt +5 durch den Widerstand durch den TLC weg und wenn er nicht schaltet, fließt der Strom durch den Widerstand in den Transistor?

Tendiere zur 2ten Theorie! :slight_smile: