.... leider ist es nicht so trivial wie es mschnell beschreibt. Ich suche eigentlich nur nach einem Algorithmus für eine PLL (DPLL). Stellen würde ich mit PWM. Anpassen, umschalten und anwenden möchte ich dann schon selbst versuchen (zumindest versuchen).
Wie und was ich so im www gesehen habe, ist schon ein Stück Mathematk notwendig, aber allzu viel gibt es nicht zu finden. Obwohl man von einer PLL-Regelung für Motore lesen kann, eine Anwendung die läuft, habe ich jedoch noch niergends entdecken können!
Frohes Osterfest HPT
PLL - Software in Lazarus
Re: PLL - Software in Lazarus
Hallo,
was unterscheidet deine PLL von einer Regelstrecke mit Ausgleich auf Abweichung 0.
Also PI oder PID- Regler.
Wenn Deine Lichtschranke 12,5 Impulse/s macht, könntest Du die Impulse mit einem Monoflop so formen das ein ImpulsPause Verhältnis von 50/50 besteht. Also 40 ms Impulslänge.
Den Impuls an einen Integrator und man hat 0.5 Ub bei der richtigen Drehzahl.
Wenn dass erreicht ist, erzeugt man selbst das phasenrichtigen signal und logisch undiert sie mit tatsächlichen Impulsen, bei Phasenverschiebung ist Puls entsprechend verkürzt bei 180 Grad sogar 0.
Den Monoflop kann man leicht digital erzeugen: Bei Impulseingang läuft ein Timer entsprechend lang T_mono.Ein anderer Timer misst die Zeit zwischen zwei Impulsen T_mom.
Für die Drehzahl braucht es nur T_mom, denn T_mono ist konstant.
Für die Phase braucht es nur die Zeit von t_richtig bis t_impuls, die man zu 0 machen möchte.
Der rotierende Spiegel scheint ja eine sehr große Massenträgheit gegenüber dem Motor zu haben, gleichzeitig braucht es nur geringe Antriebsleistung, das wird dann sehr träge.
Vielleicht sollte man mal experimentell versuchen, bei welchem Strom der Motor die Drehzahl von 750 U/min hält.Dann könnte man erst mit diesem oder etwas höherem Strom das ganze erst einmal anfahren lassen bis man in die Nähe der Wunschdrehzahl kommt.
Gruß Horst
was unterscheidet deine PLL von einer Regelstrecke mit Ausgleich auf Abweichung 0.
Also PI oder PID- Regler.
Wenn Deine Lichtschranke 12,5 Impulse/s macht, könntest Du die Impulse mit einem Monoflop so formen das ein ImpulsPause Verhältnis von 50/50 besteht. Also 40 ms Impulslänge.
Den Impuls an einen Integrator und man hat 0.5 Ub bei der richtigen Drehzahl.
Wenn dass erreicht ist, erzeugt man selbst das phasenrichtigen signal und logisch undiert sie mit tatsächlichen Impulsen, bei Phasenverschiebung ist Puls entsprechend verkürzt bei 180 Grad sogar 0.
Den Monoflop kann man leicht digital erzeugen: Bei Impulseingang läuft ein Timer entsprechend lang T_mono.Ein anderer Timer misst die Zeit zwischen zwei Impulsen T_mom.
Für die Drehzahl braucht es nur T_mom, denn T_mono ist konstant.
Für die Phase braucht es nur die Zeit von t_richtig bis t_impuls, die man zu 0 machen möchte.
Der rotierende Spiegel scheint ja eine sehr große Massenträgheit gegenüber dem Motor zu haben, gleichzeitig braucht es nur geringe Antriebsleistung, das wird dann sehr träge.
Vielleicht sollte man mal experimentell versuchen, bei welchem Strom der Motor die Drehzahl von 750 U/min hält.Dann könnte man erst mit diesem oder etwas höherem Strom das ganze erst einmal anfahren lassen bis man in die Nähe der Wunschdrehzahl kommt.
Gruß Horst
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: PLL - Software in Lazarus
Genau: Erst Frequenz (Drehzahl) Regelung. Wenn die genau genug stimmt auf Phasen-Regelung umschalten
Drehzahl-Regelung: Eingang; Drehzahl-Abweichung, also Drehzahl zunächst messen und dann (Soll - Ist) ausrechnen. Wenn das Signal, zu dem der Motor synchronisiert werden soll, keine konstante Frequenz hat, beide Drehzahlen messen und von einander abziehen. Darauf dann sinnvoller Weise eine PID-Regelung mit einstellbarem P, I und D Parametern P1, I1, D1.
Phasen-Regellung: die Phasendifferenz (proportional zum Winkel, läuft vor >0, läuft nach <0) messen und auf "0" ausregeln. Darauf dann sinnvoller Weise wieder eine PID-Regelung mit einstellbarem P, I und D Parametern P2, I2, D2.
Finde ich übrigens logisch, aber überhaupt nicht trivial. Und dann noch die 6 Parameter sinnvoll einstellen ... !
Ob Die notwendigen Zeit-Messungen mit Usermode - Software zuverlässig genug gemacht werden können ist auch so eine Frage.
-Michael
Drehzahl-Regelung: Eingang; Drehzahl-Abweichung, also Drehzahl zunächst messen und dann (Soll - Ist) ausrechnen. Wenn das Signal, zu dem der Motor synchronisiert werden soll, keine konstante Frequenz hat, beide Drehzahlen messen und von einander abziehen. Darauf dann sinnvoller Weise eine PID-Regelung mit einstellbarem P, I und D Parametern P1, I1, D1.
Phasen-Regellung: die Phasendifferenz (proportional zum Winkel, läuft vor >0, läuft nach <0) messen und auf "0" ausregeln. Darauf dann sinnvoller Weise wieder eine PID-Regelung mit einstellbarem P, I und D Parametern P2, I2, D2.
Finde ich übrigens logisch, aber überhaupt nicht trivial. Und dann noch die 6 Parameter sinnvoll einstellen ... !
Ob Die notwendigen Zeit-Messungen mit Usermode - Software zuverlässig genug gemacht werden können ist auch so eine Frage.
-Michael
Zuletzt geändert von mschnell am Di 7. Apr 2015, 10:11, insgesamt 2-mal geändert.
Re: PLL - Software in Lazarus
.... hört sich alles ganz gut an.
Ich habe natürlich auch ähnliche Experimente gemacht. Die Drehzahl sollte kein Problem sein, aber mit der Phasenregelung, hat es so seine Tücken! Denn wenn das Bild einmal drüberläuft (über 0) braucht es eine Weile, bis es wieder synchronisiert. Diese Effekte sind bei TV total unbrauchbar. Wünschen würde ich mir ein Einrasten wie bei einer PLL und dann auch das Halten! Mich würde einfach interessieren, wie das in Software zu lösen ginge. Unter DPLL gäbe es ja einige Infos im www aber für mich nicht umsetzbar. Wissenschaft ist für mich eine Wissenschaft, wenn sie Wissen schafft, ohne zu viel Wissenschaft.
mfG HPT
Ich habe natürlich auch ähnliche Experimente gemacht. Die Drehzahl sollte kein Problem sein, aber mit der Phasenregelung, hat es so seine Tücken! Denn wenn das Bild einmal drüberläuft (über 0) braucht es eine Weile, bis es wieder synchronisiert. Diese Effekte sind bei TV total unbrauchbar. Wünschen würde ich mir ein Einrasten wie bei einer PLL und dann auch das Halten! Mich würde einfach interessieren, wie das in Software zu lösen ginge. Unter DPLL gäbe es ja einige Infos im www aber für mich nicht umsetzbar. Wissenschaft ist für mich eine Wissenschaft, wenn sie Wissen schafft, ohne zu viel Wissenschaft.
mfG HPT
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: PLL - Software in Lazarus
Da vermute ich, dass auf der Sollphase ein Sprung von 0 auf max geschieht. Falls dem so ist, sollte die Fehlerberechnung so angepasst werden, dass der Fehlerwert im Bereich der Sollphase stetig ist, also von positiven Werten über 0 zu negativen Werten.hpt hat geschrieben:Die Drehzahl sollte kein Problem sein, aber mit der Phasenregelung, hat es so seine Tücken! Denn wenn das Bild einmal drüberläuft (über 0) braucht es eine Weile, bis es wieder synchronisiert.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: PLL - Software in Lazarus
"Einrasten" ist bei einer PLL kein Bestandteil der Regelung, sondern ein zusätzliche Ausgangs-Signal, das bedeutet, dass die Regel-Abweichung klein genug ist, dass man annehmen kann, dass es "unter normalen Umständen" nicht passieren wird, dass die Phasen-Abweichung das Vorzeichen wechselt.hpt hat geschrieben: Wünschen würde ich mir ein Einrasten wie bei einer PLL und dann auch das Halten!
Ein "Halten" bedeutet, dass die Regel-Abweichung "unter normalen Umständen" sehr nahe bei 0 bleibt. Hierzu müssen die Regel-Parameter P2, I2, D2 einfach klein genug sein.
Wenn das passiert, funktioniert die Phasenregelung nicht. (D.h. sie rastet nicht ein - siehe oben). Das kann diverse Gründe haben:hpt hat geschrieben:Denn wenn das Bild einmal drüberläuft (über 0) braucht es eine Weile, bis es wieder synchronisiert.
- Die Regelung schwingt, weil die P2, I2, D2 Parameter nicht so gewählt sind dass die Regel-Schwingung ausreichend bedampft wird.
- Es wurde zu früh von Frequenz auf Phasenregelung umgeschaltet
- Die Regelstrecke (Aktuator -> Prozess -> Messung) ist technisch so instabil, dass eine Phasenregelung schlicht nicht möglich ist.
Besonders ärgerlich ist natürlich, wenn einfach die Messung nicht sauber funktioniert. Bei einer Software-Regelung kann das natürlich leicht passieren, weil bekanntermaßen ein normales Betriebssystem die Reaktion eines User-Programms beliebig lange verzögern und damit eine Messung beliebig verfälschen und/oder die Regel-Reaktion beliebig lange aufhalten kann. Was natürlich auch Auswirkungen auf die Integral- und Differential-Berechnung der PID-Reglung hat.
-Michael