Post

LED Helligkeit linear regeln

LED Helligkeit linear regeln

Die Helligkeit von LEDs hängt an der angelegten Spannung ab. Diese wird beim Arduino über einen PWM-Pin im Bereich 0..+5V eingestellt. Das mach man mit der Funktion analogWrite(), welche als Argument einen Wert zwischen 0..255 erwartet.

Nichtlineare Helligkeitsabgabe

Die von den LEDs augenscheinlich abgegebene Helligkeit steigt aber meist nicht linear mit der Spannung an, sondern bei niedrigeren Spannungen überproportional, siehe nachfolgendes Diagramm, links.

Lichtabgabe der LEDs in Abhängigkeit der Spannung/PWM-Werts

D.h. wenn man die Helligkeit von 20% auf 40% steigert (PWM-Argument 0.2255 auf 0.4255 ändert), wird die LED nicht bloß 20% heller, sondern leuchtet schon sehr hell.

Wenn man eher eine lineare Helligkeitszuname wünscht, z.B. um ein gleichmäßiges Pulsieren zu erzeugen, muss man den Zusammenhang zwischen Helligkeitswert und PWM-Argument in der Funktion analogWrite() anpassen. Eine einfache Parabel tut das schon ganz gut:

\[P(h) = h^2\]

Jetzt muss der Funktionswert noch normalisiert werden. In der Funktion oben läuft er von 0…255*255, also geteilt durch den Maximalwert erhalten wir normalisierte Werte im Bereich 0…1

\[P_{normalisiert}(h) = \frac{h^2}{255^2}\]

und skalieren den letztlich noch auf den PWM-Bereich hoch:

\[\text{PWM}(h) =\frac{h^{2}}{255^{2}}\cdot 255 = \frac{h^{2}}{255}\]
This post is licensed under CC BY 4.0 by the author.