PWM Signal Generator
Was ist PWM?
Pulsweitenmodulation (PWM) ist eine Technik zur Steuerung der durchschnittlichen Leistung, die an ein Gerät geliefert wird, indem schnell zwischen Ein- und Aus-Zuständen umgeschaltet wird.
Hauptparameter:
- Duty Cycle (Tastverhältnis): Der Prozentsatz der Zeit, in der das Signal "HIGH" ist
- Frequenz: Wie oft pro Sekunde das Signal zwischen HIGH und LOW wechselt
- Periode: Die Zeit für einen kompletten Zyklus (Periode = 1 / Frequenz)
- ON-Zeit: Die Zeit, in der das Signal HIGH ist (ON-Zeit = Periode × Duty Cycle)
- OFF-Zeit: Die Zeit, in der das Signal LOW ist (OFF-Zeit = Periode × (1 - Duty Cycle))
Anwendungen:
- LED-Helligkeitssteuerung: Durch Variation des Duty Cycles erscheint die LED heller oder dunkler
- Motor-Geschwindigkeitsregelung: Steuerung der Drehzahl von DC-Motoren
- Servo-Positionierung: Präzise Steuerung von Servo-Motoren
- Audio-Verstärker (Class-D): Effiziente Verstärkung von Audiosignalen
- DC-DC Spannungswandler: Buck/Boost Konverter für Spannungsregelung
- Heizungssteuerung: Temperaturregelung durch Leistungsmodulation
Funktionsweise:
Bei einem Duty Cycle von 50% ist das Signal die Hälfte der Zeit eingeschaltet, wodurch im Durchschnitt 50% der maximalen Leistung übertragen wird. Bei niedrigen Frequenzen (wie in diesem Simulator) können Sie die einzelnen Impulse deutlich sehen. In der Praxis werden oft viel höhere Frequenzen (kHz bis MHz) verwendet.
🎓 Berechnung:
Periode (T) = 1 / Frequenz [Sekunden]
ON-Zeit = T × (Duty Cycle / 100)
OFF-Zeit = T × (1 - Duty Cycle / 100)
Durchschnittliche Spannung = Vmax × (Duty Cycle / 100)
Duty Cycle53.0%
Frequenz2.0 Hz
HIGH2.23V
LOW-2.29V
Periode500.00 ms
ON-Zeit265.00 ms
OFF-Zeit235.00 ms
Wähle rechts eine Anwendung, um das PWM-Signal als praxisnahe Visualisierung zu sehen.
Duty Cycle: 50%
Status: Available power = Duty Cycle * 0,6 A = 30 A
Der Control Pilot nutzt PWM (1kHz ±25Hz) zur Kommunikation zwischen Wallbox und Fahrzeug. Das Tastverhältnis codiert die maximal verfügbare Ladeleistung nach IEC 61851-1.
Die LED leuchtet mit 50% Helligkeit.
Durch PWM erscheint die LED für das menschliche Auge heller oder dunkler, obwohl sie nur ein/aus schaltet.
Motordrehzahl: 50%
Die durchschnittliche Spannung steuert die Drehgeschwindigkeit des DC-Motors.
Position: 90°
Servos nutzen PWM-Pulslängen (0.5-2.5ms) zur präzisen Winkelsteuerung.
Lautstärke: 50%
Class-D Verstärker nutzen hochfrequentes PWM zur effizienten Audio-Verstärkung. Der RC-Tiefpass filtert das PWM-Signal zu einem analogen Audio-Signal.
Ausgangsspannung: 50% (6V bei 12V Input)
PWM steuert die durchschnittliche Ausgangsspannung durch schnelles Schalten.
Heizleistung: 50%
Boiler-Temp: 50°C
PWM steuert den Boiler. Die Wassertemperatur reagiert direkt, aber die Raumtemperatur steigt träge (thermische Trägheit).
📚 Warum ein Transistor?
Problemstellung: Mikrocontroller (Arduino, ESP32, etc.) können nur wenige mA (ca. 20-40mA) treiben – das reicht nicht für LEDs mit hoher Helligkeit, Motoren, Relais oder andere Lasten!
Lösung: Ein Transistor fungiert als elektronischer Schalter. Das PWM-Signal vom Mikrocontroller steuert die Basis/Gate, während die Last (LED, Motor) am Kollektor/Drain hängt und von einer externen Stromquelle versorgt wird.
Typen:
- NPN-Transistor (Low-Side Switch): Last zwischen VCC und Kollektor, Emitter an GND
- PNP-Transistor (High-Side Switch): Last zwischen Emitter und GND, Kollektor an VCC
- N-Channel MOSFET: Beste Wahl für höhere Ströme (bis mehrere Ampere), geringerer Spannungsabfall
🧰 Interaktive Schaltungssimulation
Bewege die Slider oben, um das PWM-Signal zu ändern und die Schaltung live zu sehen!
VCC: 5V
VBE: ~0.7V (aktiv)
VCE(sat): ~0.2V
IB: ~4mA (max)
IC: ~20mA (LED)
hFE: ~100 (Gain)
Bei 50% Duty Cycle ist der Transistor die Hälfte der Zeit eingeschaltet.
🎓 Wie funktioniert's?
Sättigung (Saturation): PWM HIGH → Transistor voll durchgeschaltet → LED leuchtet (VCE ≈ 0.2V)
Cutoff (Gesperrt): PWM LOW → Transistor gesperrt → LED aus (IC ≈ 0mA)
PWM-Effekt: Durch schnelles Umschalten erscheint die LED mit angepasster Helligkeit!
Tipp: Für höhere Ströme (>500mA) verwende MOSFETs wie IRLZ44N statt BJT-Transistoren!
PWM Signal Generator - Grundlagen
Alles was du über PWM (Pulsweitenmodulation) und Oszilloskope wissen musst
Was ist PWM?
PWM (Pulse Width Modulation) ist eine Modulationstechnik, bei der ein digitales Signal mit fester Frequenz erzeugt wird, dessen Tastverhältnis (Duty Cycle) variiert werden kann.
- LED-Helligkeitssteuerung
- Motordrehzahlregelung
- Servo-Ansteuerung
- DC-DC Wandler
- Class-D Audio-Verstärker
- E-Auto Ladesteuerung (IEC 61851)
Duty Cycle (Tastverhältnis)
Der Duty Cycle gibt an, wie lange das Signal im HIGH-Zustand ist, im Verhältnis zur gesamten Periodendauer.
Oszilloskop Einstellungen
TIME/DIV (Zeitbasis)
Bestimmt die Zeit pro horizontaler Division (Kästchen) auf dem Bildschirm.
• 1 Kästchen = 100 ms
• 10 Kästchen (volle Breite) = 1 Sekunde
• Ein 2 Hz Signal (0,5s Periode) benötigt 5 Kästchen
VOLTS/DIV (Vertikalverstärkung)
Bestimmt die Spannung pro vertikaler Division auf dem Bildschirm.
• 1 Kästchen = 1 Volt
• 8 Kästchen (volle Höhe) = 8 Volt (±4V vom Mittelpunkt)
• Ein 5V Signal nutzt 5 Kästchen
HIGH und LOW Level
Die Spannungspegel des PWM-Signals können frei eingestellt werden:
HIGH Level
Die Spannung im eingeschalteten Zustand. Typische Werte: 3.3V, 5V, 12V, 24V
LOW Level
Die Spannung im ausgeschalteten Zustand. Meist 0V, kann aber auch negativ sein (z.B. -5V für bipolare Signale)
AUTO Funktion
Der AUTO Button berechnet automatisch die optimalen Oszilloskop-Einstellungen:
- Passt TIME/DIV an die Signalfrequenz an
- Zeigt optimal 2-3 Perioden auf dem Bildschirm
- Skaliert VOLTS/DIV passend zum Spannungsbereich
- Aktiviert Grid und Labels für beste Sichtbarkeit
Bedienung der Dials
Maus Drag
Halte die Maus auf dem Dial gedrückt und ziehe nach oben/unten um Werte zu ändern
Direkteingabe
Klicke auf die Wert-Anzeige um einen Wert direkt einzugeben. Enter zum Bestätigen.
Mausrad
Verwende das Mausrad während der Eingabe um schnell durch die Werte zu scrollen
Typische Anwendungen
LED Dimmen
Frequenz: 100 Hz - 20 kHz
Spannung: 3.3V oder 5V
Duty: 0-100% = Helligkeit
Class-D Audio
Frequenz: 200-500 kHz
Spannung: ±12V bis ±24V
Filter: RC-Tiefpass nötig
E-Auto Laden
Frequenz: 1 kHz (±25 Hz)
Spannung: 12V
Standard: IEC 61851-1
Motor Control
Frequenz: 15-30 kHz
Spannung: 12V, 24V, 48V
Duty: 0-100% = Drehzahl
Tastenkombinationen
Modul-Einstellungen
Allgemeine Einstellungen für das PWM Signal Generator Modul. Dieses Modul ist Teil des PF_ElektronikLabor Systems.
Oszilloskop-Einstellungen
Die Oszilloskop-Einstellungen wurden ausgelagert!
Alle Einstellungen für das PWM-Oszilloskop (Frequenzbereich, Gitter-Dichte, Signal-Farben, Presets, etc.) findest du jetzt direkt beim Oszilloskop über das Zahnrad-Symbol in der rechten oberen Ecke des Oszilloskops.
Vorteil: Schnellerer Zugriff und bessere Übersicht direkt dort, wo du die Änderungen siehst!
Erscheinungsbild
Verhalten
Integration (PF_ElektronikLabor)
Erweitert
Hinweis: Dieses Modul ist Teil des PF_ElektronikLabor Systems und kann auch als eigenständiges Tool verwendet werden.
Version: 1.1.2b | PFWS: 1.4.1.3.27
PWM auf Mikrocontrollern programmieren
Hier findest du praktische Code-Beispiele für die gängigsten Mikrocontroller-Plattformen:
Arduino (AVR)
// PWM auf Pin 9 (Arduino Uno)
const int pwmPin = 9;
void setup() {
pinMode(pwmPin, OUTPUT);
}
void loop() {
// Helligkeit von 0-255 (8-bit PWM)
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(pwmPin, brightness);
delay(10);
}
// PWM-Frequenz ändern (Pin 9 & 10):
// TCCR1B = TCCR1B & 0b11111000 | 0x01; // 31kHz
}
Hardware-PWM Pins: 3, 5, 6, 9, 10, 11 (Uno)
Frequenz: Standard ~490Hz (Pin 5, 6) oder ~980Hz (Pin 9, 10, 11)
Auflösung: 8-bit (0-255)
ESP32
// PWM mit LEDC (LED Control)
const int pwmPin = 25;
const int pwmChannel = 0;
const int pwmFreq = 5000; // 5 kHz
const int pwmResolution = 10; // 10-bit (0-1023)
void setup() {
ledcSetup(pwmChannel, pwmFreq, pwmResolution);
ledcAttachPin(pwmPin, pwmChannel);
}
void loop() {
// Duty Cycle von 0-1023
for (int dutyCycle = 0; dutyCycle <= 1023; dutyCycle++) {
ledcWrite(pwmChannel, dutyCycle);
delay(5);
}
}
PWM Channels: 16 unabhängige Kanäle (0-15)
Frequenz: Frei wählbar (1Hz - 40MHz)
Auflösung: 1-16 bit konfigurierbar
Raspberry Pi Pico (MicroPython)
from machine import Pin, PWM
import time
# PWM auf GPIO 15
pwm_pin = PWM(Pin(15))
pwm_pin.freq(1000) # 1 kHz
# Duty Cycle von 0-65535 (16-bit)
for duty in range(0, 65536, 1000):
pwm_pin.duty_u16(duty)
time.sleep(0.05)
PWM Pins: Alle GPIO-Pins unterstützen PWM
Frequenz: 7Hz - 125MHz
Auflösung: 16-bit (0-65535)
STM32 (HAL)
// Timer-basiertes PWM (z.B. TIM2, Channel 1)
htim2.Instance = TIM2;
htim2.Init.Prescaler = 84 - 1; // 84 MHz / 84 = 1 MHz
htim2.Init.Period = 1000 - 1; // 1 MHz / 1000 = 1 kHz
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_PWM_Init(&htim2);
// PWM starten
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
// Duty Cycle setzen (0-999)
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 500); // 50%
Timer: Mehrere Timer mit je 4 Channels
Frequenz: Hochflexibel durch Prescaler/Period
Auflösung: 16-bit (0-65535)
Praktische Tipps
- LED-Flimmern vermeiden: Frequenz > 100Hz (besser 500Hz-5kHz)
- Motor-Steuerung: 20-25kHz (außerhalb des hörbaren Bereichs)
- Servo-Signale: 50Hz mit 1-2ms Pulsbreite
- Audio-PWM: Mindestens 40kHz für Class-D Verstärker
- Externe Treiber: Bei >500mA immer Transistor/MOSFET verwenden!