Arduino Tutorial - Pulsweitenmodulation (PWM)

PWM steht für Pulsweitenmodulation und Arduino verwendet diese leistungsstarke PWM-Technik zur Steuerung analoger Schaltungen mit seinen digitalen Ausgängen. Die digitale Steuerung wird nur im binären Format eingeschaltet (volle 5 V) oder ausgeschaltet (0 V), und dieses Ein / Aus-Muster kann ein Rechteckwellensignal erzeugen. Wenn Sie beispielsweise eine halbhelle LED wünschen, können Sie entweder den Strom über die LED halbieren oder die flexiblere PWM-Technik verwenden, indem Sie ein Rechtecksignal mit 50% an die LED senden.

PWM hat viele Anwendungen wie die Steuerung von Servos und Drehzahlreglern oder LEDs.

 

Grundprinzip der PWM

Pulsweitenmodulation ist grundsätzlich eine Rechteckwelle mit einer variierenden hohen und niedrigen Zeit. Ein grundlegendes PWM-Signal wird in der folgenden Abbildung gezeigt.

Es gibt verschiedene Begriffe im Zusammenhang mit PWM:

  • On-Time - Zeitsignal ist hoch.
  • Off-Time - Zeitsignal ist niedrig.
  • Period - Summe der Einschaltzeit und Ausschaltzeit des PWM-Signals.
  • Duty Cycle - Prozentsatz des Zeitsignals, das während der Dauer des PWM-Signals eingeschaltet bleibt.

Period

Wie in der Skizze gezeigt, bezeichnet Ton die Ein-Zeit und Toff bezeichnet die Aus-Zeit des Signals. Die Periode ist die Summe der Ein- und Auszeiten und wird wie in der folgenden Gleichung berechnet:

Duty Cycle

Der Arbeitszyklus wird als die Ein-Zeit des Zeitraums berechnet. Unter Verwendung des oben berechneten Zeitraums wird der Duty Cycle wie folgt ermittelt:

 

 

 

analogWrite () Funktion

Die Funktion analogWrite () schreibt einen Analogwert (PWM-Welle) in einen Pin. Sie kann verwendet werden, um eine LED mit unterschiedlicher Helligkeit zu beleuchten oder einen Motor mit verschiedenen Geschwindigkeiten anzutreiben. Nach einem Aufruf der Funktion analogWrite () erzeugt der Pin bis zum nächsten Aufruf von analogWrite () oder einem Aufruf von digitalRead () oder digitalWrite () am selben Pin ein stetiges Rechtecksignal des angegebenen Tastverhältnisses. Die Frequenz des PWM-Signals an den meisten Pins beträgt ungefähr 490 Hz. Auf den Uno und ähnlichen Platinen haben die Pins 5 und 6 eine Frequenz von ungefähr 980 Hz. Die Pins 3 und 11 am Leonardo laufen ebenfalls mit 980 Hz.

Bei den meisten Arduino-Boards (ATmega168 oder ATmega328) funktioniert diese Funktion auf den Pins 3, 5, 6, 9, 10 und 11. Am Arduino Mega funktioniert es auf den Pins 2 - 13 und 44 - 46. Älteres Arduino Boards mit einem ATmega8 unterstützen nur analogWrite () an den Pins 9, 10 und 11.

Der Arduino Due unterstützt analogWrite () an den Pins 2 bis 13 und die Pins DAC0 und DAC1. Anders als die PWM-Pins sind DAC0 und DAC1 Digital-Analog-Wandler und fungieren als echte Analogausgänge.

Sie müssen pinMode () nicht aufrufen, um den Pin vor dem Aufruf von analogWrite () als Ausgabe festzulegen.

Die analogWrite() Function Syntax sieht wie folgt aus:

analogWrite ( pin , value ) ;

Value ist dabei der Duty Cycle zwischen 0 (immer aus) und 255 (immer an).

 

Arduino PWM Beispiel

In diesem Arduino-Tutorial wird gezeigt, wie man eine LED mit der PWM-Technik dimmt. In diesem Beispiel wird der digitalen Pin 3 als PWM-Ausgang verwendet. Sie können aber auch einen anderen Pin verwenden, der mit PWM markiert ist. Auf dem Arduino UNO sind das PIN 3, 5, 6, 9, 10 und 11.

 

Arduino Code:

int inputPin = A0;  // set input pin for the potentiometer
int inputValue = 0; // potentiometer input variable
int ledPin = 3;     // set output pin for the LED

void setup() {
     // declare the ledPin as an OUTPUT:
     pinMode(ledPin, OUTPUT);
}

void loop() {
     // read the value from the potentiometer:
     inputValue = analogRead(inputPin);

     // send the square wave signal to the LED:
     analogWrite(ledPin, inputValue/4);
}

analogRead () gibt immer den Bereich zwischen 0 und 1023 vom analogen Gerät zurück (in diesem Fall vom Potentiometer). Die Funktion analogWrite () unterstützt nur den Bereich von 0 bis 255, z.B sendet analogWrite (127) immer ein Tastverhältnis von 50% an die LED und analogWrite (255) sind 100% und damit volle Helligkeit. Indem Sie den Potentiometer drehen, wird sich die Helligkeit der LED im Beispiel ändern.

 

Fritzing Schematics