LED-Strips mit 74HC595 dimmen... Wie?

Hallo!

Als dekorative Beleuchtung wollte ich LED-Strips hinterm Sofa anbringen. Das ganze soll über den Arduino gesteuert werden. Die LED-Strips bestehen aus parallelgeschalteten Abschnitten in denen immer 3 RGB-LEDS mit Vorwiderstand für 12V in Reihe geschaltet werden. Laut Datenblatt sollen die LEDs mit 20mA betrieben werden, ob das wirklich der Fall ist konnte ich leider noch nicht nachmessen. Auf alle Fälle macht das schonmal 20mA/10cm pro Farbe. Für den Abschnitt, der hinter dem Sofa liegt macht das dann schon 320mA pro Farbe, die per PWM gesteuert werden wollen, also schon einiges ;)

Für die Helligkeitssteuerung wollte ich die ShiftPWM Bibliothek mit den 74HC595 Schieberegistern verwenden.

So weit zu der Planung die bereits steht :D

Nun zu den Problemen:

1. In einem kleinen Testaufbau kam es mir so vor, als ob die LEDs bei 50Hz recht stark flackern (Ich habe zum Testen ein paar ganz normale weiße angeschlossen und bin ein Paar PWM-Stufen durchgegangen) Selbst bei 100 Hz war bei niedrigeren Helligkeiten noch Flackern wahrzunehmen, erst bei 200 Hz konnte ich kaum noch etwas davon erkennen. Da die LEDs allerdings später einmal die ganze Wand hinaufstrahlen werden bin ich da im Moment skeptisch, ob ich davon nicht eventuell bekloppt werden könnte... Hat da jemand Erfahrungswerte? Oder bilde ich mir da eventuell nur etwas ein?

2. Da die LEDs eh 12V brauchen dachte ich, ich könnte den DFRduino nano (Den habe ich hier schon rumfliegen, gab bei dem Händler keinen Italiener) direkt mit 12V über Vin speisen. Macht er das mit oder brät es mir da wohl im Dauerbetrieb die Spannungswandler? Wären immerhin 7 Volt, die dran abfallen...

3. Weiterhin machen die Schieberegister insgesamt nur 70mA mit. Das bedeutet 8,75mA pro Ausgang. Nun stehe ich vor dem Problem, damit die 12V schalten zu müssen... Eigentlich hatte ich mir dafür überlegt, Logic Level Mosfets zu verwenden aber ich bin mir da momentan nicht ganz Sicher, ob das mit dem geringen Strom überhaupt zu Machen ist. Leider kenne ich mich mit Mosfets auch nicht all zu gut aus, bzw überhaupt nicht. Um den Gate-Strom soweit wie nötig zu begrenzen bräuchte ich allerdings schon einen Widerstand von 570 Ohm. Das zieht die Zeit, bis der Mosfet vollständig durchsteuert enorm in die Länge, sodass er vermutlich ziemlich heiß wird. Bräuchte ich hier also einen Mosfet-Treiber? Wenn ja, was für einen? Mit denen kenne ich mich nämlich noch weniger aus... Oder hat jemand eine andere Lösung für dieses Problem?

Kann mir vielleicht jemand bei diesen Problemen hier helfen?

Wieviele einzeln anzusteuernde LED-Strips hast Du?

Wenn Du nur 2 hast kannst Du ja die PWM-Ausgänge des Arduino für die Ansteuerung von MOSFET verwenden. MOSFETs werden über Spannung gesteuert, nicht über Strom. Nur beim Umschalten brauchen sie kurzzeitig Strom um den Gate-Source Kondensator zu laden/entladen.

Grüße Uwe

Je nachdem wie gut die Sache am Ende läuft werden es wohl so 3-4 werden, deshalb kann ich die Pins vom Arduino leider nicht benutzen.
Dass die Mosfets über Spannung gesteuert werden weiß ich, allerdings ist die Strecke Gate-Drain soweit ich weiß wie ein Kondensator, der aufgeladen wird. Also fließt beim Umschalten, wie du schon sagtest ein relativ hoher Strom. Den Widerstand habe ich daher, dass ich eben den Strom auf die 8,75mA, die mir vom Schieberegister her zur Verfügung stehen begrenze. Mein Gedanke dabei war, dass ich auch mit einem kurzzeitig hohen Strom den IC schon überlasten könnte… Oder liege ich da falsch?

