LED halbhell leuchten lassen - Was ist PWM?



PWM steht für Pulsweitenmodulation (engl.: pulse width modulation).
Eigentlich ist das bessere deutsche Wort für unsere Anwendung: Pulsbreitensteuerung.

Klingt irgendwie schwierig, oder?
Ist es aber gar nicht.

Stell Dir mal für Dein Zimmer eine Elektroheizung vor!
Wenn Du sie in Deinem frostigen Zimmer (mit 0 Grad Celsius) benutzt und sie einschaltest, heizt sie Dein Zimmer auf z. B. 20 Grad auf.

Am nächsten Tag machst Du mal folgendes Experiment: Du schaltest jede Minute die Heizung ein und nach einer Minute wieder aus und nach einer Minute wieder ein u.s.w.
Die Heizleistung wird dadurch halbiert und Dein Zimmer heizt sich nur auf etwa 10 Grad auf.


Der gleiche Trick geht auch mit einem großen Elektromotor (auf keinen Fall einen Elektromotor direkt an einen ARDUINO-Ausgang hängen!). Als Gedankenexperiment: Schalte ihn mal im Sekundentakt (besser noch kürzer) ein und aus und ein und aus usw.
Er wird sich mit etwa halber Geschwindigkeit drehen. Und wenn man schnell genug ein- und ausschaltet, ist die Geschwindigkeit auch relativ konstant.

Sogar eine Glühlampe oder eine LED kann man mit diesem Trick halbhell leuchten lassen. Man muss sie nur schnell genug ein- und ausschalten - schneller als unser Auge es wahrnehmen kann.

Hier auf der Seite von Strippenstrolch wird es sehr schön erklärt.


Experiment: LED soll halbhell leuchten

  LED an Pin 11 / R1 = 220 Ohm

 


int led = 11;      //LED an Pin 11    


void setup()  {
  pinMode(led, OUTPUT);
  analogWrite(led, 100); // möglich: 0...255
}



void loop()  {

}



Ein neuer Befehl: analogWrite()

Was macht der? Was bedeutet analog und was bedeutet digital?
War Ausgang 11 nicht ein digitaler Ausgang?
Und wofür steht dieses PWM an einigen dieser digitalen Ausgänge?

Es gibt (komplizierte) Definitionen. Vereinfacht kann man für unsere Schaltungen sagen:

digital:
Ein Signal, das nur zwei Zustände einnehmen kann, in unserer Schaltung: 5V oder 0V

analog:
Ein Signal, das viele Zustände einnehmen kann, in unserer Schaltung z. B.: 0V 0.05V 0.25V 0.5V oder 5V und viele andere.

Mit analogWrite(Wohin, Wert) kannst Du den Ausgängen 3, 5, 6, 9, 10 und 11 die Werte 0...255 zuweisen.
Sechs PWM-Ausgänge also.
Der Wert 0 bedeutet 0% Pulsbreite,  der Wert 255 bedeutet 100% Pulsbreite, der Wert 127 bedeutet 50% Pulsbreite usw.

Mit Hilfe eines Kondensators könnte man damit tatsächlich eine analoge Spannung erzeugen. Für unsere LED ist der jedoch nicht notwendig. Unser Auge ist träge genug, um weniger helles Leuchten aufgrund von PWM wahrzunehmen.