Forum: Mikrocontroller und Digitale Elektronik Dynamische sinusförmige Regelung mit uC


von Markus P. (maxpeer)


Lesenswert?

Hallo,
für eine magnetische Materialcharakterisierung möchte ich die 
Sekundärspannung eines Ringkerntrafos regeln. Dieser soll im geregelten 
Fall einen sinusförmigen Verlauf haben (trotz Nichtlinearitäten aufgrund 
des Materials; Hysterese...). Für die Regelung verwende ich einen uC 
(Arduino DUE). Das Referenzsignal wird über einen Funktionsgenerator 
vorgegeben und am uC mit der gemessenen induzierten Sekundärspannung 
verglichen. Über den uC (PID-Regler) wird eine Ausgangsspg. erzeugt, die 
über einen Leistungsverstärker die Primärspannung für den Ringkerntrafo 
vorgibt.
Nun meine Frage: kann ich die Sekundärspannung überhaupt regeln, da ich 
ja immer eine Phasenverschiebung durch den Trafo bekomme und somit auch 
immer eine Phasenverschiebung zwischen Soll- und Ist-Signal entsteht.

LG

von Michael B. (laberkopp)


Lesenswert?

Markus P. schrieb:
> kann ich die Sekundärspannung überhaupt regeln

Ja.

> da ich ja immer eine
> Phasenverschiebung durch den Trafo bekomme

Kaum, die Phasenverschiebung ist gering, der ideale Trafo hätte keine.

Bloss was macht in der Schaltung dein uC ? Der kann weder den Strom für 
den Trafo bereitstellen, noch enthält er den D/A Wandler zu dessen 
Ansteuerung, er müsste auch A/D wandeln um dein Funktionsgeneratorsignal 
zu erfassen, und mit etwas Pech ist er auch noch mit der Frequenz 
überfordert um den PID durchrechnen zu können. Wie wäre ein einfacher 
analoger linearer diskreter Audioverstärker ?

von Markus P. (maxpeer)


Lesenswert?

Vielen Dank für deine Antwort! :)

ich habe aber de-facto eine Phasenverschiebung. Es sind 
selbst-bewickelte Ringronden mit Primär und Sekundärseite mit einem 
Eisenblech als "Füllmaterial", dessen Eigenschaften ich dann mittels der 
Messung umgerechnet über eine BH-Kennlinie charakterisieren möchte. Die 
Induktivität liegt dabei irgendwo im Bereich L~100uH und zusätzlich habe 
ich einen Leistungswiderstand in Serie dazu, da der analoge Verstärker 
bei zu geringem DC-Lastwiderstand Probleme bei seiner Linearität hat. 
Also habe ich eine Phasenverschiebung.

Der verwendete Arduino DUE hat sowohl ADCs als auch DACs. Ich verwende 2 
ADCs um das Referenzsignal sowie das gemessene Ist-Signal zu messen und 
einen DAC um das Signal auszugeben bzw. direkt auf den analogen 
Leistungsverstärker zu führen. Das sollte also soweit passen.
Ich weiß nur nicht, ob die Phasenverschiebung, die durch das RL-Netzwerk 
entsteht durch den Regler irgendwie kompensiert werden kann oder ob die 
gemessene induzierte Spannung immer eine Phasenverschiebung zur 
Referenzspannung haben wird. Bei den ersten Messungen konnte ich diese 
Phasenverschiebung nämlich noch nicht kompensieren.

LG

von Michael B. (laberkopp)


Lesenswert?

Markus P. schrieb:
> ich habe aber de-facto eine Phasenverschiebung

deswegen:

Markus P. schrieb:
> zusätzlich habe ich einen Leistungswiderstand in Serie dazu, da der
> analoge Verstärker bei zu geringem DC-Lastwiderstand Probleme bei seiner
> Linearität hat

also im Prinzip selber Schuld. Passenden Amp nehmen.

Dann gib den STROMnennwert mit deinen Funktionsgenerator vor, die 
Spannung folgt dann phasenverschoben.

Man könnte precompensation machen, also einfach mal eine Sinuswelle 
durchlaufen lassen und für die NÄCHSTE Sinuswelle das Signal so 
korrigieren, dass man hofft, das Ergebnis wird ein guter Sinus, usw. Nur 
dafür reicht die Rechenleistung deines uC nicht aus.

von Christian S. (roehrenvorheizer)


Lesenswert?

Markus P. schrieb:
> Das Referenzsignal wird über einen Funktionsgenerator
> vorgegeben und am uC mit der gemessenen induzierten Sekundärspannung
> verglichen.

Markus P. schrieb:
> kann ich die Sekundärspannung überhaupt regeln, da ich
> ja immer eine Phasenverschiebung durch den Trafo bekomme und somit auch
> immer eine Phasenverschiebung zwischen Soll- und Ist-Signal entsteht.

Also Du möchtest NICHT den Effektivwert einer generierten 
Wechselspannung messen und regeln, sondern im Verlauf der Sinuswelle zu 
jeder Zeit möglichst genau den aktuellen Ausgangswert in Bezug auf den 
aktuellen Vorgabewert regeln. Richtig?

mfg

von Markus P. (maxpeer)


Lesenswert?

ja genau. Ich möchte, dass meine induzierte Sekundärspannung den exakt 
gleichen Verlauf hat wie das Referenzsignal. Also zu jedem Zeitpunkt 
gleich ist. Quasi die selbe Amplitude und Phase.

Die Phasenverschiebung könnte ich natürlich reduzieren, indem ich den 
Widerstand entferne, das ist mir bewusst. Trotzdem würde ich immer noch 
eine Phasenverschiebung haben (aufgrund von Hysterese, ...) also genau 
das, was ich dann auch zur Charakterisierung brauche.
Meine Frage ist deshalb ganz allgemein, ob es möglich ist, diese 
Phasenverschiebung mit einer Regelung zu beheben und wenn ja, wie?

LG

von C-hater (c-hater)


Lesenswert?

Markus P. schrieb:

> ja genau. Ich möchte, dass meine induzierte Sekundärspannung den exakt
> gleichen Verlauf hat wie das Referenzsignal. Also zu jedem Zeitpunkt
> gleich ist. Quasi die selbe Amplitude und Phase.

Das geht. Die Regelung muss dazu nur in die Zukunft schauen können. Hört 
sich exotisch an, ist aber bei einem periodischen Referenzsignal 
tatsächlich  machbar. Änderungen der komplexen Last werden allerdings 
nur relativ langsam ausgeregelt. Die Regelung kann nur mit einer Totzeit 
von einer Periode der Referenz was regeln.

Aber so, wie du deine Last beschreibst, ist sie ja ebenfalls 
Quasi-konstant. Dann sollte das absolut kein Problem sein. Hängt zu 
Beginn der Regelung ein wenig hinterher, daddelt sich aber dann ein. Und 
so lange weder Referenz noch Last sich nennenswert ändern, wird das 
passen.

von Markus P. (maxpeer)


Lesenswert?

das wäre genau das, was ich benötige! Während der Messung ändert sich 
die Last nicht und es können auch mehrere Perioden gemessen werden, bis 
das gemessene Signal eben passt.
Aber wie realisiert man eine solche Regelung dann? Ist das ein einfacher 
PID-Regler oder um welche Art der Regelung handelt es sich hierbei?

LG

von Markus P. (maxpeer)


Lesenswert?

Welche Art von Regelung wäre das bzw. wie kann ich diese am uC 
implementieren?

LG

von Markus P. (maxpeer)


Angehängte Dateien:

Lesenswert?

Hallo nochmal,

ich bin inzwischen bei meinem Problem nicht wirklich weitergekommen und 
hoffe, dass vielleicht jetzt nochmal ein paar Ideen von euch kommen.

