Forum: Offtopic PWM synchronisieren (Regelungstechnik)


von J. W. (nuernberger)


Angehängte Dateien:

Lesenswert?

ich möchte 2 Systeme synchronisieren durch Vergleich der PWM.
Es gibt schon viele Threads mit diesem Thema,
aber in meinem Fall kann ich das zu regelnde System nur durch eine 
Funktion SetFreq() regeln.
Ein direkter Eingriff (low-Level) in die PWM-Erzeugung ist nicht 
möglich.

D.h. anhängig von der Phasen-Differenz muss man die Frequenz des Slave 
erhöhen/erniedrigen.

(Ich kenne Regelungstechnik nur von Größen wie Spannung, Temperatur 
usw., nicht aber von der Größe "Zeit")

Im ersten Anlauf habe einen einfachen I-Regler verwendet.
Es funktioniert zwar, aber die PWM vom Slave zappelt noch stark.
Wenn ich den Feedback schwächer mache, wird die PWM ruhiger, aber kommt 
bei Frequenzänderungen nicht so schnell hinterher.

Gibt es dem Problem schon Musterlösungen?
Ich bin bei Google nicht fündig geworden.

von Falk B. (falk)


Lesenswert?

@J. Wa. (nuernberger)

>aber in meinem Fall kann ich das zu regelnde System nur durch eine
>Funktion SetFreq() regeln.

Hmm.

>Ein direkter Eingriff (low-Level) in die PWM-Erzeugung ist nicht
>möglich.

Schlecht.

>D.h. anhängig von der Phasen-Differenz muss man die Frequenz des Slave
>erhöhen/erniedrigen.

Nennt sich PLL (Phase Locked Loop)

>Im ersten Anlauf habe einen einfachen I-Regler verwendet.
>Es funktioniert zwar, aber die PWM vom Slave zappelt noch stark.
>Wenn ich den Feedback schwächer mache, wird die PWM ruhiger, aber kommt
>bei Frequenzänderungen nicht so schnell hinterher.

Das ist normal.

Der Knackpunkt einer guten PLL ist der Phasenkomparator und das 
Schleifenfilter.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ein guter Einstieg in die PLL Technik ist das Datenblatt des CD4046. Das 
IC hat 2 Phasenkomparatoren, wobei der eine ein simples XOR Gatter ist, 
das sich durch geringes Jittern auszeichnet, allerdings nur einen engen 
Fangbereich hat.
Der zweite ist ein 'digitaler' Phasenkomparator, der einen weiten 
Fangbereich hat, allerdings erkauft zum Preis eines stärkeren Jittern. 
Da du leider nichts über die verwendeten Frequenzen schreibst, bleibt es 
erstmal dabei.

von Pandur S. (jetztnicht)


Lesenswert?

Vergiss den PLL. Der ist so gemacht, dass das mudulationsprodukt auf 
null regelt. Bein Sinusen sind die dan 90 Grad zueinander. PWM, mit 
unterschiedlichen pulsbreiten werden zwar frequenzsynchronisiert, aber 
nicht phasengelockt

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Jetzt Nicht schrieb:
> Bein Sinusen sind die dan 90 Grad zueinander.

Du hast dir das Bild des TE nicht mal angesehen, oder? Es sind 
Rechtecksignale. Und vermutlich hast du dir auch nicht das Datenblatt 
des CD4046 angeschaut, der digitale Phasenkomparator regelt auf 0° und 
nicht auf 90°.

von Falk B. (falk)


Lesenswert?

@Jetzt Nicht (jetztnicht)

>Vergiss den PLL.

???
Warum?

> Der ist so gemacht, dass das mudulationsprodukt auf
>null regelt.

Kann man so allgemein gar nicht sagen. Das ist vom Phasendetektor 
abhängig.

> Bein Sinusen sind die dan 90 Grad zueinander.

Nicht zwangsweise, man kann auch die auf Null Grad ausregeln, dazu 
braucht es nur einen PI-Regler.

> PWM, mit
>unterschiedlichen pulsbreiten werden zwar frequenzsynchronisiert, aber
>nicht phasengelockt

