Pulsecodemodulation in C?!
-
Alle haben recht
Brushless (DC) Motoren, wie sie heute z.B. in Elektroantrieben für Modellflugzeuge (und nicht nur dort) verwendet werden, haben einen Controller zur Steuerung, der ein 3-Phasen-Drehfeld mit veränderbarer Frequenz erzeugt. Jede Phase hat aber auch eine "PWM-"Regelung, d.h, das Puls-Pause-Verhältnis ist je nach erforderlicher Wellenleistung unterschiedlich groß. In den Pausen wird auch die durch die Gegeniduktivität erzeugte Spannung gemessen, damit die Drehfeldfrequenz (und das Puls-Pause-verhältnis) je nach Last und Stellvorgabe (= Drehzahl) nachgeregelt werden kann.
Mit der seriellen Schnittstelle wird nach der hier beschriebenen Methode ein Wechselspannungs-"Sinus" ausgegeben. 10% entsprechen ca. +10V und 90% ca. -10V. Hatte ich schon weiter oben erwähnt.
Die angegebene Frequenz ist jedoch rein theoretisch. Sie setzt voraus, dass der Integrationskondensator eine gleichbleibende Spannung über EIN Impulsdiagramm erzeugt. Tut er aber nicht. Es sind für einen Fehler von ca. 10% (+-5%) ungefähr 4 Integrationsperioden notwendig. D.h., ein "Sprung" der Ausgangsspannung von 10% auf 20% erfordert 4 aufeinanderfolgende GLEICHE Impulsdiagramme. Die so erzeugte Frequenz ist also nur ein Viertel so hoch wie weiter oben errechnet. Für größere Sprünge dauert es noch länger, sind aber bei dem aus einem Dreieck angenäherten Sinus nicht erforderlich.Das bedeutet aber auch, dass Signale mit steilen Flanken (Rechteck) auf diese Weise nicht erzeugt werden können.
Blackbird