Ich habe mich ein bisschen mehr zu dem Thema eingelesen. Wäre eventuell so eine Treiberstufe wie hier in Variante 2 gezeigt hilfreich? http://www.mikrocontroller.net/articles/Treiber#Beispiele_zu_Low-Side_Treibern (Genauer gesagt die hier: http://www.mikrocontroller.net/articles/Datei:Beispiel_LS_Treiber2_LogicLevel.png )

Ich glaube nicht, dass du dir bei nur 0.3A und langsamem PWM fuer LEDs grossartige gedanken ueber die verlustleistung durch zu langsames umschalten in den mosfets machen musst. Die 'allerwelts' logic-level typen im TO-220 gehaeuse, die z.b. reichelt im programm hat, schaffen das mit links.

OK. Da hatte ich dann ehrlich gesagt andere Vorstellungen von "Langsam". Ab wann muss man sich denn über so etwas Gedanken machen?

Bleibt allerdings immer noch die Strombelastbarkeit der Ausgänge vom Schieberegister. Wie fahre ich damit? Per Widerstand auf 8,75mA begrenzen? Dadurch wird die Schaltzeit doch wirklich ziemlich lang...

Kann vielleicht noch jemand etwas zu den anderen beiden Fragen sagen? Also der Stromversorgung und dem Flackern? Oder sind 200Hz unter Umständen wirklich einfach zu wenig, wenn es hier schon als langsam bezeichnet wird? ;)

Die kapazitaet des Gate-Source kondensators stehen im datenblatt. Zusammen mit dem gate-widerstand laesst sich also eine RC-zeit ausrechnen. Nehmen wir mal an, dass der kondensator nach 5*RC als voll anzusehen ist. Somit steht auch fest, in welchem verhaeltnis (oder miss-verhaeltnis) die umschaltdauern pro zyklus zur gesamten zyklus laenge liegen. Die zahl sollte natuerlich moeglichst klein sein. Ist sie das nicht, braucht es kuehlung oder mehr aufwand. Alles bekannt ;-)

Um es ganz genau zu machen muesste man jetzt die thermische energie pro schaltvorgang ausrechnen (LTSpice evtl.), um zur mittleren verlustleistung zu gelangen. Aber ich wuerde sagen, der 'finger-test' geht schneller: tut es weh... Und bei 300mA lohnt der aufwand eh nicht.

Warum du bei 200Hz ein flackern siehst ist mir schleierhaft, oder war es der uebergang zwischen 2 helligkeitsstufen?

Im Datenblatt gibt es eine Input Capacitance C_ISS=880pF. Ich nehme mal an, die wir das sein. Damit komme ich mit dem 570 Ohm Widerstand auf eine Schaltzeit von 2,5µS. Also 5µS für einmal an-aus minimum. 200Hz PWM-Frequenz macht bei einem eingestellten Wert von 1/255 (Kleinster einstellbarer PWM-Wert) wenn ich mit meinen Überlegungen nicht völlig daneben liege 1/f*1/255=19,6µS minimale Zykluszeit.

Also wird im Extremfall 19,6µS lang eingeschaltet und der Mosfet braucht 5µS für einen Schaltzyklus. Alles im grünen Bereich? Ist wie gesagt so berechnet, dass das Schieberegister geschont wird. Ich werde aus dem Datenblatt davon nämlich leider nicht schlau, ob für Impulse andere Grenzwerte für den Strom gelten...

Du darft nicht die Pulsdauer absolut bei minimalen PWM ansehen, sondern bezogen auf die gesamte Zeit. Pro Periode gibt es 1 Einschalten und 1 Ausschalten des Mosfets; also bei 200Hz 2 Wechsel alle 5mSekunden. Bei 2 mal 5µSek alle 5000µSek ist das sehr wenig. Grüße Uwe