PWM mit Interrupt synchronisieren

Gast #3439518
Lesenswert?

Hallo zusammen.

Ich erzeuge mit dem angehängten Code, einen 50HZ Sinus (Tiefpass am 
Ausgang)

Nun möchte ich, dass dieser PWM Synchron zum Nulldurchgang der 
Netzspannung ausgegeben wird.

Meine Frage, wie löst man dies? (Ich brauche keinen Code, es geht mir um 
das Theoretische. Umsetzen kann ich es dann selber :) )

Ich bekomme einen Interrupt in meinem Programm, welcher den 0-Durchgang 
signalisiert. Was nun?

Ich möchte wenn möglich, den erzeigten Sinus nicht unterbrechen...



Danke schonmal
Angehängte Dateien:
#3439532
Lesenswert?

Tim schrieb:

> Ich bekomme einen Interrupt in meinem Programm, welcher den 0-Durchgang
> signalisiert. Was nun?

Dann muss logischerweise ucSineTableCounter gerade bei 0 sein.
Wenn nicht, musst du ihn eben auf 0 setzen.

> Ich möchte wenn möglich, den erzeigten Sinus nicht unterbrechen...

d.h. dann bleibt dir nichts anderes übrig als ucSineTableCounter nicht 
einfach fix auf 0 zu setzen, weil ja dann sonst dein Ausgangssinus einen 
Sprung in der Kurve machen würde.

Man könnte ihn zb sanft nachführen, indem man nur einzelne Werte in der 
Tabelle überspringt.

Beim signalisierten 0-Durchgang ist dein ucSineTableCounter zb bereits 
5. Dein Sinus läuft also ein wenig vor. Anstatt ucSineTableCounter hart 
auf 0 zu setzen, verringerst du ihn erst mal um 1.
Beim nächsten signalsierten 0-Durchgang ist die Abweichung noch 4. 
Wieder wird um 1 verringert.
usw. usw.
Bei jedem signalisierten 0-Durchgang siehst du dir den Wert von 
ucSineTableCounter an, und je nach Abweichung korrigierst du ihn, so 
dass sich die Phase deines Sinus mehr und mehr den 0-Durchgängen 
annähert.

Dann springt dein Sinus nicht, sondern einzelne Wellenzüge werden ein 
wenig gestaucht bzw. gestreckt, bis sich die Phasenlage synchronisiert 
hat.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren