Timer-Prescaler & PWM-Frequenz-Berechnung

PWM-Frequenz und Auflösung sind dieselbe Entscheidung

Warum jeder Prescalerschritt Auflösung kostet, wie die APB-Taktverdopplung ganze Projekte um den Faktor zwei verschiebt und was mittenzentrierte PWM bei Motorsteuerungen wirklich bringt.

Eine Formel, ein Zielkonflikt

Ein Timer zählt Takte. Der Prescaler teilt den Eingangstakt, das Autoreload-Register legt fest, bei welchem Zählerstand von vorn begonnen wird. Daraus ergibt sich alles Übrige:

fPWM = fTimer / ( (PSC + 1) · (ARR + 1) )PSC = Prescaler-Register · ARR = Autoreload-Register
Beide werden um eins vermindert gespeichert – PSC = 0 bedeutet Teiler 1.

Die zweite, weniger beachtete Gleichung ist die wichtigere:

Stufen = ARR + 1    Auflösung = log2( ARR + 1 )ARR bestimmt beides zugleich: die Frequenz und die Feinheit des Tastgrads.

Frequenz und Auflösung sind damit nicht unabhängig voneinander. Wer die PWM-Frequenz verdoppelt, halbiert die Zahl der Tastgradstufen – bei gleichem Takt gibt es keinen Ausweg. Die einzige Stellschraube, die beides verbessert, ist ein höherer Timer-Takt.

Timer-TaktPWM-FrequenzStufenAuflösung
170 MHz20 kHz850013,05 bit
72 MHz20 kHz360011,81 bit
72 MHz100 kHz7209,49 bit
16 MHz100 kHz1607,32 bit

Die letzte Zeile zeigt die Grenze: 160 Stufen bedeuten, dass der Tastgrad in Schritten von 0,6 % springt. Bei einer LED fällt das nicht auf, bei einer Motorsteuerung sind es hörbare Stufen im Drehmoment und sichtbare Stufen in der Drehzahl.


Der Prescaler ist der Feind der Auflösung

Ein häufiges Muster in Beispielcode: Prescaler auf einen glatten Wert setzen, damit der Timer „1 MHz“ zählt, und dann mit ARR die Frequenz einstellen. Das rechnet sich im Kopf angenehm und wirft Auflösung weg.

Beispiel: 170 MHz Timer-Takt, PWM mit 20 kHz. Mit PSC = 169 zählt der Timer mit 1 MHz, ARR wird 49 – das sind 50 Stufen, also 5,6 bit. Mit PSC = 0 wird ARR = 8499, das sind 8500 Stufen und 13 bit. Dieselbe Frequenz, der Faktor 170 an Auflösung.

Die Regel ist deshalb einfach: Prescaler auf null lassen, solange ARR in den Zähler passt. Erst wenn der benötigte ARR-Wert 65535 übersteigt – bei 16-bit-Timern also unterhalb von etwa 2,6 kHz bei 170 MHz – wird der Prescaler notwendig. Viele moderne Mikrocontroller bieten 32-bit-Timer, bei denen sich die Frage kaum noch stellt.


Rechner: Prescaler, ARR und Auflösung

Takt und Zielfrequenz eintragen – der Rechner liefert Registerwerte, erreichte Frequenz mit Abweichung, Auflösung in Bit und Stufen sowie die Rechenlast der Interrupt-Routine.

Registerwerte PSC 0 ARR 8499
Erreichte Frequenz 20,000 kHz Abweichung 0,000 %
Auflösung 13,05 bit 8500 Stufen à 5,9 ns
Interrupt-Periode 50,0 µs bei einem Update je PWM-Periode
Rechenlast durch die ISR 20,0 % 10,0 µs von 50,0 µs
Kleinste Pulsbreite 5,9 ns ein Zählschritt

fPWM = fTimer / ((PSC+1) · (ARR+1)). Der Rechner sucht den kleinsten Prescaler, bei dem ARR noch in den Zähler passt – jeder Prescalerschritt kostet Auflösung.


Die Taktfalle: welcher Takt gilt eigentlich?

Der häufigste Fehler bei STM32-Timern liegt nicht in der Formel, sondern in der Eingangsgröße. Timer hängen an einem Peripheriebus, und dort gilt eine Regel, die man einmal übersehen und dann lange suchen kann:

Ist der APB-Prescaler gleich 1, entspricht der Timer-Takt dem Bustakt. Ist er größer als 1, wird der Timer-Takt verdoppelt.

Ein Beispiel: Der Systemtakt beträgt 72 MHz, APB1 läuft mit Teiler 2 auf 36 MHz. Ein Timer an APB1 zählt trotzdem mit 72 MHz, nicht mit 36. Wer 36 einsetzt, bekommt die halbe Frequenz – oder wundert sich, warum ein Servo mit 25 Hz statt 50 Hz angesteuert wird und nicht reagiert.

Verlässlich ist nur der Blick in die Taktkonfiguration: Bei den Konfigurationswerkzeugen der Hersteller steht der Timer-Takt gesondert neben dem Bustakt. Wer ohne Werkzeug arbeitet, rechnet ihn aus dem Referenzhandbuch nach – und misst zur Sicherheit einmal mit dem Oszilloskop an einem freien Pin.


Mittenzentriert oder flankenzentriert

Im Normalbetrieb zählt der Timer von null bis ARR und beginnt von vorn. Der Ausgang schaltet also immer zum selben Zeitpunkt ein und je nach Tastgrad später aus – die steigende Flanke liegt fest, die fallende wandert.

