16 LED Streifen mit SoftwarePWM dimmen

HallöÖöle,

ich will LED-Streifen mit Mosfets Dimmen, und zwar 16 Stück voneinander unabhängig. Schafft das ein Arduino 16MHz flimmerfrei?

Nur proforma: Ich würde es nach "BlinkWithoutDelay" machen, nicht dass hier an "delay" gedacht wird.

staivoup:
HallöÖöle,

ich will LED-Streifen mit Mosfets Dimmen, und zwar 16 Stück voneinander unabhängig. Schafft das ein Arduino 16MHz flimmerfrei?

Nur proforma: Ich würde es nach "BlinkWithoutDelay" machen, nicht dass hier an "delay" gedacht wird.

Das kommt ganz darauf an, was du unter "flimmern" verstehst, welchen Arduino du einsetzt und welche LED-Stripes du verwendest.
Dann kommt es noch darauf an, wie du den Sketch programmierst.

hi,

wenn es einfarbige LED-streifen sind, geht das mit einem UNO und der ShiftPWM-library.
bei mir sind's 26, als mosfets hab' ich IRLD024 genommen.

gruß stefan

Ich empfehle Dir Hardware PWM zu nehmen. Software PWM wird schnell kompliziert aus meiner Erfahrung :slight_smile:
Da Du 16Stk. steuern willst brauchst Du eine extension da selbst ein Mega2560 nicht ausreichend PWM onBoard hat.
Da empfiehlt sich z.B. ein TLC59711 mit 12x PWM oder gar ein TLC5947 mit 24PWM. Die haben dann gleich auch bis zu 16bit Auflösung.

Du kannst die Chips entweder selber auf Deiner Platine integrieren oder Du nimmst ein fertiges ExtensionBoard wie z.B. das hier: Adafruit 12-Channel 16-bit PWM LED Driver - SPI Interface [TLC59711] : ID 1455 : $7.50 : Adafruit Industries, Unique & fun DIY electronics and kits

Hallo,

das ist für jeden µC gar kein Problem. Du mußt "flimmerfrei" anders definieren. Ob die LEDs beim vorbeischauen oder so flimmern, hängt von der PWM Frequenz ab. 500Hz sollten es schon sein. Falls dich da nochwas stört, gehe auf 1kHz hoch. In dem Bereich sollte dann nichts mehr als flimmern wahrgenommen werden.

Wegen der Frage ob das der µC schafft. Das bezieht sich nur darauf wie schnell er die Ausgänge nacheinander bedienen kann. Also wie schnell das Programm durchlaufen wird. Hier gilt es dann unnötige Wartezeiten zu vermeiden. Das hängt davon ab was du dimmen möchtest. Wenn es nur eine Helligkeitsanpassung im Wohnzimmer ist, dann spielt das keine Rolle. Wer er nach Musik tanzen soll, dann wird es schon anspruchsvoller.

analogWrite() arbeitet standardmäßig mit 490Hz. Sollte eigentlich ausreichend sein.

Und dann kannste dich noch mit der Helligkeitsdimmung befassen. Die Helligkeitszwischenstufen (0...255) müssen angepaßt werden, damit es für das Auge linear erscheint. Daraus sinnvoll sind zum Bsp. 32 Zwischenwerte. Maximal sinnvoll sind 64, wenn einem das nochwas bringen sollte.

Es ist für einen Arbeitsraum. Schieberegister oder Portexpander wollte ich vermeiden, da es von der Anzahl der Ausgänge her nicht notwendig ist. Es handelt sich um einen Pro-Mini aus China.

Wenn ich mit der Frequenz hoch genug komme, mit SoftPWM ist alles gut.

Falls der Microcontroller noch viele andere Dinge zu tun hat, wirst du mit einem 16-Channel PWM-Treiber am I²C/SPI wahrscheinlich am einfachsten fahren. Z.B. der PCA9685, der kann 16 Kanäle mit bis zu 1500 Hz PWM ansteuern. Da gibt es auch einige Break-Out Boards, z.B. von Adafruit für 15 $.

Gruß,
Marv

Manuel__123456:
Da empfiehlt sich z.B. ein TLC59711 mit 12x PWM oder gar ein TLC5947 mit 24PWM. Die haben dann gleich auch bis zu 16bit Auflösung.

