Home Home_head.Blog Blog Details

STM32 PWM Prinzip und Anwendung

May 19 2025
Ampheo

Inquiry

blog_detail_desc

QUICK RFQ
ADD TO RFQ LIST
STM32 PWM Prinzip und Anwendung

PWM (Pulse Width Modulation) ist eine grundlegende Technik, die in STM32 und anderen Mikrocontrollern verwendet wird, um analoges Verhalten mit digitalen Signalen zu steuern. Es wird weit verbreitet in Anwendungen wie Motorsteuerung, LED-Helligkeit, Audiosignalerzeugung und mehr.

STM32 PWM Prinzip und Anwendung

🔧 PWM-Prinzip bei STM32

✅ Was ist PWM?

PWM (Pulsweitenmodulation) ist ein digitales Signal mit fester Frequenz, aber variabler Impulsbreite (Duty Cycle).

  • Frequenz: Wie oft sich das Signal pro Sekunde wiederholt (z. B. 1 kHz = 1000 Mal pro Sekunde)

  • Duty Cycle (Tastverhältnis): Der prozentuale Anteil der Zeit, in der das Signal in einem Zyklus HIGH ist.

Beispiele:

  • 0 % Tastverhältnis → Immer LOW

  • 50 % Tastverhältnis → Halb HIGH, halb LOW

  • 100 % Tastverhältnis → Immer HIGH


✅ Wie STM32 PWM erzeugt

STM32 verwendet Timer im PWM-Modus, um PWM-Signale zu erzeugen:

  1. Der Timer zählt bis zu einem bestimmten Wert (ARR – Auto Reload Register).

  2. Wenn der Zähler den Vergleichswert (CCR – Capture Compare Register) erreicht, wird der Ausgang geschaltet.

  3. Der Vergleichswert bestimmt das Tastverhältnis des PWM-Signals.


📐 PWM-Formel

Für einen Timer im Aufwärtszählmodus:

  • PWM-Frequenz = Timer-Takt / ((PSC + 1) * (ARR + 1))

  • Tastverhältnis (%) = (CCR / ARR) * 100

Dabei gilt:

  • PSC = Prescaler (Vorteiler)

  • ARR = Auto-Reload-Wert

  • CCR = Vergleichswert


🛠️ Anwendungsbeispiel: LED-Helligkeitssteuerung

🧱 Hardware

  • STM32F4-Board

  • LED angeschlossen an einen PWM-fähigen Pin (z. B. TIM3_CH1)

⚙️ Konfiguration in STM32CubeMX

  1. Timer auswählen (z. B. TIM3)

  2. PWM-Kanal aktivieren (z. B. CH1) an einem Pin (z. B. PB4)

  3. Prescaler und Periodenwert (ARR) setzen, um Frequenz zu definieren

  4. GPIO als Alternate Function konfigurieren

  5. Im generierten Code __HAL_TIM_SET_COMPARE() verwenden, um das Tastverhältnis zu steuern

📄 Beispielcode

c
 

// PWM starten
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);

// 50 % Tastverhältnis setzen (angenommen ARR = 999)
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 500);

// LED langsam aufhellen
for (int duty = 0; duty <= 1000; duty += 10) {
    __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, duty);
    HAL_Delay(10);
}


🎯 Typische Anwendungen

Anwendung Beschreibung
LED-Dimmen Helligkeit durch variierendes Tastverhältnis
Motorsteuerung Drehzahl oder Richtung über PWM steuern
Servoansteuerung 1–2 ms Impulse bei 50 Hz für Positionssteuerung
Tonerzeugung Tonfrequenzen durch PWM-Frequenz erzeugen
Schaltnetzteile PWM zur Spannungsregelung verwenden

📚 Fazit

PWM beim STM32 wird mithilfe von Timern realisiert und ermöglicht eine hochpräzise, flexible Steuerung. Die Konfiguration ist mit STM32CubeMX einfach umzusetzen und eignet sich hervorragend für Echtzeitanwendungen wie LED-Dimmen, Motorsteuerung oder Signalverarbeitung.

Ampheo
STM32PWMSTM32F4