Gast
#162475
Nabend, probiere seit einiger Zeit eine Sinusspannung per PWM zu erzeugen. Bin soweit das ich für 90 grad eine LU-Tabelle habe und die Werte auf zwei verschiedene PWM-Ausgänge eines MCU legen kann. (PWM0->0-90, 90-180 Grad; PWM1->180-270, 270-0 grad) Das ganze soll mit einer H-Brücke aus einer konstanten Gleichspannung ein Sinus erzeugen. LC-Filter ist selbstverständlich... Funktioniert soweit schon ganz gut... Das Problem ist, das ich die Amplitude des Sinus regeln muss ! Erfasse die Ausgangsspannung über einen Differential-AD. (-3V - 0 - +3V) Bisherige Versuche sachen wie folgt aus : Pulsweite aus tab. holen und an PWM Ausgang ausgegeben. Dann folgt für eine feste Zeit (damit die Frequenz stimmt) eine Korrekturschleife, in der ich die momentane Spannung über den AD-Wandler einlese und mit einer LU-Tab. verglichen habe. Wert zu klein -> Pulsweite (Duty) vergrössert, Wert zu groß -> Duty verringert. Der Regelkreis funktionierte bei kleinen Frequenzen (<10Hz) recht gut. Mein Ziel sind aber 50 Hz. Habe schon davon Abstand genommen, die Sinuskurve 64 mal abzutasten und zu korrigieren (pro Vollwelle !)... Nun wäre ich schon zufrieden, wenn ich alle 20ms (eine Vollschwingung) einen Korrekturwert erhalten würde, den ich auf die ganze Sinus-Tabelle anwenden würde. Da bei den vorherigen Versuch doch die Kurvenform zu sehr gelitten hat (kein Sinus mehr). Die besten Ergebnise erbrachte bisher das mul/div der Tabelle, um entsprechende Dutys zu bekommen und die Kurvenform zu erhalten. Also ich suche nicht nach einem fertigen Code...eher nach einem Denkanstoss, beschäfftige mich schon knappe 2 Monate mit dem prob, wills aber lösen....und stecke im mom. völlig fest 8-( Bissel einfacher ausgedrückt, ich will eine stabile 50Hz Sinusschwingung haben. Alles in allem wirds eine OnlineUSV die unabhängig von der Last (ind., kap., ohm) eine echte Sinusschwingung erzeugt und hält ! Daher würde ich am liebsten den Sinus nach jedem LU-Tab.-Wert auf genau den Spannungwert einregeln, der nötig ist. Mit 64 Stufen bei 20ms bleiben also rund 300µs um jeden einzelnen Wert auszuregeln. Als MCU habe ich einen Freescale DSP56F801FA60 mit 30 Mips. Programmiert wird das ganze in C. Leistungshardware ist vorhanden, ebenso Iso-Meßverstärker (Fa.Knick) zum genauen und sicheren erfassen der Ausgangspannung. Vielleicht hat einer ne Idee...DANKE schonmal vorweg... Grüsse...Sebastian