Nun mal angenommen ich würde die Teile verwenden... Die takten den Groundchannel, also kann ich die doch nicht "normal" wie hier: (http://www.kriwanek.de/arduino/aktoren/304-lasten-mit-power-mosfet-schalten.html) an den Mosfet klemmen.

Aber ich könnte doch den mosfet ganz weglassen und direkt mit dem Minus vom 12V Strip an den getakteten Kanal gehen. Die Leistung wird doch über den Spannungsabfall "verbrannt" oder? Der TLC-Controller wird dann mit 5V vom Arduino betrieben.

Es weiß glaub keiner, welche Last du pro Kanal brauchst. Bitte weitere Infos. Ansonsten stehen die Sachen wie immer auch im Datenblatt

Je Kanal ca. 1,5A.

Je Kanal ca. 1,5A.

Dann sind MosFET die richtige Wahl.
Auch ich rate dir zum PCA9685.

Aber ich könnte doch den mosfet ganz weglassen und direkt mit dem Minus vom 12V Strip an den getakteten Kanal gehen. Die Leistung wird doch über den Spannungsabfall "verbrannt" oder? Der TLC-Controller wird dann mit 5V vom Arduino betrieben.

Ich weiß es ist falsch, aber ich weiß nicht warum.

Nun mal angenommen ich würde die Teile verwenden... Die takten den Groundchannel, also kann ich die doch nicht "normal" wie hier: (http://www.kriwanek.de/arduino/aktoren/304-lasten-mit-power-mosfet-schalten.html) an den Mosfet klemmen.

Nochmal zum Mosfet hinter dem TLC59X. Ich weiß PCA9685 wäre besser von der Anzahl der Ausgänge, aber ich weiß wo ich ein Muster eines TLC59711 Boards (nicht von Adafruit) herbekomme.

Kann ich einfach Gate zwischen VCC (5V) und dem (PWM) getakteten Ground klemmen? Ich muß aber noch das GND vom TLC59711 mit dem GND vom 12V Netzteil verbinden und damit wäre doch das Gate immer Low, da die Taktung keinen Effekt mehr hat. Mir ist mein Logikfehler noch nicht klar. Edit: Ich meine mit einem N-Type Mosfet.

Ich habe mal ein Bild angehängt. Funktioniert das so? Der Pin "OUT5" ist GND und wird getaktet. VCC liefert 5V.

Dir geht es also nicht darum mehr Strom zu haben, sondern mehr Spannung. Dafür gibt es eine AppNote:

Ist für den TLC5940, aber sollte hier eigentlich auch gehen.

Das ist nicht so einfach wie es aussieht. Die Idee dabei ist dass die parasitäre Kapazität der Ausgänge so hoch ist, dass beim Ausschalten Vcc - Vout unterhalb der Schwellenspannung des Transistors ist (da das Bezugs-Potential des Gates nicht mehr Masse ist!). Es kann also sein dass es mit bestimmten Transistoren nicht funktioniert.

Bei deiner Schaltung passt vor allem eine Sache nicht:
Du hast das IC nicht mehr als Konstantstromquelle für die LEDs. Du brauchst also einen Vorwiderstand an den LEDs! Und aus den 100 Ohm sollte man wahrscheinlich mindestens 1k machen.

Bei der Schaltung aus der AppNote ist der Strom durch die LEDs dagegen konstant

Ich weiß PCA9685 wäre besser von der Anzahl der Ausgänge,

Nicht nur das...
Sondern, er hat auch noch aktivierbare MOSFET Treiber im Bauch.
Und man kann die Schaltflanken verteilen.
Das mindert Stromspitzen und damit Störungen.

Die Konstantstrom Ausgänge des TLC59711 sind zwar voll toll, aber für deine Zwecke eher hinderlich.

Tagchen,

die LEDs haben natürlich Vorwiderstände auf dem Strip, es sollen ca 75LEDs (1,5A) mit einem Mosfet geschaltet werden.

Das PDF ist interessant. Istz das nicht im Grunde das was ich oben Schrieb, mit dem -Ausgang der LEDs direkt an den OUT des TLCs gehen? Der Mosfet leitet doch auch nur durch.

Warum sollte aus dem Widerstand min 1k werden? Fällt dadurch nicht die Spannung zusehr ab?

staivoup:
Das PDF ist interessant. Istz das nicht im Grunde das was ich oben Schrieb, mit dem -Ausgang der LEDs direkt an den OUT des TLCs gehen? Der Mosfet leitet doch auch nur durch.

Deine Schaltung ist anders. Du ziehst einfach das Gate mit einem Pullup auf High

Bei der Schaltung aus der Appnote werden praktisch der externe und der interne Transistor in Reihe geschaltet. Damit arbeitet er noch als Konstantstromquelle

Wobei wenn du einen Strip mit Vorwiderständen wäre deine Variante vielleicht sogar besser. Aber das IC ist einfach falsch dafür. Den PCA9685 gibt es auch als fertiges Breakout Board

Warum sollte aus dem Widerstand min 1k werden? Fällt dadurch nicht die Spannung zusehr ab?

Es geht um den Strom der durch den Widerstand fließt. Andererseits wird der eh auch wieder durch den eingestellten Strom am IC bestimmt

Wir brauchen nicht über PCA9685 sprechen, solange ich nicht weiß warum TLC59711 falsch ist. Ich bekomme ein Board mit TLC59711 kostenlos.

Außer das die Programmierung invertiert ist, sehe ich jetzt keinen großen Nachteil. Wo sehe ich den Showstopper nicht?

Viel Erfolg, auf deinen Wegen...
:wink:

Hmm... ich möchte nicht dass es so rüberkommt als wäre ich etwas ignorant. Ich verstehe es nur nicht.