Hallo Bastler, unter https://www.mikrocontroller.net/articles/LED-Fading wird das physiologische Dimmen von LEDs behandelt. Die Helligkeit wird per PWM gesteuert. Es geht darum, wie gesteuert wird, damit Personen ein gleichmässiges Dimmen wahrnehmen. Wir nehmen die Änderung von Helligkeit und anderen Sinneseindrücken nicht linear sondern proportional zum aktuellen Wert war (https://de.wikipedia.org/wiki/Weber-Fechner-Gesetz). ΔR = k * R R ist die Helligkeit die bei LEDs dem Strom entspricht. Das kennen wir doch: Die Änderung der Spannung eines über einen Widerstand entladenen Kondensators ist proportional der Spannung am Kondensator. Die obige Schaltung wird beim Ausschalten, die Helligkeit der LED physiologisch korrekt steuern. Beim Einschalten hat sie leider den gegenteiligen Effekt. Aber es geht hier nur um das Prinzip. Die digitale Lösung ist relativ einfach. Beim Hochdimmen beginnen wir mit einem Wert und addieren einen zum derzeitigen Wert proportionalen dazu. R(n+1) = Rn + k * Rn Mit K = 1 ist das simpel: R(n+1) = 2 * Rn Das kann auch mit einem Prozessor ohne Multiplikation einfach realisiert werden: shift nach links. Mit R1 = 1 können wir acht Stufen mit 8 Bit realisieren. (Die 256 sind keine 8 Bit: Bei Überlauf 255 nehmen). Abdimmen ist damit R(n+1) = Rn - k * Rn Mit k=0.5 ist R(n+1) = Rn / 2 Das ist einfach shift nach rechts. Feinere Stufen ergeben sich mit k = 1 ± b. Dann ist R(n+1) = Rn ± b * Rn Wird b als 1/2**p gewählt, ist das einfach auf einem Mikrocontroller zu bewältigen. Mit 16-Bit-Zahlen (hier als Perl-Programm geschrieben) kann man 24 Werte z.B. für einen 10-Bit-PWM-Ausgang einfach erzeugen. print "Abdimmen: Faktor = 0.75 = (1 - 1/4)\n"; my $value = 2**16-1; # Anfangswert = Full-House for ( 1 .. 24 ) { my $pwm_value = $value >> 6; # 10Bit print "$pwm_value\n"; $value = $value - ($value >> 2); }; Im anhängenden Perl-Programm sind andere Beispiele. Das Abdimmen ist ziemlich einfach. Beim Aufdimmen muss ein passender Anfangswert ermittelt werden. Diese physiologischen Dimmer können leicht für Mikrocontroller programmiert werden. Es wird keine Multiplikation / Division und ebenso keine Tabelle benötigt. Ich werde einen Dimmer mit einem PIC realisieren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.