Arduino Tutorial - Pulsweitenmodulation (PWM)

category-teaser-arduino59c1138db6d65

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.

pwm1

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:

pwm2

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:

pwm3

 

 

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

pwm4

 

24.09.2018 00:00 |

Passende Artikel

  • Arduino Uno R3
    Arduino
    Arduino Uno R3

    Das Mikrocontroller-Board Arduino Uno basiert auf dem ATmega328 ( Datenblatt ). Es verfügt über 14 digitale Ein- und Ausgänge (6 davon als PWM-Ausgang einsetzbar), 6 analoge Eingänge, 1 Keramik-Resonator (16 MHz), 1 USB-Anschluss, 1 Power Jack, 1 ICSP Header sowie 1 Reset-Knopf. Das Board lässt sich über ein Netzteil oder einen Akku betreiben oder via USB-Kabel an den PC anschließen. Im Vergleich zu den vorherigen Arduino Boards wird kein...

    21,66 €*

    Nettopreis: 18,20 €
    Umsatzsteuer: 3,46 €
    * inkl. MwSt. zzgl. Versand
  • LED - Basic Red 5mm

    LEDs - those blinky things. A must have for power indication, pin status, opto-electronic sensors, and fun blinky displays. This is a very basic 5mm LED with a red lens. It has a typical forward voltage of 2.0V and a rated forward current of 20mA. Features: 1.8-2.2VDC forward drop Max current: 20mA Suggested using current: 16-18mA Luminous Intensity: 150-200mcd Documents: Datasheet LED Tutorial

    0,35 €*

    Nettopreis: 0,29 €
    Umsatzsteuer: 0,06 €
    * inkl. MwSt. zzgl. Versand
  • Breadboard 400 (300/100)

    Breadboard 400 (300/100) 300 Kontakt-Terminal 100 Verteiler-Terminal Material:ABS + metal contact clips + adhesive sticker Abmessung: 83.5x54.5x8.5mm

    3,70 €*

    Nettopreis: 3,11 €
    Umsatzsteuer: 0,59 €
    * inkl. MwSt. zzgl. Versand
  • 1/4 Watt Kohleschichtwiderstand (220 Ohm, 5%, 25 Stück)

    Diese Widerstände besitzen folgende Eigenschaften: Typ: Kohleschichtwiderstand, Durchgangsloch-Axial-Typ Widerstand: 220 Ω Nennleistung: 0,25 Watt Spannung: 300 V (max.) Toleranz: 5% Dokumente: Datenblatt

    0,80 €*

    Nettopreis: 0,67 €
    Umsatzsteuer: 0,13 €
    * inkl. MwSt. zzgl. Versand
  • USB Kabel 2.0 A-Stecker auf B-Stecker 2m

    USB 2.0-Stecker (Typ A) > USB 2.0-Stecker (Typ B) Features: passend für viele Peripheriegeräte wie Drucker oder Scanner Hi-Speed Datenübertragungen bis 480 Mbit/s UL-E258105 Style 2725 Technische Daten: Anschluss, Typ: USB 2.0-Stecker (Typ A) Anschluss 2, Typ: USB 2.0-Stecker (Typ B) Kabeltyp: Rundkabel Innenleiter, Material: CU (Kupfer) Kabellänge: 2 m Anzahl Schirmungen: 2 x max. Übertragungsrate: 0,48...

    1,79 €*

    Nettopreis: 1,50 €
    Umsatzsteuer: 0,29 €
    * inkl. MwSt. zzgl. Versand
  • Jumper Wires Premium 10 cm M/M - 20 AWG (30 Stück)

    Diese 10 cm langen 20 AWG Jumpers haben männliche (male) Anschlüsse an beiden Enden. Verwenden Sie diese Jumpers, um von jedem weiblichen (female) Header auf einem Board zu einem anderen weiblichen Header zu springen. Kombinieren Sie die Jumpers mit unseren female-to-female Jumpers, um einen male-to-female Jumper zu schaffen. Mehrere Jumpers können nebeneinander auf einem 0,1 "Header installiert werden. Geliefert werden eine Packung mit 30...

    2,50 €*

    Nettopreis: 2,10 €
    Umsatzsteuer: 0,40 €
    * inkl. MwSt. zzgl. Versand