Jaja, phasengelockt. Welch wohlklingend Wort 8-(

Auch zwei PWM-Signale mit verschiedenen Tastverhältnissen kann man 
problemlos auf eine konstante Phasenverschiebung ausregeln, dazu braucht 
man logischerweise einen flankensensitiven Phasendetektor. Been there, 
done that.

von J. W. (nuernberger)


Lesenswert?

Ich habe mir ein paar Dokumente über PLL und Software-PLL (SPPL) 
angeschaut,
aber meine Aufgabenstellung ist schon etwas anders.
Es gibt ein Buch über SPLL:
http://www.amazon.de/Phase-Locked-Loops-Simulation-Applications/dp/0071493751
Kennt das jemand?

Zurück zu meiner Anwendung:
In den ersten Loops ermittelt der Slave die Zeit zwischen 2 steigenden 
Flanken des Masters, dann stellt er die Grundfrequenz f0 ein 
(Arbeitspunkt) und regelt die Abweichungen aus.

Bei starker Rückkopplung folgt der Slave ganz gut, auch bei 
Frequenzsprüngen, aber zappelt sehr unruhig.
Bei kleiner Rückkopplung ist der slave sehr ruhig/stabil, aber kann 
Frequenzsprüngen des Masters kaum folgen.

Ich würde das ganze gerne theoretisch untersuchung, und Optimierungen, 
z.B. von Ziegler-Nichols anwenden.
Messen tue ich zunächst die Zeitdifferenzen der Flanken.
Durch Division könnte ich das in
umrechnen (was auf 0 geregelt werden soll).
Einstellen (Stellgröße) kann ich aber nur die Frequenz.
Frequenzvorgaben wirken sich integriert auf die Phasendifferenz aus.
D.h. wenn ich einen PD-Regler verwende, dann erhalte ich in der 
Gesamtwirkung einen PI-Regler?

von Falk B. (falk)


Lesenswert?

@ J. Wa. (nuernberger)

>aber meine Aufgabenstellung ist schon etwas anders.

Keinesfalls. Du siehst das nur nicht ganz klar.

>http://www.amazon.de/Phase-Locked-Loops-Simulation...
>Kennt das jemand?

Das hatte ich mal vor über 15 Jahren in der 1. Auflage in der Hand.
War ganz gut.

>In den ersten Loops ermittelt der Slave die Zeit zwischen 2 steigenden
>Flanken des Masters, dann stellt er die Grundfrequenz f0 ein
>(Arbeitspunkt) und regelt die Abweichungen aus.

Nicht so schnell. Dass sind viel zuviele Dinge viel zu oberflächlich 
beschrieben. Allein das Thema Phasendetektor ist weitreichender.

>Bei starker Rückkopplung folgt der Slave ganz gut, auch bei

Was heißt starke Rückkopplung? Großer Multiplikator zwischen 
Phasenfehler und Frequenzeinstellung?

>Frequenzsprüngen, aber zappelt sehr unruhig.

Logisch.

>Bei kleiner Rückkopplung ist der slave sehr ruhig/stabil, aber kann
>Frequenzsprüngen des Masters kaum folgen.

Ebenfalls logisch.

>Ich würde das ganze gerne theoretisch untersuchung, und Optimierungen,
>z.B. von Ziegler-Nichols anwenden.

Hat damit nicht sooo viel zu tun. Zuerst muss man die PLL 
regelungstechnisch simulieren, Frequenzgang etc. Dann sieht man auch 
mehr.

>Messen tue ich zunächst die Zeitdifferenzen der Flanken.
>Durch Division könnte ich das in

>\Delta \phi

>umrechnen (was auf 0 geregelt werden soll).

Muss man nicht. Ob nun normiert oder nicht normiert spielt hier kaum 
eine Rolle.

>Einstellen (Stellgröße) kann ich aber nur die Frequenz.

Wie bei jeder PLL.

>Frequenzvorgaben wirken sich integriert auf die Phasendifferenz aus.
>D.h. wenn ich einen PD-Regler verwende, dann erhalte ich in der
>Gesamtwirkung einen PI-Regler?

Nein.

von J. W. (nuernberger)


Lesenswert?

>>aber meine Aufgabenstellung ist schon etwas anders.
>
>Keinesfalls. Du siehst das nur nicht ganz klar.

Das mag sein. Ich habe zwar ET mit Regelungstechnik als Schwerpunkt 
studiert,
aber fast nie praktische Erfahrung im Beruf gesammelt.


> Allein das Thema Phasendetektor ist weitreichender.

Eine analoge Lösung ist mit Sicherheit kompliziert.

Aber mit einem uC stelle ich mir das sehr trivial vor.
Die beiden Schwingungen müssen "ähnlich" sein (vllt. 1% Abweichung),
damit keine Aliasing-Effekte eine Rolle spielen.
Dann kann mit den zeitlichen Versatz der Schwingungen durch die Timer 
feststellen. (die Phase dann durch Division durch Periodenlänge)

von Falk B. (falk)


Lesenswert?

@ J. Wa. (nuernberger)

>Das mag sein. Ich habe zwar ET mit Regelungstechnik als Schwerpunkt
>studiert,
>aber fast nie praktische Erfahrung im Beruf gesammelt.

Schlecht.

>> Allein das Thema Phasendetektor ist weitreichender.

>Eine analoge Lösung ist mit Sicherheit kompliziert.

Das wollte ich damit nicht sagen, sondern dass man dort aufpassen muss. 
Es gibt Phasendetektoren, die man mit Vielfachen der Grundfrequenz 
veralbern kann.

>Aber mit einem uC stelle ich mir das sehr trivial vor.

Und warum ist es dann noch nicht fertig und läuft zufriedenstellend?

>Die beiden Schwingungen müssen "ähnlich" sein (vllt. 1% Abweichung),
>damit keine Aliasing-Effekte eine Rolle spielen.

1% was? Phasenlage?

>Dann kann mit den zeitlichen Versatz der Schwingungen durch die Timer
>feststellen. (die Phase dann durch Division durch Periodenlänge)

Wie bereits gesagt, ist das unwesentlich. Die Division kostet nur 
(Rechen)Aufwand.

Generell wird man bei JEDER PLL einen Kompromiss eingehen müssen aus 
hoher Reglerbandbreite (und damit hohem Jitter, aber schnelle Reaktion 
auf Änderungen am Eingang) und niedriger Reglerbandbreite (und damit 
weniger Jitter aber auch langsamer Reaktion am Ausgang).

von J. W. (nuernberger)


Lesenswert?

>>Aber mit einem uC stelle ich mir das sehr trivial vor.
>
>Und warum ist es dann noch nicht fertig und läuft zufriedenstellend?

Ich meinte, das Feststellen der Phasenabweichung (Phasendetektor) sei 
trivial mit uC.
Den loop-filter (PT1 zwischen Phasendetector und VCO) richtig zu 
konfigurieren ist nicht trivial, ähnlicher Aufwand wie beim CD4046, aber 
nicht wirklich schwer.
(es gibt da Formeln zum errechnen von den R und C)
Ich muss dann Ki und Kp rausfinden und den PT1 entsprechend 
programmieren.
Der CD4046 war da ein sehr guter Ansatzpunkt.


>>Die beiden Schwingungen müssen "ähnlich" sein (vllt. 1% Abweichung),
>>damit keine Aliasing-Effekte eine Rolle spielen.

>1% was? Phasenlage?

Frequenz. Beim Start messe ich die Periodenlänge und stelle die Frequenz 
entsprechend ein. Damit sind die Frequenzen Master und Slave schon sehr 
ähnlich. Im Hintergrund läuft das Messen der Periode weiter, und bei 
Frequenzsprüngen wird der Arbeitspunkt verändert.

von Falk B. (falk)


Lesenswert?

@J. Wa. (nuernberger)

>Frequenz. Beim Start messe ich die Periodenlänge und stelle die Frequenz
>entsprechend ein.

Kann man machen, macht aber kaum eine PLL.

> Damit sind die Frequenzen Master und Slave schon sehr
>ähnlich. Im Hintergrund läuft das Messen der Periode weiter, und bei
>Frequenzsprüngen wird der Arbeitspunkt verändert.

Ein weiterer wichtiger Punkt ist der Duchstimmbereich des digitalen 
Oszillators (NCO, numeric controlled oscillator). Mit einer DDS ist der 
praktisch unbegrenzt, mit einem einfache 1:N Teiler hat man bei kleinen 
N schon recht große Sprünge und damit Jitterprobleme. Je größer der 
Durchstimmbereich bzw. die Steilheit, umso größer die 
Schleifenverstärkung. Gut für schnelles Ausregeln, schlecht für geringen 
Jitter.

Und last but not least hat man beim NCO Quantisierungsprobleme.

Alles in allem ist so eine volldigitale PLL nicht ganz trivial. Das hab 
ich vor 15 Jahren bei meiner Diplomarbeit zu eben diesem Thema schon 
festgestellt ;-)

