Initialisiere Module …

PWM Signal Generator

v1.1.2b | Elektronik Labor
Gast | Gast-Modus 0
53%
2.0 Hz
Signal Level anpassen
HIGH (2.23V)
LOW (-2.29V)
Periode 500 ms
ON-Zeit 250 ms
OFF-Zeit 250 ms
Avg. Power 50%
OSZILLOSKOP STEUERUNG
100 ms/div
1 V/div
ANWENDUNGEN
Signalübersicht

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.

Oszilloskop-Einstellungen

Frequenzbereich

Aktuelle Einheit: Hz
Kleinste einstellbare Frequenz
Größte einstellbare Frequenz

Anzeige

50px
3px

Oszilloskop Einstellungen

Zeit pro horizontalem Kästchen (10 Kästchen = gesamter Bildschirm)
Spannung pro vertikalem Kästchen (8 Kästchen = gesamte Höhe)
Spannung im HIGH-Zustand
Spannung im LOW-Zustand

Farben

Vorgefertigte Farbkombinationen
Vorschau:

Presets

Zurücksetzen

Farben, TIME/DIV, VOLTS/DIV, Grid & Labels
Oszilloskop-Steuerung & Anwendungs-Visualisierung

Teilen & Speichern

📚 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!

PWM Input (ESP32 Pin) R₁ = 1kΩ B C E 2N2222 R₂ 220Ω +5V GND I₈ ≈ 4mA Iᴄ ≈ 20mA Status: Sättigung (ON) PWM: 50% LED: 50% Hell
Spannungen

VCC: 5V

VBE: ~0.7V (aktiv)

VCE(sat): ~0.2V

Ströme

IB: ~4mA (max)

IC: ~20mA (LED)

hFE: ~100 (Gain)

Funktion

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.

Hauptanwendungen:
  • 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.

Formel:
Duty Cycle (%) = (THIGH / TPERIODE) × 100
0% Duty Cycle: Signal immer LOW (aus)
50% Duty Cycle: Signal 50% HIGH, 50% LOW
100% Duty Cycle: Signal immer HIGH (an)

Oszilloskop Einstellungen

TIME/DIV (Zeitbasis)

Bestimmt die Zeit pro horizontaler Division (Kästchen) auf dem Bildschirm.

Beispiel: Bei 100 ms/div bedeutet dies:
• 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.

Beispiel: Bei 1 V/div bedeutet dies:
• 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)

Tipp: Klicke auf das Oszilloskop-Display um die Signal-Level anzupassen!

AUTO 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
Schnelltipp: Drücke AUTO nach jeder Frequenzänderung für die beste Darstellung!

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

ESC Eingabe abbrechen / Dialog schließen
Enter Eingabe bestätigen
Mausrad ↑/↓ Werte während Eingabe ändern

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

Farbschema des Moduls
Geschwindigkeit der UI-Animationen
Reduzierte Abstände für mehr Inhalt

Verhalten

Oszilloskop bei Änderungen sofort aktualisieren
Hilfe-Tooltips bei Mouse-Over anzeigen
Letzte Einstellungen beim nächsten Start wiederherstellen

Integration (PF_ElektronikLabor)

Synchronisation mit anderen Labor-Modulen
Standard-Format für Datenexport

Erweitert

Erweiterte Konsolenausgabe für Entwickler
Grafik-Performance vs. Energie-Effizienz

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!
Bestätigung erforderlich