PLL - Software in Lazarus

Zur Vorstellung von Komponenten und Units für Lazarus
hpt
Beiträge: 48
Registriert: Sa 26. Jul 2014, 18:45
OS, Lazarus, FPC: Lazarus
CPU-Target: 32Bit

PLL - Software in Lazarus

Beitrag von hpt »

Werte Expterten!
Eine Idee und ein Projekt beschäftigt mich seit einiger Zeit. Ich soll bzw. möchte einen Motor per PLL- in Drehzahl und !Phase! synchronisieren.
Eine Hardware-Lösung mit dem CD4046 habe ich schon getestet. Die Drehzahl ist 750U/min und ein guter Fangbereich ist mit nur einem Kenn-Impuls pro Umdrehung mit besagtem IC nicht ausreichend möglich. Deshalb und auch aus Gründen einer Umschaltung auf eine andere Drehzahl erscheint mir eine Softwarelösung als die geeignetere.
Leider finde ich im www nichts und bitte deshalb um Info, wer sich mit dieser oder ähnlicher Materie schon beschäftigt hat, oder sogar einen Ansatz in Pascal (Lazarus) hat. Es ist sicher eine interessante und spannende, aber für mich nicht lösbare Aufgabe.
Mit besten Grüßen HPT

mse
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

Beitrag von mse »

Welchen Phasenkomparator hast du vom 4046 verwendet? Mit dem Phasenkomparator II und richtig dimensioniertem Schlaufenfilter sollte es schon gehen.
Sonst empfiehlt es sich vielleicht einen Frequenz- mit einem Phasenregler zu kombinieren. Die Berechnung ist vermutlich nicht ganz einfach.

hpt
Beiträge: 48
Registriert: Sa 26. Jul 2014, 18:45
OS, Lazarus, FPC: Lazarus
CPU-Target: 32Bit

Re: PLL - Software in Lazarus

Beitrag von hpt »

Mich würde aber trotzdem eine Software-Lösung interessieren. Dürfte für µC oder PC sicher kein Problem sein auch Parameter zu verändern um zu sehen, was passiert. Stelle mir vor, dass durch eine Visualisierung Einiges veranschaulicht werden kann und dadurch auch klarer werden könnte, wo Grenzen liegen usw.

mse
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

Beitrag von mse »

Wie beabsichtigst du die Motorphase zu erfassen?

hpt
Beiträge: 48
Registriert: Sa 26. Jul 2014, 18:45
OS, Lazarus, FPC: Lazarus
CPU-Target: 32Bit

Re: PLL - Software in Lazarus

Beitrag von hpt »

Im Prinzip kommt einmal pro Umdrehung ein Impuls von einem Lichtschranken und als Referenz gibt es einen Synchimpuls (750Hz). Beides kommt am Ende hardwaremäßig, kann aber für Testzwecke mal simuliert werden....

mse
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

Beitrag von mse »

Und wie erfasst du die Zeiten? Mit einem PC ist das vor allem auf Windows nicht so einfach oder gar nicht machbar. Und für uP's ist Lazarus ziemlich sicher nicht das geeignete Werkzeug...
750 UPM entspricht etwa 10 Hz, die Regelbandbreite dürfte dann etwa bei 1 Hz liegen, reicht das?

hpt
Beiträge: 48
Registriert: Sa 26. Jul 2014, 18:45
OS, Lazarus, FPC: Lazarus
CPU-Target: 32Bit

Re: PLL - Software in Lazarus

Beitrag von hpt »

...ich hätte schon auch die Möglichkeit mit einem Atmegaxx und BASCOM einen Versuch zu starten, aber auch dort findet sich niemand für eine SPLL.
Und wenn ich deine Ausführungen (auch beim gedämpften Zeiger) mir ansehe, denke ich, "das" ist der Experte! Nur - ich wüsste nicht, wie ich an die Sache gehen könnte. Prinzipiell kenne ich die Funktion einer PLL und weiß auch, dass sie in Videorecordern zum synchronisieren der Kopfscheibe eingesetzt wurde. Nur die Algorithmen für eine SPLL sind für mich irgendwo in den Stratosphären....

mse
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

Beitrag von mse »

Bitte beschreibe doch mal die Anwendung.

hpt
Beiträge: 48
Registriert: Sa 26. Jul 2014, 18:45
OS, Lazarus, FPC: Lazarus
CPU-Target: 32Bit

Re: PLL - Software in Lazarus

Beitrag von hpt »

Ich beschäftige mich mit mechanischem Fernsehen (Nipkow-Scheibe) --> www.traussnigg.com/promef . Das Ziel ist, ein Kopfrad mit 30 Spiegel 750Umin synchron mit dem TV-Signal (1 synch-Imp/Umdrehung) in Phase zu synchronisieren.

mse
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

Beitrag von mse »

Wow!
Ich würde eine Geschwindigkeitsregelung mit einer übergelagerten Phasenregelung probieren. Relativ einfach lässt sich eine robuste Geschwindigkeitsregelung mit einem eisenlosen DC-Motor (Minimotor, Portescap, Maxon...) und einer Spannungsquelle mit negativem Innenwiderstand, wobei der Quellenwiderstand = -Ri des Motors ist, realisieren. Die Drehzahl entspricht dann recht genau dem Eingangswert der Spannungsquelle und ist lastunabhängig. Falls du keinen DC-Motor einsetzen kannst, für die PWM-Generierung von AC-Motoren gibt es spezielle Chips und uP's und entsprechende "Evaluation Boards".

hpt
Beiträge: 48
Registriert: Sa 26. Jul 2014, 18:45
OS, Lazarus, FPC: Lazarus
CPU-Target: 32Bit

Re: PLL - Software in Lazarus

Beitrag von hpt »

Diesen Vorschlag mit "Geschwindigkeitsregelung mit einer übergelagerten Phasenregelung" würde ich ganz gerne aufnehmen und probieren. Aber dazu fehlt mir wohl die Mathematik. Jetzt solltest du mir aber auch sagen, wo du die überdurchschnittlichen Kenntnisse zur Mathematik - speziell im Bereich digitale Filterung usw. hernimmst. Dieses Gebiet ist ja eher elitär und für mich geheimnissumwittert ...
fG HPT

mse
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

Beitrag von mse »

hpt hat geschrieben:Diesen Vorschlag mit "Geschwindigkeitsregelung mit einer übergelagerten Phasenregelung" würde ich ganz gerne aufnehmen und probieren. Aber dazu fehlt mir wohl die Mathematik.

Die Geschwindigkeitsregelung des DC-Motors würde ich mit einer Operationsverstärker-Schaltung realisieren. Dabei wird der Motorstrom gemessen und abhängig davon die Ausgangsspannung erhöht, dies führt zum erwähnten negativen Innenwiderstand und kompensiert den internen Spannungsabfall am Innenwiderstand des Motors. Da die Gegen-EMK beim DC-Motor mit eisenlosem Rotor zur Drehzahl streng proportional ist, resultiert eine gute lastunabhänige Drehzahlkonstanz ohne dass die Drehzahl überhaupt gemessen werden muss.
Wie die Phasenregelung realisiert werden sollte kann ich auch nicht aus dem Ärmel schütteln, da muss man sich einfach hineinknien. Ich würde es vermutlich mit einem uP probieren, aber auch eine analoge Lösung mit dem 4046 ist denkbar, wenn die Geschwindigkeitsregelung die Drehzahl in den richtigen Bereich bringt. Wichtig ist, dass man sich bewusst wird, dass die Phase das Integral der Winkelgeschwindigkeit ist und man dadurch in der Regelschlaufe bereits eine 90° Phasenschiebung hat, die man bei den Stabilitätsbetrachtungen berücksichtigen muss.
Jetzt solltest du mir aber auch sagen, wo du die überdurchschnittlichen Kenntnisse zur Mathematik - speziell im Bereich digitale Filterung usw. hernimmst. Dieses Gebiet ist ja eher elitär und für mich geheimnissumwittert ...
fG HPT

Das ist mein Beruf, ich mache seit vielen Jahren Hard- und Softwareentwicklungen.

mschnell
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

Beitrag von mschnell »

mse hat geschrieben:Die Geschwindigkeitsregelung des DC-Motors würde ich mit einer Operationsverstärker-Schaltung realisieren.


Man kann durchaus mit dem PWM-Ausgang eines Microprozessors (+Transistoren plus Spule) direkt eine DC/DC-Wandler Schaltung (meist Step-Down Wandler) realisieren. Das Spart Strom und Bauteile.

Für Phasenregelung ("PLL") gibt es jede Menge Literatur. Meist zur Frequenz-Vervielfachung verwendet, hier aber sicher auch anwendbar. Vermutlich muss wegen der Trägheit der Regelstrecke der Regel-Algorithmus zwischen Frequenz- und Phasen-Regelung dynamisch umgeschaltet werden. Wenn ein externer Phasen-Komparator verwendet wird, wird vermutlich zusätzlich Hardware für die Geschwindigkeits-Regelung benötigt, weil ein Phasen-Komparator auf Vielfachen oderr ganzen Teilen der gewünschten Frequenz einrasten kann

Am besten nimmt man aber einen Schrittmotor. Dann stimmen Geschwindigkeit und Phase immer.

-Michael
Zuletzt geändert von mschnell am So 5. Apr 2015, 23:40, insgesamt 2-mal geändert.

mse
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

Beitrag von mse »

mschnell hat geschrieben:Am besten nimmt man aber einen Schrittmotor. Dann stimmen Geschwindigkeit und Phase immer.
l

Nur bis zum Ausrasten. Hast du dir das Trägheitsmoment der Anwendung angeschaut? ;-)
Zudem bleibt das Problem der Synchronisierung mit einem entfernten Signal bestehen. Es geht hier um eine Nipkow-Scheibe.

mschnell
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

Beitrag von mschnell »

mse hat geschrieben:Nur bis zum Ausrasten.

Klar. Der Schrittmotor braucht natürlich auch eine Regelung . (Am besten kauft man einen Motor mit Regelung mit CAN-Bus-Interface von Lenze :D )

-Michael

Antworten