PWM mit Interrupt synchronisieren

Gast #3439518
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
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

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.