Arduino PWM steuert Hochleistungs-LED

Ich möchte einen der PWM-Ausgänge des Arduino verwenden, um eine Hochleistungs-LED zu steuern. Ich kann mich nicht an die genauen Spezifikationen erinnern, aber es war erheblich aktueller, als der ATMega328 liefern kann.

Mir ist klar, dass dies normalerweise mit der Verwendung eines Transistors und eines Widerstands zur Stromsteuerung der LED erreicht wird. Ich möchte jedoch nicht, dass die LED mit sinkender Batteriespannung weniger hell wird, und möchte daher anstelle des Widerstands eine Konstantstromquelle verwenden.

Mein erster Gedanke war, einen LM317 zu verwenden. Was ich jedoch wissen möchte, ist, ob es mit den 64 kHz reagieren kann, die es müsste?

Könnte ich alternativ einen einfachen MOSFET verwenden, um dasselbe billiger und einfacher zu erreichen? (Dann bräuchte ich weder einen Transistor noch eine Konstantstromquelle, da der MOSFET beides tun würde.)

Danke Rob.

Müssen Sie wirklich mit 64 kHz modulieren? Wenn Sie nur versuchen, die sichtbare Helligkeit zu steuern, ist dies schneller als erforderlich. Einige weitere Details wie der Spannungsbereich, den Sie von der Batterie erwarten, sowie der Betriebsstrom und die Betriebsspannung der LED würden helfen, eine bessere Antwort zu geben.
robzy - Nach Durchsicht der Arduino-Dokumentation unterstützt die Standard-PWM-Funktion nur eine Frequenz von 490 Hz. Wenn Sie analogWrite(1) ausführen, wird dies in ein PWM-Signal mit einem Arbeitszyklus von 0,39 % übersetzt. Ist es richtig, das als 64-kHz-Signal zu bezeichnen?
Ich möchte die physikalische Helligkeit und Farbe einer RGB-LED steuern. Ich bin mir ziemlich sicher, dass ich aktuelle Zahlen von 200 mA für jede Farbe der LED betrachte. Die Batteriespannung sollte 3,5-4,5 V betragen, und die Spannung der LEDs variiert zwischen 2,5-3,2 V.
Einige interessante Antworten, aber für meinen Wissensstand nicht ganz ausreichend. Zukünftige Leser möchten vielleicht diesen Beitrag für viele Details sehen: joost.damad.be/2012/09/…

Antworten (4)

64kHz braucht man für diese Anwendung nicht, 200Hz reichen aus.

Ich habe das folgende Design für etwa 200 mA Strom verwendet:

+5V --- LED --- Transistor -(1)- Shunt (1 Ohm) --- GND

(1) geht zum negativen Eingang eines LM358 OpAmp. Wichtig ist, dass der OpAmp bis auf die untere Schiene (GND) arbeitet, da am Shunt nur eine geringe Spannung anliegt.

Der Ausgang des OpAmp treibt den Transistor über einen geeigneten Widerstand an.

Der positive Eingang ist mit einem Spannungsteiler verbunden, der vom Port-Pin gespeist wird. Der Spannungsteiler und der Shunt bestimmen den Strom durch die LED.

Eigentlich denke ich, dass ich 64KHz brauche. Die PWM-Frequenz beträgt etwa 500 Hz, was sich in Perioden von 2 Millisekunden aufteilt. Auf der niedrigsten Stufe (vor dem Ausschalten) ist es für 1/256 dieser Zeit oder 8-ms-Bursts eingeschaltet. Das ergibt 128 kHz (ich habe versehentlich 128 Stufen in meiner ursprünglichen Schätzung verwendet).
@robzy: Du meinst 8 us Bursts, nicht 8 ms. Und Sie verwechseln Impulsbreite mit Frequenz. 500 Hz ist 500 Hz, auch wenn Sie ein Tastverhältnis von 0,1 % haben.

Das Datenblatt für einen LM317 zeigt, dass seine Sprungantwortzeit in der Größenordnung von 10 uS liegt. Dies ist zu langsam, um mit 64 kHz zu modulieren.

Eine Stromquelle ist der richtige Ansatz. Abhängig von der Gesamtleistung, die Sie zum Ansteuern der LED benötigen, könnte eine lineare Stromquelle wie von starblue vorgeschlagen funktionieren, aber wenn die Leistung höher ist, müssen Sie möglicherweise einen Abwärtsregler verwenden.

@Clint Lawrence - Ein einzelner Schritt in einer 64-kHz-Rechteckwelle beträgt 15 uS. Wenn der LM317 eine Anstiegsrate von 10 uS hat, könnte er diese Rechteckwelle nicht verarbeiten?

Ich würde einen Operationsverstärker, einen Widerstand und einen FET verwenden, um eine Konstantstromsenke zu erzeugen. Wenn die Spannung abfällt, treibt der Operationsverstärker das Gate des FET an, um einen konstanten Strom durch den Messwiderstand aufrechtzuerhalten.

Wenn Sie auf Luciani.org zum Abschnitt "Elektronische Last" scrollen , sehen Sie ein Schema einer "Wägezelle", die eine Konstantstromsenke ist. Sie können die Senke per PWM einstellen, indem Sie den programmierten Strom periodisch auf Null setzen.

Ich habe meinen Prototyp funktioniert. Es befindet sich im Abschnitt "nicht ganz fertig" auf der Wiblocks-Site.

Sie können einen präzisen, niederohmigen Widerstand in Reihe mit der LED schalten und den Analogeingang von Arduino verwenden, um den Spannungsabfall über dem Widerstand zu messen. Sie können den LED-Strom aus dieser Messung berechnen und das Tastverhältnis des PWM-Signals anpassen, um Änderungen der Batteriespannung auszugleichen.

Beachten Sie, dass dies nicht funktionieren würde, wenn Arduino keine feste Referenzspannung für die Analog-Digital-Wandlung hat.