Wie bereits erwähnt, muss eine ansteigende Funktion mit ausreichender Steilheit hinzugefügt werden, so dass keine subharmonischen Oszillationen auftreten. Dies wird als Stromanstiegs-Kompensation bezeichnet. Die Oszillationen werden vom Stromrückkopplungskreis verursacht, der in seiner Übertragungsfunktion im Hochfrequenz-Term FH(s) eine doppelte Polstelle aufweist. Die Resonanzüberhöhung der doppelten Polstelle - bei halber Schaltfrequenz - wird gedämpft, indem die Güte Q bei der Berechnung der Stromanstiegs-Kompensation in Gleichung (2) auf 1 gesetzt wird.
Für die digitale Implementation eignen sich die Mikrocontroller der Piccolo-Reihe von Texas Instruments besonders gut, da sie über dedizierte Module verfügen, um ansteigende Funktionen zu erzeugen. Der D/A-Umsetzer des Piccolo-µC enthält ein solches Modul, das für die Implementierung der Stromanstiegs-Kompensation verwendet wird und eine Treppenfunktion [5] erzeugt.
In Bild 2 erhält der D/A-Umsetzer zu Beginn sein Eingangssignal vom Ausgang des Reglers, wobei das Ausgangsignal um den Faktor K verstärkt wird. Dadurch wird der Anfangswert des geforderten Stromreferenzsignals gesetzt, bevor die Stromanstiegs-Kompensation greift. Der gemessene Strom wird mit diesem Referenzstrom verglichen.
Der Zähler im DAU dekrementiert anschließend den D/A-Umsetzer bei jedem Systemtakt um einen festgelegten Wert (DecVal). Dadurch wird, wie bei der analogen Stromanstiegs-Kompensation, ein negativer Anstieg des Stromreferenzsignals erzeugt und Oszillationen werden effektiv gedämpft (Bild 4).
Die benötigte Höhe für die ansteigende Funktion (DigitalRampHeight) muss zuerst vom DAU in einen digitalen Wert umgesetzt werden:

Der Wert, um den der D/A-Umsetzer bei jeder Taktperiode dekrementiert wird, kann anhand der Höhe, der Schaltfrequenz fS und der Taktfrequenz fT ermittelt werden:

Wird mit der Controlsuite programmiert, können diese Gleichungen dazu verwendet werden, die richtigen Werte in den jeweiligen Registern einzutragen (siehe Teil 2). In der CSL-Programmier-umgebung (Chip Support Library) können dedizierte CSL-Funktionen bei der Initialisierung aufgerufen werden, um diese Werte automatisch zu setzen.
Spezielle Funktionen zum Programmieren linear steigender Funktionen
Zuerst wird das Rampen-Submodul mit der Funktion CMP_rampConfig() konfiguriert. Dadurch wird das entsprechende Rampen-Submodul mit einem PWM-Modul verbunden. Anhand eines PWM-Synchronimpulses wird die ansteigende Funktion zu Beginn jeder Periode auf den Anfangswert zurückgesetzt.
CMP_rampConfig( CMP_MOD_2,
PWM_MOD_1 );
Bei jeder Taktperiode wird der D/A-Umsetzer um den Wert DecVal dekrementiert. Dieser Wert wird mit der Funktion CMP_setRampDec() gesetzt, nachdem das Rampen-Submodul konfiguriert wurde. Der nötige Spitze-Spitze-Wert der analogen Stromanstiegs-Kompensation, anhand der Gleichung (2) zu errechnen, kann über die von Biricha Digital Power implementierte CSL-Funktion CMP_calc-Ramp() berechnet werden.
Für diese Funktion sind das digitale Äquivalent der Höhe für die ansteigende Funktion sowie die Periodendauer des PWM-Signals erforderlich. Das digitale Äquivalent der Höhe wird mit der Funktion CMP_mVtoRampValue() berechnet. Wenn z.B. ein Anstieg von 1.500 mV für die Kompensation eines 200-kHz-PWM-Signals erforderlich ist, würden während der Initialisierung die folgenden Funktionen aufgerufen:
period = PWM_freqToTicks(200000);
decval = CMP_calcRampDec(
CMP_mVtoRampValue(1500),
period );
CMP_setRampDec( CMP_MOD_2, decval );
Der Anfangswert für die Strom-anstiegs-Kompensation wird mit der Funktion CMP_set-RampMax() zu Beginn der Periode auf den Wert des Reglerausgangs oder des Referenzstroms gesetzt. Diese Funktion wird in der Interrupt-Routine des A/D-Umsetzers aufgerufen, nachdem der Reglerausgang berechnet wurde.
Austasten der Anstiegsflanke
Das Messsignal des Spulenstromes enthält Schaltrauschen. Während des Einschaltens entstehen hohe Stromspitzen, die möglicherweise den Komparator auslösen und eine Dekrementierung veranlassen könnten. Um dies zu verhindern, ermöglicht das Komparatormodul im Piccolo-Mikrocontroller, die Anstiegsflanke auszutasten (Leading Edge Blanking). Innerhalb eines festgelegten Zeitfensters ignoriert der Mikrocontroller den Ausgang des Komparators.
Dazu muss der Entwickler die erforderliche Dauer des Austastfensters in Nanosekunden festlegen. Dies kann entweder mit der Programmierumgebung Controlsuite von Texas Instruments erfolgen oder durch Aufrufen der CLS-Funktion PWM_setBlankingWindow(). Es sollte ein Anfangswert gesetzt und dessen Eignung mit einem Oszilloskop geprüft werden. In Bild 5 ist ein Abtastfenster von 420 ns dargestellt. Dieses kann anhand der folgenden Funktionen gesetzt werden.
PWM_configBlanking( PWM_MOD_1,
PWM_CMP_COMP2,
GPIO_NON_INVERT,
true );
PWM_setBlankingWindow( PWM_MOD_1,
PWM_nsToTicks(420) );
Die zuerst aufgerufene Funktion PWM_configBlanking() konfiguriert das digitale Komparator-Submodul des Pulsweitenmodulators so, dass der Komparatorausgang als Ereignisauslöser dient.