von J. W. (nuernberger)


Lesenswert?

Ich hätte eine grundsätzliche Frage zum Phase-Detektor.

Die Funktionsweise wird ist ja in vielen Dokumenten erklärt, z.B.:

http://www.lte.ei.tum.de/lehre/edhcs/2011/handouts/phaselockedloops_compact.pdf

Da wird das vom PLL/VCO erzeugte Signal vom Referenzsignal subtrahiert.
Sind die Signale gleich, ergibt sich ein Null-Signal.
Bei Phasenunterschiede ergeben sich Rechtecke mit der Breite der 
Phasendifferenz.
So wie ich das sehe, hat dieses Differenzsignal keine Information über 
Vorzeichen der Phasendifferenz.

Auf Bild Nr 6 des obigen Dokumentes ist folgender Zusammenhang 
angegeben:

Das ist mir schleierhaft. Wie kann bei negativen Phasenunterschied der 
Ausgang negativ werden?
Ich würde auf solche Formel kommen:

: Bearbeitet durch User
von J. W. (nuernberger)


Angehängte Dateien:

Lesenswert?

Ich habe mal das Beispiel der PLL verlassen und einige Regelalgorithmen 
am PC simuliert und mit GNUPLOT ausgegeben.

Beim einen Bild habe ich eine reine Frequenz-Steuerung/Regelung.
Der Master fährt die Frequenz linear rauf und runer.
D.h. der Slave misst die Frequenz beim Master und stellt diese an seinem 
eigenen "VCO" ein.
Wenn der Slave schon eine Phasendifferenz hat (dem Master vor- oder 
nacheilend) hat das keinen Einfluss auf die eingestellte Frequenz.

Beim zweiten Bild habe ich die Phasendifferenz berücksichtigt.
D.h. wenn der Slave dem Master nachläuft, dann stellt er die gemessene 
Frequenz des Masters ein und gibt noch etwas drauf, um den Master 
einzuholen.
Dieser additive Zusatz darf nicht zu groß sein, damit das System stabil 
bleibt.

Wenn jemand was kennt, wo ein ähnliches Problem gründlicher behandelt 
wird, bitte melden.

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.