T
Thorsten Wahn
Guest
Hallo!
Mit einem ATMEGA16 (mit 16 MHz Quarzfrequenz) bastel ich seit einiger
Zeit an einer Dimmersteuerung herum (Weihnachtsgeschenk für meine
Schwester... ahem, zu Weihnachten 2005), die aber nicht einfach nur
beim 50-Hz-Nulldurchgang einen Interrupt auslöst als Bezug für die
Phasenanschnittssteuerung, sondern mit einer "digitalen PLL" laufen
soll, um kurzzeitige Phasenstörungen (Rundsteueranlagen) zu
überbrücken - von flackernden Dimmern habe ich genug.
Das System sieht prinzipiell so aus:
- Timer-Interrupt mit 25,6 kHz, dort läuft die Software-PWM (256
Stufen). Der Timerinterrupt ist als Reload-Timerinterrupt ausgelegt.
Die Frequenz lässt sich über die Reload-Werte des Timers recht fein
einstellen (daher auch die SW-PWM anstelle der HW-PWM).
- Nulldurchgangsdetektor: INT1-Interrupt, ausgelöst bei steigender
Flanke. Softwaremäßig wird eine erneute Auslösung vor Ablauf von ca.
15ms verhindert (Mehrfachauslösung durch Störungen verhindern).
Funktioniert soweit ganz gut, mit diesem primitiven
Inbetriebnahme-"Regelalgorithmus" hier:
if (pwmcount < 127) // Voreilung (Position der Nullstelle in
Bezug zur PWM)
PWMsync = 623; // (Reload-Wert für Timer 1)
if (pwmcount == 127) // Abweichung Null
PWMsync = 624;
if (pwmcount > 127) // Nacheilung
PWMsync = 625;
Nachteil: Der Regler regelt sofort nach, also auch die Störungen durch
z.B. Rundsteueranlagen, und bei "größeren" Frequenzabweichungen im
Netz (da reichen 0,1Hz, die ab und zu schon mal kurzzeitig vorkommen!)
fällt der "Regler" aus dem Tritt.
Es muss also ein PID-Regler sein, denke ich, der ausreichend langsam
nachregelt. Da ich mit Regeltechnik speziell (und Mathematik allgemein)
auf Kriegsfuß stehe, habe ich nun einfach versucht, einen fertigen
PID-Regler aus den Weiten des Internets für die Regelung zu verwenden:
http://www.rabbitsemiconductor.com/downloads/files/PID.C
Außerdem habe ich mir die nachfolgende Anleitung zum Einstellen der
Reglerparameter angeschaut:
http://de.wikipedia.org/wiki/Regelungstechnik#Einstellregeln_f.C3.BCr_geregelte_Systeme
Aber egal was ich mache, ich bekomme kein stabiles System hin. Ich habe
den Verdacht, dass ich da mit meinem System eine Integration oder
Differentation höher oder niedriger bin (um es mal laienhaft
auszudrücken) und deshalb der PID-Regler so nicht funktionieren kann.
Die konkrete Suche nach "digitale PLL" etc. half auch nicht so richtig
weiter.
Vorerst dimme ich nun doch wieder auf Altherrenart, mit Nulldetektion
von was-auch-immer-im-50Hz-Netz-so-herumschwirrt.
Kann jemand was mit dieser länglichen Symptombeschreibung anfangen und
mir irgendeine Hilfestellung geben? Wäre sehr nett, danke!
Gruß
Thorsten
Mit einem ATMEGA16 (mit 16 MHz Quarzfrequenz) bastel ich seit einiger
Zeit an einer Dimmersteuerung herum (Weihnachtsgeschenk für meine
Schwester... ahem, zu Weihnachten 2005), die aber nicht einfach nur
beim 50-Hz-Nulldurchgang einen Interrupt auslöst als Bezug für die
Phasenanschnittssteuerung, sondern mit einer "digitalen PLL" laufen
soll, um kurzzeitige Phasenstörungen (Rundsteueranlagen) zu
überbrücken - von flackernden Dimmern habe ich genug.
Das System sieht prinzipiell so aus:
- Timer-Interrupt mit 25,6 kHz, dort läuft die Software-PWM (256
Stufen). Der Timerinterrupt ist als Reload-Timerinterrupt ausgelegt.
Die Frequenz lässt sich über die Reload-Werte des Timers recht fein
einstellen (daher auch die SW-PWM anstelle der HW-PWM).
- Nulldurchgangsdetektor: INT1-Interrupt, ausgelöst bei steigender
Flanke. Softwaremäßig wird eine erneute Auslösung vor Ablauf von ca.
15ms verhindert (Mehrfachauslösung durch Störungen verhindern).
Funktioniert soweit ganz gut, mit diesem primitiven
Inbetriebnahme-"Regelalgorithmus" hier:
if (pwmcount < 127) // Voreilung (Position der Nullstelle in
Bezug zur PWM)
PWMsync = 623; // (Reload-Wert für Timer 1)
if (pwmcount == 127) // Abweichung Null
PWMsync = 624;
if (pwmcount > 127) // Nacheilung
PWMsync = 625;
Nachteil: Der Regler regelt sofort nach, also auch die Störungen durch
z.B. Rundsteueranlagen, und bei "größeren" Frequenzabweichungen im
Netz (da reichen 0,1Hz, die ab und zu schon mal kurzzeitig vorkommen!)
fällt der "Regler" aus dem Tritt.
Es muss also ein PID-Regler sein, denke ich, der ausreichend langsam
nachregelt. Da ich mit Regeltechnik speziell (und Mathematik allgemein)
auf Kriegsfuß stehe, habe ich nun einfach versucht, einen fertigen
PID-Regler aus den Weiten des Internets für die Regelung zu verwenden:
http://www.rabbitsemiconductor.com/downloads/files/PID.C
Außerdem habe ich mir die nachfolgende Anleitung zum Einstellen der
Reglerparameter angeschaut:
http://de.wikipedia.org/wiki/Regelungstechnik#Einstellregeln_f.C3.BCr_geregelte_Systeme
Aber egal was ich mache, ich bekomme kein stabiles System hin. Ich habe
den Verdacht, dass ich da mit meinem System eine Integration oder
Differentation höher oder niedriger bin (um es mal laienhaft
auszudrücken) und deshalb der PID-Regler so nicht funktionieren kann.
Die konkrete Suche nach "digitale PLL" etc. half auch nicht so richtig
weiter.
Vorerst dimme ich nun doch wieder auf Altherrenart, mit Nulldetektion
von was-auch-immer-im-50Hz-Netz-so-herumschwirrt.
Kann jemand was mit dieser länglichen Symptombeschreibung anfangen und
mir irgendeine Hilfestellung geben? Wäre sehr nett, danke!
Gruß
Thorsten