Forum: Mikrocontroller und Digitale Elektronik PWM mit Interrupt synchronisieren


von Tim (Gast)


Angehängte Dateien:

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

von Karl H. (kbuchegg)


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.

von Tim (Gast)


Lesenswert?

Wunderbar :)

Vielen Dank für deinen Input!

Damit sollte es machbar sein...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.