Zum Inhalt springen
Pulse Width Modulation

PWM – Pulse Width Modulation

    PWM bedeutet Pulse Width Modulation und beschreibt ein Verfahren, bei dem der Strom in schneller Abfolge ein- und abgeschaltet wird. Ein Zeitintervall ist dabei 20 Millisekunden lang. Träge Bauelemente kann man durch ein PWM Signal dimmen. Ist der Strom z.B. 10 Millisekunden ein- und danach 10 Millisekunden abgeschaltet, ist der resultierende Strom nur halb so groß. Eine LED würde also nur halb so kräftig leuchten.

    Befehl

    analogWrite(pwmPin, value);

    value: 0 – 255
    pin: Muss ein PWM-Pin sein. Auf dem Arduino-UNO-Board gibt es sechs Kanäle, die PWM-Signale erzeugen können: 3,5,6,9,10,11.

    Hintergrund

    Pulsweitenmodulation oder PWM ist eine Technik, die digitale Methoden verwendet, um analoge Ergebnisse zu erhalten. Dabei wird der digitale Controller verwendet, um Rechteckwellen zu erzeugen, d. h. Signale zum Öffnen und Schließen. Dieser Ein-Aus-Modus kann die Spannung zwischen dem vollständig eingeschalteten Zustand (5 Volt) und dem ausgeschalteten Zustand (0 Volt) basierend auf dem Verhältnis der Einschaltzeit zum Ausschaltzeit simulieren.


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    Die Dauer der Einschaltzeit wird als Impulsbreite bezeichnet. Um unterschiedliche Analogwerte zu erhalten, kann man diese Impulsbreite ändern oder modulieren. Verwendet man diese Modulation beispielsweise mit einer LED, entspricht das Ergebnis dem, als ob die durch LED eine konstante Spannung zwischen 0 und 5 V versorgt würde. Sie beeinflusst die Helligkeit der LED.

    Arduino PWM Animation

    In der Abbildung stellt der Abstand der blauen Linien eine feste Zeitspanne dar. Die Dauer oder Periode ist der Kehrwert der PWM-Frequenz. Mit anderen Worten, in dem Fall, in dem die Arduino-PWM-Frequenz ungefähr 500 Hz beträgt, entsprechen die grünen Linien 2 ms. Der Wertebereich von AnalogWrite() liegt zwischen 0 und 255. Daher erfordert analogWrite(255) beispielsweise ein Verhältnis zwischen An und Aus von 100% (immer eingeschaltet), während analogWrite (127) ein Verhältnis zwischen An und Aus von 50% (die Hälfte der Zeit) erfordert.

    PWM-Pins verschiedener Boards

    • Arduino UNO: 3, 5, 6, 9 – 11
    • Arduino MEGA: 2 – 13, 44 – 46
    • Arduino Leonardo, Micro Yún: 3, 5, 6, 9, 10, 11, 13
    • NodeMCU: D1 – D8, D12
    • Teensy3: 3 – 6, 9, 10, A6 – A9

    Beispiele

    9 Gedanken zu „PWM – Pulse Width Modulation“

    1. Pingback: So baust du einen Kronleuchter mit Arduino – Ein Arduino Tutorial

    2. 是不是無法同時發射2組以上的脈波? 底下的程式只有第1組可以正常動作:/* * irObjectDetection.pde: 紅外線物體偵測 */ const int irRec1 = 2; // 紅外線接收器 const int irLed1 = 3; // 紅外線發射器 const int ledPin1 = 12; // 紅外線指示燈 const int irRec2 = 4; // 紅外線接收器 const int irLed2 = 5; // 紅外線發射器 const int ledPin2 = 13; // 紅外線指示燈 const unsigned int frqeneucy = 38000; // 發射頻率(單位: Hz) void setup() { pinMode(irRec1, INPUT); // 把 irReceiver 接腳設置為 INPUT pinMode(irLed1, OUTPUT); // 把 irLed 接腳設置為 INPUT pinMode(ledPin1, OUTPUT); // 把 ledPin 設置為 OUTPUT pinMode(irRec2, INPUT); // 把 irReceiver 接腳設置為 INPUT pinMode(irLed2, OUTPUT); // 把 irLed 接腳設置為 INPUT pinMode(ledPin2, OUTPUT); // 把 ledPin 設置為 OUTPUT tone(irLed1, frqeneucy); // 產生指定頻率的脈波 (Pulses) tone(irLed2, frqeneucy); // 產生指定頻率的脈波 (Pulses) } // 讓指示燈閃爍幾下 void blinkLED(int ledPin) { for (int i=1; i<= 3; i++) { digitalWrite(ledPin, HIGH); // 打開指示燈 delay(100); digitalWrite(ledPin, LOW); // 關掉指示燈 delay(100); } } void loop() { int ir1 = digitalRead(irRec1); // 讀取 irReceiver 的狀態 if (ir1 == 0) blinkLED(ledPin1); // 讓指示燈閃爍幾下 int ir2 = digitalRead(irRec2); // 讀取 irReceiver 的狀態 if (ir2 == 0) blinkLED(ledPin2); // 讓指示燈閃爍幾下 }

    3. Es heißt ausgeschaltet und nicht ausgeschalten!
      Du kannst etwas ausschalten, aber wenn du das getan hast, ist es ausgeschaltet und nicht ausgeschalten. grrrrr
      Wie mich das auch immer in den Videos nervt.
      Entschuldige bitte, dass ich so direkt bin, ist nicht böse gemeint.
      Musste ich jetzt mal loswerden ;-)

    4. Was das Dimmen von LEDs betrifft stimmt die Erklärung leider nicht. Im Gegensatz zu Glühlampen sind LEDs sehr schnelle Bauelemente. Aus diesem Grund kann man LEDs für Signalübertragungen bis in den zweistelligen MHz-Bereich verwenden. Das träge Element ist in diesem Fall das menschliche Auge.
      Für Systeme wie z.B. Glühlampen, die ja mit einem Glühdraht eine thermische Trägheit aufweisen oder für E-Motoren mit ihrer mechanischen Trägheit stimmt die Erklärung.

    Die Kommentarfunktion ist deaktiviert.