Pulsweitenmodulation, was ist PWM Arduino Uno

Die Pulsweitenmodulation auf den Arduino Uno und Nano arbeitet an den digitalen Pins – 3, 5, 6, 9, 10 und 11 mit 488,28 Hz. Bei Verwendung der Funktion analogWrite variiert die PWM-Frequenz von 0 bis 255 und entspricht einem Impulsfüllfaktor von 0 bis 100%. Manchmal ist die Impulsbreitenmodulation-Frequenz des Arduino zu niedrig und muss erhöht werden. Überlegen Sie, was PWM Arduino ist und wie man es erhöht.




Bestandteile:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • LEDs und Widerstände
  • Breadboard
  • Dupont-Kabel

Pulsweitenmodulation (auf Englisch PWM – Pulse-Width Modulation) ist die Steuerung der Stromversorgung des digitalen Ausgangs des Mikrocontrollers durch Änderung der Pulsbreite bei konstanter Frequenz und Amplitude des Ausgangssignals. Die folgende Grafik veranschaulicht die Änderung der Impulsbreite bei der Modulation eines analogen Signals. Der Pegel des PWM-Signals wird durch den Impulsfüllfaktor bestimmt.

Pulsweitenmodulation auf Arduino Uno, Nano, Mega

Pulsweitenmodulation auf Arduino Uno / Nano / Mega

PWM stellt die Änderung des Tastverhältnisses dar, d. h. den Prozentsatz der Zeit, in der ein Rechteckimpuls einen HIGH-Pegel hat (siehe die Änderung des Tastverhältnisses im Diagramm oben). Ein Signal-Tastverhältnis im Bereich von 50 % bedeutet beispielsweise, dass die Hälfte der Periode des PWM-Signals HIGH und die Hälfte der Periode LOW ist. Das PWM-Tastverhältnis ist das Verhältnis der Impulswiederholungsperiode zu ihrer Dauer.

Es lassen sich zwei Anwendungen für die PWM unterscheiden:

1. PWM wird in Stromversorgungen, Leistungsreglern usw. verwendet. Die Verwendung von PWM (Pulsweitenmodulation) auf Arduino Nano, Uno macht es viel einfacher, die Helligkeit verschiedener Lichtquellen (LEDs oder LED-Streifen) und die Drehgeschwindigkeit von Kollektormotoren, die an das Arduino-Board angeschlossen sind, zu steuern.

2. PWM wird verwendet, um ein analoges Signal mit verschiedenen Frequenzen zu erhalten. Der Analog-Digital-Wandler (ADC) auf dem Mikrocontroller ist recht einfach zu implementieren, da er ein Minimum an Elementen für den Aufbau der Schaltung benötigt – ein RC-Glied, bestehend aus einem Widerstand und einem Kondensator, ist ausreichend.

Arduino PWM (Pulse-Width Modulation) Implementierung

Arduino PWM (Pulse-Width Modulation) Implementierung

Im folgenden Beispiel demonstrieren wir die Verwendung der PWM-Modulation zur Steuerung der LED-Helligkeit mit der Funktion analogWrite. Wie in der ersten Grafik gezeigt, stellen wir das Tastverhältnis am digitalen Ausgang 10 mit unterschiedlichen Intensitäten ein – 0 %, 25 %, 50 %, 75 % und 100 %. Optisch wird sich dies in der Helligkeit der an Pin 10 des PWM-fähigen Mikrocontrollers angeschlossenen LED widerspiegeln.

Programm Arduino für Impuls-Breiten-Modulation




#define LED 10

void setup() {
  pinMode(LED, OUTPUT);
}

void loop() {
  analogWrite(LED, 0); // 0%
  delay(500);

  analogWrite(LED, 64); // 25%
  delay(500);

  analogWrite(LED, 127); // 50%
  delay(500);

  analogWrite(LED, 191); // 75%
  delay(500);

  analogWrite(LED, 255); // 100%
  delay(500);
}
  1. In diesem Programm leuchtet die LED mit unterschiedlichen PWM-Frequenzen;
  2. Mit dem Arduino-Mikrocontroller können Sie einen digitalen (ein/aus) oder analogen (0 bis 5 V) Ausgang steuern.

PWM-Signalsteuerung auf Arduino Mega, Uno, Nano

PWM-Signalsteuerung auf Arduino Mega, Uno, Nano

Im folgenden Beispielprogramm wird eine sanfte Änderung der Frequenz des PWM-Signals verwendet, wie im Diagramm dargestellt. Für das Beispiel wird eine LED benötigt, die an Pin 10 angeschlossen ist. Sie können jeden Pin des Mikrocontrollers verwenden, der PWM unterstützt (sie sind mit einem Schnörkel markiert). Die Frequenz der Impulse wird mit einer for-Schleife geändert und die LED schaltet sich sanft ein und aus.

Programm Arduino für Steuerung der PWM-Frequenz

#define LED 10

void setup() {
  pinMode(LED, OUTPUT);
}

void loop() {
  for(int i=0; i<=255; i++) {
     analogWrite(LED, i);
     delay(10);
  }
  for(int i=255; i>=0; i--) {
     analogWrite(LED, i);
     delay(10);
  }
}

Der auf ATmega168/328 basierende Arduino verwendet drei Timer für die PWM:

Timer 0 – Pins 5 und 6
Timer 1 – Pins 9 und 10
Timer 2 – Pins 3 und 11

Timer 0 wird für das Timing, d. h. die Funktionen Delay und Millis, verwendet. Wenn Sie die Frequenz von Timer 0 erhöhen, werden die Funktionen zum Halten der Zeit unterbrochen. Um die Ausgänge 9 und 10 des Arduino zu erhöhen, müssen Sie die Frequenz von Timer 1 ändern. Die maximale PWM-Frequenz kann bis zu 62.500 Hz betragen.

Schlussfolgerung. Die Arduino Uno- und Nano-Boards verfügen über 6 Hardware-PWM-Modulatoren an den Pins mit den Nummern 3, 5, 6, 9, 10 und 11. Das PWM-Signal wird von der Funktion analogWrite gesteuert, die ein analoges Signal am Ausgang erzeugt und den Impulsfüllfaktor auf 488,28 Hz und eine Auflösung von 8 Byte (0 bis 255) einstellt. Auf dem Arduino Mega sind die PWM-modulierten Pins auf die anderen Ausgänge gelegt.

4.7/5 - (3 votes)


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert