Viele Anwendungen arbeiten mit einer Pulsweitenmodulation (PWM), die eine Auflösung von weniger als acht Bit aufweist. In einigen Fällen, zum Beispiel beim Dimmen von Lampen, ist jedoch eine höhere Auflösung erforderlich, um der Empfindlichkeit des menschlichen Auges zu genügen. Bei der herkömmlichen PWM sorgt ein Timer für eine gleichmäßige Schaltfrequenz. Ein asynchroner Zähler (Ripple Counter) stellt fest, wie lange der Ausgang auf „High“ gehalten wird, bevor der Puls endet. Die Ausgangspulsbreite wird angepasst, um verschiedene Tastgrade bereitzustellen.
Auflösung der Pulsweitenmodulation berechnen
Die effektive Auflösung einer PWM, gemessen in Bits, lässt sich aus dem Logarithmus zur Basis zwei der möglichen Pulsbreiteneinstellungen berechnen. Für einen Baustein mit 16 MHz beträgt die kleinste Tastgradanpassung 62,5 Nanosekunden, ein Systemtakt. Ist die Pulsweitenmodulation für eine Schaltfrequenz von 200 kHz – fünf Mikrosekunden Schaltperiode – konfiguriert worden, ergeben sich 100 Prozent Tastgrad wenn das Tastgrad-Register auf 80 Takte (80 x 62,5 ns = 5 µs) eingestellt ist. Damit würde die effektive Auflösung nur wenig mehr als sechs Bits betragen, da aus 80 Stufen ausgewählt werden kann. Ein Systemtakt unterteilt sich in einer Periode
80 Mal. Mit 80 möglichen Tastgradschritten lässt sich ein genauer Wert für die Auflösung berechnen.
Eine PWM, die über einen 16-MHz-Takt betrieben wird und ein 10-Bit-Tastgrad-Register aufweist, verliert aufgrund dieser Einschränkung bei einer Schaltfrequenz von 15,6 kHz
immer mehr an Auflösung. Bei höheren Schaltfrequenzen erreicht der Tastgrad 100 Prozent bevor alle Schritte im 10-Bit-Tastgrad-Register verwendet werden. Für alle verbleibenden Werte bleibt der Ausgang bei einem Tastgrad von
100 Prozent. Die Frequenz, an der dieser Punkt erreicht wird, kann ebenfalls berechnet werden.
In den meisten PWM-Anwendungen, wird die Modulation bei einer wesentlich höheren Frequenz geschaltet als sich der Ausgang ändern kann. Das Filtern dieses Signals über einen Tiefpassfilter erzeugt den gewünschten Ausgang. Der Filter entfernt die Hochfrequenz-Schaltanteile (HF) der PWM, indem er den Durchschnittswert des Signals am Ausgang bereitstellt.
In einem Schaltnetzteil ist die Ausgangsspannung daher direkt proportional zum Tastgrad. Je kleiner die Anpassung daran ist, desto kleiner ist die entsprechende Ausgangsänderung. Damit ergibt sich eine genauere Regelung des Ausgangs. Aus der Sicht der Systemsteuerung führen kleine Anpassungen des Ausgangs zu einem niedrigeren Quantisierungsgewinn der PWM. In Steuerungssystemen führt diese geringere Verstärkung zu stabileren Systemen.
Eine PWM weist zwei wesentliche Aspekte auf: einen sich wiederholenden Trigger beziehungsweise Auslöser, der bestimmt, wie oft die Schaltperiode oder die Schaltfrequenz gepulst wird und einen Einzelpuls-Generator, der bestimmt, wie breit die Pulse sind.
Design für hochauflösende Modulation
Um die effektive PWM-Auflösung zu erhöhen, lässt sich mit dem NCO (Numerically Controlled Oscillator) eines Mikrocontrollers (MCU), zum Beispiel einer PIC MCU von Microchip, ein monostabiler Schaltkreis erzeugen, der beim Triggern einen einzelnen Impuls mit fester Dauer ausgibt. Der Oszillator erzeugt ein Signal, das in einem bestimmten Verhältnis zwischen zwei Werten variiert. Damit wird eine durchschnittliche Pulsbreite erzeugt, die einen Wert zwischen zwei Systemtakten einnimmt. Die Signalpulsbreite variiert durch Jitter und Dither um eine Taktperiode, wobei der Anteil oder das Verhältnis der Abweichung durch die NCO-Konfiguration genau bestimmt wird.
Bei jeder Anwendung, in der am Ausgang ein Durchschnittswert erzeugt wird, wie die Durchschnittsleistung für die Last in Schaltnetzteilen oder Beleuchtungen, ist die Variation der Pulsbreite kein Problem, da die durchschnittliche Pulsbreite genau geregelt wird.
Der NCO selbst kann kein PWM-Signal erzeugen, aber sein Verhalten lässt sich durch Hinzufügen einer konfigurierbaren Logikzelle (CLC) verändern, um einen Ausgang bereitzustellen. Das erfolgt über die herkömmliche PWM als Taktquelle zum Auslösen der Periode. Der NCO dient dabei zum Bestimmen der Pulsbreite. Eine beliebige Anzahl von Taktquellen kann verwendet werden, wie zum Beispiel Timer oder sogar externe Signale. In einigen Anwendungen kann ein externer Trigger zum Pulsstart verwendet werden, beispielsweise ein Nullstromerkennungsschaltkreis für Stromversorgungen. Die Steuerungslogik in der CLC stellt den Ausgangswert ein sobald der Schalttakt den nächsten Puls vorgibt. Sie löscht außerdem den Ausgang, um den Puls zu beenden sobald der NCO überläuft.
Von Impulsen, Takten bis zum Überlaufen
Abbildung 2 beschreibt die Implementierung des Designs mit dem NCO und der CLC. Dazu befindet sich der Oszillator im Pulsfrequenzmodus, bei dem ein kurzer Impuls erzeugt wird, sobald er überläuft. Beim Einschalten ist der NCO-Ausgang auf Low, da er auf ausreichend Takte wartet, bevor er überläuft und einen Puls erzeugt. Dieser niedrige Ausgangspegel wird invertiert, sodass der PWM-Ausgang High wird. Damit wird ein schneller Takt zurück an den NCO-Taktpin gekoppelt.
Der PWM-Ausgang bleibt hoch, bis der Akkumulator überfließt und sich der NCO-Ausgang ändert. Damit stoppt die Takterzeugung, die für den Betrieb des Oszillators erforderlich ist. Zu diesem Zeitpunkt befindet sich der NCO auf High, bis er die erforderlichen Takte zur Beendigung des Pulses erhält. Der Ausgang ist noch auf Low. Die Taktquelle gibt einen
High-Puls aus, sobald die nächste Periode beginnt. Der schnelle Takt wird an den NCO zurückgekoppelt. Der Oszillator nutzt diese wenigen Takte, um den Impuls abzuschließen. Der Ausgang geht zurück auf Low, und der Vorgang beginnt von neuem.
Die Zeitdauer bis der NCO überläuft hängt von dem Restbetrag im Akkumulator ab, der nach dem letzten Overflow dort verblieben ist, außerdem vom Inkrement-Register. Aufgrund der Akkumulation dieser Restbeträge, ist der Puls manchmal einen Takt kürzer als normal. Durch die Überwachung, wie oft dies geschieht – Einstellung des Inkrement-Registers –, lässt sich die genaue durchschnittliche Pulsbreite regeln.
Die Berechnung der Pulsbreite entspricht der NCO-Overflow-Frequenzberechnung. Die durchschnittliche Overflow-
Frequenz des Oszillators bestimmt die erzeugte, durchschnittliche Ausgangspulsbreite. Der NCO ist so ausgelegt, dass er eine lineare Regelung über der Frequenz ermöglicht. Die Regelung über der Pulsbreite ist folglich nicht linear. Die effektive Auflösung der Pulsweitenmodulation ist daher über den gesamten Bereich von 0 bis 100 Prozent Tastgrad nicht konstant. Für jede Tastgrad-Einstellung lässt sich die effektive Auflösung berechnen und in einem Diagramm darstellen. Diese Kurve verändert sich entsprechend der Schaltfrequenz. Die Pulsbreite wird unabhängig von der Schaltfrequenz angepasst.
Pulsbreitenänderung im Pikosekunden-Bereich
Herkömmliche PWMs verlieren ihre effektive Auflösung bei relativ niedrigen Schaltfrequenzen. Für Anwendungen, in denen die Schaltfrequenz und die PWM-Auflösung sehr hoch sein müssen, kann der NCO zusammen mit der CLC verwendet werden, um einen hochauflösenden PWM-Ausgang zu erzeugen.
Die kleinste inkrementelle Änderung der Pulsbreite, die über eine herkömmliche PWM mit 16-MHz-Systemtakt erzielt werden kann, beträgt 62,5 ns. Beträgt der schnellstmögliche PWM-Takt ein Viertel der Frequenz des Oszillators (fosc), steigt dieser Wert auf 250 ns. Mit dem gleichen Baustein lässt sich mit dieser Technik eine PWM mit einer inkrementellen Pulsbreitenänderung von nur 15 Pikosekunden (ps) erzeugen.
Selbst wenn die Forderung primär keine hohe Auflösung ist, kann diese Methode für verschiedene Anwendungen von Interesse sein: das Hinzufügen einer zusätzlichen PWM zur Bausteinfunktion oder eine frequenzvariable PWM mit konstanter Ein-/Auszeit. Dabei wird der Puls nach Bedarf extern ausgelöst – beim Nullstromschaltvorgang in hocheffizienten Leistungswandlern.