Im mittenzentrierten Betrieb zählt er hoch und wieder herunter. Der Puls liegt dann symmetrisch um die Periodenmitte, beide Flanken wandern gleichmäßig nach außen:

fPWM = fTimer / ( (PSC + 1) · ARR · 2 )Der Faktor 2 kostet gegenüber dem flankenzentrierten Betrieb genau ein Bit Auflösung.

Bei Motorsteuerungen ist dieser Preis fast immer gerechtfertigt. Die symmetrische Anordnung reduziert die Oberwellen im Ausgangsstrom spürbar, und bei mehrphasigen Brücken fallen die Schaltflanken der Phasen nicht mehr zusammen – das entlastet den Zwischenkreiskondensator und senkt die Störabstrahlung. Für LED-Dimmung oder Heizungsansteuerung dagegen ist es verschenkte Auflösung.


Totzeit bei Halbbrücken

Sobald zwei Schalter in Reihe an derselben Zwischenkreisspannung liegen, darf es keinen Moment geben, in dem beide leiten. Ein einziger solcher Moment ist ein Kurzschluss über die Versorgung, und er dauert nur so lange, bis etwas durchbrennt.

Fortgeschrittene Timer erzeugen die nötige Totzeit in Hardware – und nur dort gehört sie hin. Eine in Software eingefügte Verzögerung ist von Interrupts abhängig und damit keine Sicherheit. Die Größenordnung ergibt sich aus den Schaltzeiten:

tTot ≥ taus,max − tein,min + ReserveMOSFET mit Treiber: typisch 100 bis 500 ns · IGBT: 1 bis 3 µs
Zu den Schaltzeiten kommen Streuung des Treibers und Laufzeit der Ansteuerung.

Die Totzeit ist kein reiner Sicherheitszuschlag, sie verzerrt auch: Während ihrer Dauer bestimmt die Stromrichtung den Ausgangspegel, nicht der Sollwert. Bei kleinen Tastgraden und hoher PWM-Frequenz kann die Totzeit einen erheblichen Anteil der Periode ausmachen – bei 100 kHz und 500 ns Totzeit sind es fünf Prozent. Regelungen für Motoren kompensieren das rechnerisch.


Die Interrupt-Last mitrechnen

Eine PWM-Periode ist zugleich ein Zeitraster für die Regelung. Bei 20 kHz bleiben zwischen zwei Update-Ereignissen 50 µs – in denen Strommessung, Reglerberechnung und das Setzen der neuen Vergleichswerte Platz finden müssen.

Last = tISR · fPWM10 µs ISR bei 20 kHz ergeben 20 % Rechenlast – allein für die Regelung.

Diese Rechnung wird gern erst gemacht, wenn das System bereits sporadisch ausfällt. Zwei Punkte lohnen die frühe Beachtung: Erstens ist die ISR-Dauer nicht konstant – Verzweigungen, Divisionen und Speicherzugriffe streuen. Ausgelegt wird gegen den längsten Fall, nicht gegen den Mittelwert. Zweitens braucht auch der Rest des Systems Rechenzeit; oberhalb von etwa fünfzig Prozent Last durch eine einzelne ISR wird es eng.

Wenn es knapp wird, ist die Regelung auf jeden zweiten PWM-Zyklus zu legen häufig die einfachste Lösung: Die Schaltfrequenz bleibt hoch genug, um unhörbar zu sein, die Regelrate halbiert sich, und das fällt bei trägen Regelstrecken nicht ins Gewicht.


Checkliste

1. Den tatsächlichen Timer-Takt prüfen, nicht den Systemtakt und nicht den Bustakt. Bei STM32 verdoppelt sich der Timer-Takt, sobald der APB-Prescaler größer als eins ist.

2. Prescaler auf null lassen, solange ARR in den Zähler passt. Jeder Teilerschritt kostet Auflösung.

3. Auflösung gegen die Anwendung prüfen. Unter 8 bit ist für Motorsteuerung meist zu grob, für Beleuchtung ausreichend.

4. Totzeit in Hardware erzeugen, nicht in Software – und den Wert aus den Schaltzeiten des konkreten Treibers ableiten, nicht aus einem Beispielprojekt übernehmen.

5. Erste Messung am Oszilloskop, bevor Leistung an der Brücke liegt. Frequenz, Tastgrad und Totzeit sind in wenigen Sekunden verifiziert – ein Rechenfehler an einer Halbbrücke ist teurer.


Gehäuse und Bauteile aus dem 3D-Druck

Zu jeder Baugruppe gehört ein Gehäuse. Wir konstruieren es parametrisch und drucken es im eigenen Labor – FDM für stabile Funktionsteile, SLA für feine Details. Vom ersten Prototyp bis zur Kleinserie, inklusive Nachbearbeitung und Gewindeeinsätzen. Das Erstgespräch ist unverbindlich.

Telefon: +49 (0) 176 820 42391


Weiterlesen

ADC-Eingangsbeschaltung: Quellimpedanz & Sampling-Zeit – die Strommessung, die in dieselbe Interrupt-Routine gehört.
Wärmeabfuhr & Thermal Vias – wohin die Verlustleistung der Halbbrücke geht.
Alle Engineering Guides

Die Registernamen PSC und ARR sowie die Taktverdopplung am APB beziehen sich auf die STM32-Familie. Andere Hersteller verwenden andere Bezeichnungen, das Rechenprinzip ist dasselbe. Verbindlich sind die Angaben im Referenzhandbuch des eingesetzten Bausteins.

Nach oben scrollen