Also ich will quasi die Sekundärspannung von einem kleinen, 
selbstbewickelten Ringkerntrafo regeln. (Zusätzlich wird der Primärstrom 
gemessen, damit kann eine Hysteresekurve des Materials im Ringkern 
erstellt werden ...)
Für die Regelung verwende ich einen Arduino DUE und die Schaltung sieht 
wiefolgt aus (siehe Anhang):
.) Sollsignal wird vom uC erzeugt (reiner Sinus)
.) Istsignal wird vom uC gemessen
.) uC erzeugt ein Ausgangssignal nach Reglervorschrift (momentan reiner 
P-Regler)
.) Leistungsverstärker (Audioverstärker) verstärkt die Ausgangsspannung 
der Schaltung bzw. kann den nötigen Strom für die Schaltung liefern.
.) Strecke: Trafo mit niederohmigen Leistungswiderstand in Serie. 
Sekundärspannung wird gemessen

Anmerkung: Die Spannungspegel werden für den uC durch eine OPV Schaltung 
am Eingang und Ausgang angepasst, sodass die Spannungen für die analog 
Inputs in den richtigen Spannungsbereichen sind.

Nun zu meinem Problem:
Wenn die Verstärkung am Leistungsverstärker zu klein ist, wird die 
Schaltung nicht ausgeregelt. Dreht man die Verstärkung dann weiter auf, 
so wird die Schaltung plötzlich instabil und der Ausgang steuert nur 
mehr zwischen Maximum und Minimum aus.
Woran könnte das liegen, hat da jemand von euch Ideen?
LG

von M. K. (sylaina)


Lesenswert?

Markus P. schrieb:
> Wenn die Verstärkung am Leistungsverstärker zu klein ist, wird die
> Schaltung nicht ausgeregelt. Dreht man die Verstärkung dann weiter auf,
> so wird die Schaltung plötzlich instabil und der Ausgang steuert nur
> mehr zwischen Maximum und Minimum aus.
> Woran könnte das liegen, hat da jemand von euch Ideen?

Du weißt, dass ein P-Regler eine bleibende Regelabweichung hat? Mit 
einem P-Regler kannst du nie auf 0 kommen sondern dich nur so lange 
annähern durch vergrößern der Verstärkung bis das System instabil wird 
(wird auch kritische Verstärkung genannt, danach sucht man u.a. beim 
empirischen Einstellen eines PI/PID-Reglers)

von Gerald M. (gerald_m17)


Lesenswert?

Wenn du genug Speicher hast, reicht dir eventuell auch eine 
"Vorsteuerung".
Du brauchst eine volle Periode im Speicher für das Fehlersignal.
Dann gibst du einmal dein berechnetes Sollsignal aus und zeichnest das 
Istsignal auf. Die Differenz Speicherst du. Bei der nächsten Periode 
gibst du das Sollsignal abzüglich dem aufgezeichneten Fehlersignal aus. 
Den Fehler addierst du wieder auf dein Fehlersignal. usw.
So sollte das Signal konvergieren und sich "einschwingen". Eventuell 
musst du noch einen Gainfaktor (<1) für die Fehlerkorrektur einführen, 
das kommt aber auf das Signal und die Fehler an.

Beitrag #7414892 wurde vom Autor gelöscht.
Beitrag #7414893 wurde vom Autor gelöscht.
von Purzel H. (hacky)


Lesenswert?

Es gibt ja 2 Regelkreise. Der Eine passt die Ausgangskurvenform an. Der 
Andere die Amplitude.
Man kann die Spannungsvorgabe als Sinusform in einer Tabelle halten und 
passt die Amplitude an. Die Amplitude kann man als mehrere Sinuskurven 
ablegen, und oder linear interpolieren. Natuerlich alles ohne Float. 
Jetzt laesst man einen langsamen gesampelten PI fuer die Amplitude 
laufen

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.