Output

analogWrite

analoglWrite-Block
Für Erklärung auf einzelne Komponenten klicken.

Block

Mit dem analogWrite Block können spezielle Pins des Microcontrollers angesteuert werden, um ein bestimmtes Signal auszugeben.

Im Gegensatz zum digitalWrite Block können bei dem analogWrite Baustein mehr als nur zwei Zustände für den jeweiligen Ausgang gesetzt werden. Wenn man sich eine angeschlossene LED am Ausgang vorstellt, dann ist es nicht nur möglich diese auszuschalten oder auf voller Helligkeit leuchten zu lassen, sondern auch beispielsweise nur auf der halben Helligkeit zum leuchten zu bringen. Es lässt sich also vermuten, dass am Ausgang eine Spannung zwischen 0 und 5 Volt angelegt wird. Für die halbe Helligkeit der LED bei 5 Volt müssten dann 2,5 Volt anliegen. Für den Anfang gehen wir einmal davon aus, dass am Pin dann konstant diese 2,5 Volt anliegen. Bei genauem Hinsehen ist diese Annahme doch falsch und wird im Abschnitt Pulsweitenmodulation (PWM) erklärt.

Wie der digitalWrite Block hat auch der analogWrite Block zwei einstellbare Parameter ~Pin und Wert. Hier unterscheiden sich die beiden Blöcke jedoch, da beim analogWrite Block andere Parameter eingetragen werden müssen.

Wird der Block also abgearbeitet und ein Pin des Arduinos auf HIGH gesetzt, dann liegt diesem Pin eine Spannung von 5 Volt an. Wird dieser Pin dann wieder auf LOW gesetzt, dann liegt wieder eine Spannung von 0 Volt gegenüber dem GND-Pin an.

~Pin

Ein einstellbarer Parameter ist der ~Pin Parameter. Dieser bestimmt welcher Pin mit dem eingestellten Signal als Ausgang angesteuert werden soll. Hier können nur die auf dem Arduino-Board als "digital" gekennzeichnete Pins verwendet werden, die vor ihrer Nummerierung dieses Zeichen: ~ besitzen. Beim normalen Arduino Uno sind das die digitalen Pins mit den Nummern 1, 3, 5, 6, 9, 10 und 11. Die Bezeichnung der Pins ist auf der Platine aufgedruckt und kann dort abgelesen werden.

Will man die Nummer des anzuszeuernden Pins ändern, dann kann man den Bearbeitungsmodus mit einem linken Mausklick auf die aktuelle Zahl aktivieren und diese ändern. Der Wert Parameter kann auf die gleiche Weise bearbeitet werden.

Wert

Mit dem Wert Parameter kann die Spannung eingestellt werden, welche an dem ausgewählten Pin anliegen soll. Zulässige Eingaben für diesen Parameter sind ganze Zahlen zwischen 0 und 255. Wobei ein Wert von 0 einer Spannung von 0 Volt entspricht und ein Wert von 255 einer Spannung von 5 Volt. Dazwischen steigt der Wert für die Spannung am Pin linear an. Die Spannung, welche am Pin anliegen soll, lässt sich folgendermaßen berechnen:

Wert • 5 Volt 255

Beispiel

In diesem Beispiel soll die Spannung für einen Pin berechnet werden, wenn der Wert auf 168 gestellt wurde.

168 • 5 Volt 255

≈ 3,3 Volt

Code

Im Code für den Arduino wird der Baustein mit der Funktion analogWrite(Pin, Wert) umgesetzt, wobei hier die Parameter Pin, und Wert wie oben beschrieben gewählt werden.

Pulsweitenmodulation (PWM)

Wie oben bereits erwähnt verhält, sich der Ausgang bei genauerer Betrachtung allerdings etwas komplizierter, denn der Pin ist auch bei Ausführung des analogWrite Blocks nur digital ansteuerbar. Das heißt der Ausgang kann entweder logisch HIGH sein und 5 Volt ausgeben oder logisch LOW sein und 0 Volt ausgeben. Um nun eine Spannung zwischen 0 und 5 Volt zu erhalten wird ein Trick angewendet.

Der Ausgang wird sehr schnell an- und ausgeschalten. Die Zeitspanne während der Ausgang einmal eine Zeit lang eingeschalten und einmal eine Zeit lang ausgeschalten ist nennt man eine Periode. Dieses Verfahren nennt man Pulsweitenmodulation, was auch als PWM abgekürzt wird. Ein PWM Pin an einem normalen Arduino Uno hat eine Taktfrequenz von 490 Hertz. Das heißt pro Sekunde durchläuft der Pin 490 Perioden. In einer Sekunde wird der Ausgang 490 mal ein- und ausgeschalten.

Nun kann über diese Methode die Ausgangsspannung "künstlich" verringert werden. Je länger die "Einschalt-Zeit" nun im Verhältnis zur "Ausschalt-Zeit" ist, desto näher ist die mittlere (durchschnittliche) Ausgangsspannung an den maximal möglichen 5 Volt. Das hieße dann, dass wenn die beiden Zeitspannen gleich groß sind, die Ausgangsspannung im Schnitt halbiert wird.

Eine genauere Erklärung dazu findet sich im Aufgabenblatt 3 Analoge Signale und Variablen im Abschnitt 3.5.