> nur 4 Einstellungen
Selbverständlich kann man jede Einstellung verwenden, weil die
Schaltung sich ja auf den Sollwert einstellt. Die Einstellmöglichkeiten
sind aber weniger das Problem dieser Lösung. Sie macht ja im Grunde
nichts anderes, als das voreingestellte Signal zu verrauschen, wie es
dem Prinzip nach auch beim Dithern vorgenommen wird, bevor man es in
einen digitalisieren Wert überführt.
@OT: Sieh Dir mal meinen Artikel zum Dithern an, was das bewirkt.
In der vorgestellten Lösung in den PDFs ist es dabei so, dass man eine
einfache Schaltung benutzt hat und in der Tat wird durch das
"Bitverwursteln" alles mögliche abgetastet und jeder mögliche Zustand
des Signals erfasst. Solange sich das Signal nicht ändert, kann damit
exakt der Mittelwert rekonstruiert werden.
Das Rauschen, dass durch das Bitdrehen entsteht, ist aber keineswegs
optimal und kann mit etwas mehr Aufwand deutlich verbessert werden. Die
Sache läuft dann auf das sogenannte noise shaping hinaus, dass man
pauschal einstellen oder anhand des Spektrums des Nutzsignals optimieren
kann. Das ist aber eine weitergehende Sache, die etwas Einarbeitung
erfordert.
Wenn es nur eine vernüftige PWM sein soll, kann man so vorgehen:
Statt der Bitdrehung empfiehlt sich gfs der Blick auf einen
Sigma-Delta-ADC als DAC. Dabei wird der Verlauf des Signals infolge
des erzeugten PWM-Rechtecks erraten (durch Aufintegrieren gemessen) und
der Bitwert so gesteuert, dass er um das theoretische Integral, also den
sich ändernden Voreinstellungswert, herumregelt. Dies funktioniert schon
sehr gut und übertrifft die obige Lösung in etwa um 3-6dB
ripple-Dämpfung. Man nimmt dann einfach einen Zähler, der die Differenz
zwischen Ist- und Solwert aufaddiert und steuert das höchstwertige Bit
als Vergleichswert an den Eingangswert heran. Das ist dynamischer, als
das einfache hin- und herzählen, das man oft sieht.
Noch besser ist es, wenn man nicht linear integriert, sondern das
Verhalten des dämpfenden RC-Gliedes = Filters inklusive dessen Verlusten
mitrechnet und die Steuerung des PWM-artigen 1-Bit-Signals da herum
aufbaut. Mit einer entsprechenden Regelfrequenz und einem guten Modell
kann man den ripple nach meinen Erkenntnissen nochmals um Faktor 1.5 ...
2.5 reduzieren. Das ist aber nicht so ganz trivial und erfordert etwas
Algorithmik und auch Rechenleistung. Im FPGA lohnt sich das eigentlich
nur dann, wenn man eine ganze Bank an PWM-artigen-Signalen erzeugen und
steuern muss. Ich verwende eine solche Mimik in einer
Motorsteuerapplikation, die einen Schrittmotor so weich und präzise
ansteuern kann, dass dieser mit minimalen Verlusten fast lautlos fährt
und dennoch hohes Reservemoment gegen drohende Schrittverluste aufweist.