PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Encoder und PLL?



DanVet
22.01.2008, 13:19
Hallo,
hat jemand von euch schon einmal ein rechteck Encoder-Signal mit einem PLL verdoppelt (oder vervielfacht)? Wird das überhaupt funktionieren? Oder ist der PLL viel zu langsam (wegen der Einrastzeit etc.)?
Ich habe hier eine Anwendung, bei der der Motor mehr oder weniger konstant dreht (es ist keine Positionierung erforderlich). Da dachte ich, das könnte vielleicht funktionieren. Hab's aber noch nicht ausprobiert.
Daniel

elmar
22.01.2008, 22:03
Hi,

gehen wird das schon, aber da analog, wird das nicht genau sein.

In der HF erreicht man eine Frequenzverdopplung in dem man einen Sinus gleichrichtet und wieder sauber zum Sinus formt. Da man aus einem rechteck leicht einen sinus machen kann und umgekehrt, sollte das gelingen.

Gruß
Elmar

guidob
22.01.2008, 22:33
Hallo,

wie Elmar sagt: Im Prinzip geht das schon. Wenn eine PLL erstmal eingerastet
ist, kann sie auch sehr schnell kleinen Frequenzänderungen folgen. Aber ich
lasse mittlerweile die Finger davon (PLL), weil es jedesmal eine Riesenarbeit ist,
die Regelschleife einzustellen. Als Frequenzverdoppler findest du sicher auch
die einfachen Schaltungen mit EXOR-Gattern, die auf steigende und fallende
Flanke reagieren. Die lassen sich auch kaskadieren, am Ende sollte dann wohl
ein Monoflop stehen, um die Nadelimpulse wieder in vernünftige Form zu
bringen.

guidob

elmar
22.01.2008, 22:51
Hi,

doppelt verdoppeln (4x) und dann halbieren. Halbieren erzeugt nämlich einen perfekten 50:50 cycle.

Gruß
Elmar

DanVet
23.01.2008, 10:22
Ja, die Vervierfachung hab ich schon implementiert (XOR der A-B Signale), aber ich hätte gerne nochmal das doppelte der Vervierfachung, also eine Verachtfachung wenn man so will.
Ein weiteres Problem das ich sehe ist, dass zwar der Motor konstant dreht, aber von Zeit zu Zeit doch eine andere Drehzahl gewählt wird. Dadurch ändert sich die Taktfrequenz...hmm.
Ich probiere mal ein bißchen, danke für die Antworten.
Daniel

elmar
23.01.2008, 12:15
Hi,

triggern auf steigende und fallende Flanke erzeugt zwei Nadeln po Rechteckimpuls. Diese Nadeln kann man durch monoflops aufweiten und aus den entstandenen Rechtecken wieder doppelt so viele Nadeln machen. Einziger Haken ist, dass man die Nadeln ja nicht beliebig verbreitern kann um eine gewisse Grenzfrequenz zu waren (ohne Überlappung). Unterhalb dieser Grenzfrequenz bekommt man eine genaue vervielfachung, darüber entsteht Aliasing, es wird eine zu niedrige oder gar keine Frequenz mehr erzeugt.

Gruß
Elmar

DanVet
24.01.2008, 12:34
Richtig, das mit der Flankenauswertung ist auch schon passiert. Aber davon hätte ich jetzt gerne das doppelte mit einem einigermassen 50-50 Taktverhältnis.
Zum Glück habe ich das ganze mit einem CPLD (Max7000, 40MHz) realisiert und jetzt folgendes gemacht: Zwei Zähler implementiert,der eine zählt die Zeit zwischen zwei Pulsen, der andere lädt den halben Zeitwert und zählt rückwärts bis auf Null und gibt einen Puls aus. Dieser liegt ziemlich genau zwischen den beiden Flanken. Jetzt hab ich die doppelte Pulszahl. Im Prinzip kann man das jetzt immer weitertreiben, wobei diese Interpolation wahrscheinlich immer schlechter wird.
Daniel

elmar
26.01.2008, 17:07
Hi,

wenn die interpolation zu schlecht wird, nochmals verdoppeln und dann halbieren. Halbieren erzeugt nämlich perfekte 50:50!

Gruß
Elmar

MacSeck
29.01.2008, 14:31
schon mal an eine einfache Frequenzvervielfachung mit Tachoscheibe und Lichtschranke gedacht?

n * Anzahl der Schlitze bzw. Löcher

DanVet
30.01.2008, 13:10
schon mal an eine einfache Frequenzvervielfachung mit Tachoscheibe und Lichtschranke gedacht?

n * Anzahl der Schlitze bzw. Löcher

Ähh...kannst du das näher erläutern. Ich verstehe nicht was gemeint ist. Allerdings ist es mir nicht möglich bei dem bestehenden Gerät noch irgendwas einzubauen :(

Daniel

elmar
30.01.2008, 19:22
Hi,

an irgend ein drehendes Teil wird eine Scheibe angebracht, die mitrotiert. Per lichtschranke erzeugt die dann impulse. Das kann eine aufgeklebte, weisse Scheibe mit schwarzen Strichen sein, die eine Reflexlichtschranke bedient oder wenn es extrem zuverlässig sein soll hat die Scheibe löcher und eine Lichtschranke guckt durch die Löcher.
Je mehr löcher, desto mehr Impulse entstehen.
Das geht natürlich auch radial auf einer Welle, sofern die Markierungen die Lichtschranke bedienen können.

Fertig aufgebaut und mit einem Zähler mit Drehrichtungserkennung ausgestattet nennt man das auch (Dreh)Encoder.

Gruß
Elmar

guidob
30.01.2008, 19:31
Naja,

laut Threadtitel ist der Encoder ja wohl schon am Motor vorhanden. Diese
Dinger haben typisch 500 ... 5000 Impulse/Umdrehung, da kann der
Bastler einpacken.

Gruß,

guidob

elmar
30.01.2008, 21:55
Hi,

ein simpler Tachogenerator wird oft als "Encoder" bezeichnet, liefert aber nur einen oder zwei Pulse pro Umdrehung. Kommt eben darauf an, wozu der "Encoder" gedacht ist.

Gruß
Elmar

MacSeck
30.01.2008, 22:21
alles richtig Leute, nur sollte man jetzt wohl mal klären, was der Encoder genau liefert.

Bei 1 Impuls pro "Umdrehung pro Jahr"... da ist dann auch mit der besten PLL nix zu machen. Also ein bißchen was muß schon rauskommen, aber so ab "normalen Motordrehzahlen" (600 1/min also 10 Hz) rastet eine 4046 stabil ein, kein Thema. Habe ich selbst gebaut für eine Zündimpulsverzögerung fürs Auto. Drehzahl * 1024 überhaupt kein Ding für 4046.

guidob
31.01.2008, 00:14
Hallo,

um die Uhrzeit kann man ja noch etwas Kaffeesatz lesen: Wenn es ein Tachogenerator
wäre, hätte DanVet nicht Encoder geschrieben. Ein Encoder mit 1 Puls/Umdrehung?
Wozu soll der denn gut sein? Die Dinger werden ja verwendet um eine höhere
Genauigkeit als bei Schrittmotoren zu erhalten.

NöNö, der CPLD ist schon ne gute Idee, da hat man alles sehr flexibel und fast
unbegrenzte Möglichkeiten (in diesem Fall).

Gruß,

guidob

DanVet
31.01.2008, 08:56
OK, hab's nicht spezifiziert. Encoder hat 2500 Pulse pro Umdrehung (A-B-Signale). Der Motor dreht mit bis zu 300Hz (das sind 18000 U/min). Bei Vierfachauswertung (XOR der A-B Signale plus Flankenauswertung) bin ich bei 10000 Pulse pro Umdrehung. Eine Verdoppelung ist gewünscht (also 20000 Pulse). Das macht dann 300Hz x 20000 Pulse = 6 MHz. Ein Haufen Holz. Der CPLD hat 40 MHz (was eigentlich auch schon zu wenig ist, ist aber erstmal so implementiert worden vor Jahren).
Wegen der hohen Frequenz habe ich ja zunächst auch an ein PLL gedacht, aber die Version mit demZähler im CPLD funktioniert (wenn auch nur bis ca 200Hz, ich müsste wohl die Taktfrequenz des CPLD erhöhen :)).

Das nächste wäre, die Pulse überhaupt auszuwerten. Aber wie das so ist: straight forward. Mal schauen was kommt.

Daniel

Winne
31.01.2008, 12:37
Hallo Daniel,


Zunächst einige Fragen vor weg. Geht es nur um die Frequenz, oder um eine Positionsmestimmung?

Analog oder digital?


Ansatz digital

Taktquelle minimum 2*Foutmax synchronisiert oder 16*Foutmax asynchron
Von Flanke zu Flanke raufzählen step=1 anschließend runterzählen step=2 so genrierst du aus der Originalflanke mit doppelter Gechwindigkeit die fallende flanke für den folgenden Puls jeder Originalflankenenwechsel, steigend wie fallend iniziiert den nächsten Puls. der zähler wert des vorrangegangen Pulse(hig oder low)dient als basis für den zwischengeschoben Flankenwechsel.


Analog, läst sich das gleiche mit einem C, einem zwiefach/vierfach OAMP und etwas Hühnerfutter basteln. Näheres heute Abend wen noch Bedarf.

elmar
31.01.2008, 13:19
Hi,

Encoder werden hauptsächlich benutzt um die Position zuverlässiger zu bestimmen, da ein Schrittmotor unter Last schritte verlieren kann. Handelt es sich um einen Getriebemotor, so kann 1 oder 2 impulse pro Umdrehung des Motors schon ausreichend sein.
Ein Encoder KANN genauer sein als ein Schrittmotor, muss aber nicht!

Was mich jetzt mehr interessieren würde ist, warum eine Pulsvervielfachung benötigt wird! Die Genauigkeit wird dadurch keineswegs erhöht!

Gruß
Elmar

DanVet
31.01.2008, 14:15
@Winne: bitte alle Beiträge lesen. Die Verdoppelung mittels Zähler habe ich schon realisiert.

@Elmar & Winne: wie ich geschrieben habe geht es nicht um eine Positionsbestimmung (Motor läuft mit konstanter Drehzahl), sondern darum, dass zu bestimmten Winkelpositionen eine Messung ausgelöst werden soll. Diese Winkelschritte sollten halbiert werden (also die Encoderpulse verdoppelt werden). Man könnte auch einen Encoder nehmen, der mehr Pulse bringt, aber es findet sich kein entsprechender Hersteller, der unsere Encoderanforderungen erfüllen kann (unter anderem ist eine Hohlwelle von 56mm erforderlich).

Aber mit der Zählerlösung bin ich jetzt erstmal ganz zufrieden. Vielen Dank für eure Diskussionsbereitschaft.

Daniel

Winne
31.01.2008, 18:21
Hallo Daniel

Sorry, meine Mittagspause war kurz und ich daher hatte mich auf Dein letztes Posting bezogen, obwohl ich gelegentlich in den Thread geschaut habe, waren mir offensichtlich Details entgangen.

Winkelgenauigkeit ist nur exakten Pulsen zu erreichen. Zeitliche Interpolationen (Frequenzverdopplung) helfen nur bei ausreichender Trägheit weiter.

Im Aufzugbau verwenden wir ebenfalls Hohlwellenencoder üblicherweise mit 1024 Pulsen per 360° das reicht Dank Getriebeuntersetzung meist für eine Positioniergenauigkeit von unter 0,5mm.

Ich kann jedoch mal bei unseren Lieferanten schauen, ob darunter einer zu finden ist der Deine Spezifikationen erfüllt.

elmar
31.01.2008, 18:43
Hi,

kannst Du nicht zwei physikalisch phasenverschoben angebrachte Encoder benutzen und die vervielfachung mit A B C D statt nur A B herstellen?

Gruß
Elmar

name
31.01.2008, 18:45
DanVet

hast du hier http://www.heidenhain.de/ schon nachgeschaut ?

Winne
31.01.2008, 19:37
oder hier

http://www.wwlift.de/index.php?module=BroVBP&object=4878440879494268057

dort gibt es mehrere Anbieter mit 2048 Impulsen/Umdreheung

oder dort findest du bestimmt den richtigen http://www.hengstler.com/

DanVet
01.02.2008, 13:00
@name: heidenhain setzen wir schon ein
@winne: leider nur binäre Teilung, wir brauchen 1250/2500/5000 etc.
@elmar: diesen Gedanken hatte ich auch schon. Man könnte auch zwei Abnehmer (im Moment haben wir ein Zahnrad das induktiv abgetastet wird) installieren. Allerdings ist die Justage von einem Abnehmer schon etwas fummelig, wie das dann erst bei zweien aussieht? Und diese dann auch noch phasenverschoben? Hm.. vielleicht kann man im CPLD schieben.

Ich glaube Emlars Variante würde ich mal verfolgen wollen, wenn es notwendig wird. Mit der Verdoppelung der Vervierfachung bin ich erstmal zufrieden :)

Daniel

Rudo
01.02.2008, 13:13
hi,
es kommt vllt. auch drauf an, mit welchen Zeitkonstanten du leben kannst.
Eine denkbare Methode waere z.B. mit einem kleinen Microcontroller die Originalpulse zu messen und dann proportional vervielfacht via SPI mit einem DDS-Chip ausgeben. Der AD9834 kann 75MHz, wenn ich mich recht entsinne.

MacSeck
01.02.2008, 14:42
600Hz, top, da freut sich jeder 4046 als Komparatoreingangssignal für den Phasenvergleich drüber. Ver"zigvervielfältigung" am anderen Ende (Komparatoreingang Nr.2), das macht der auch spielend bis in den > 5MHz-Bereich. 74er Serie nehmen, also 74-4040. Dafür sind PLLs gebaut worden.
Ab 100 Mhz empfiehlt sich was diskretes (halbe halbe, diskreter HF-Oszillator mit Vorteiler und SAA1023/1024 als PLL z.B (integriert in den SAA1023).
Was glaubt ihr, wie die ganzen UKW-Radios Frequenzen im Raster 25kHz trimmen?
100Mhz rein (1. Komp.), vergleichen mit 4Mhz QuarzTakt (2.Komp.) und Oszillator per Varicap nachregeln, jedes blöde Radio wo PLL draufsteht macht das heute a´la "lach ich drüber"...
Wie gesagt, die 74(4046) ist bis 30Mhz. locker gut, also 600Hz Ver- "0,5-millionfachung", sprich Motorumdrehungsposition (360 Grad/0,5Mio.)

elmar
01.02.2008, 19:35
Hi,

bei 6Mhz als Ziel kannst Du aber bereits die HF frequenzverdoppler benutzen!

Anderer Ansatz ist eine Mischerdiode, einfach das Sensorsignal mit einem "Multiplikator" aus einem frequenzgenerator mischen - oder das Signal mit sich selber mischen zwecks verdopplung. Jetzt ist nur auszuprobieren, ob das dann auch Phasenstabil ist...


Gruß
Elmar

Winne
01.02.2008, 22:18
Alles schön, für nahezu konstante Frequenz/Drezahl. Aber wie siehts bei nichtlinearer Drehzaländerungen oder an der unteren Drehzahlgrenze aus, beim Motorstart und Motorstop. Da müste die (Beschleunigungsänderung) entspricht dF´´ /dt in die Interpolation einfließen um hinreichend winkelgenau zu werden. Gegen Limes 0 wirds gar unmöglich ohne Differenzierungen noch höherer Ordnung.
Nein hier taugen nur Inkrementalgeber welche die gewünschte Auflösung oder höher besitzen.

Oder hatte ich das wieder falsch verstanden und die Drehzahl soll (nahezu) konstant bleiben.

elmar
01.02.2008, 22:59
Hi,

so wie ich das verstehe handelt es sich um eine Versuchsanordnung die mit fester Drehzahl betrieben wird und bei einem versuch zu bestimmten Drehwinkeln irgendwas ausgelöst werden soll.

Ich kenne das vom "Gläsernen Verbrennungsmotor". Da ist ein Zylinder aus Glas und es wird ein laserstrahl durchgeschickt. Bei jeder Umdrehung wird ein Foto gemacht, jeweils bei einer anderen Stellung der Kurbelwelle. An dem entstehenden Film kann man dann sehen wo und wie viel NOx erzeugt wird oder die ausbreitung der Schockwelle erfassen. Das wird benutzt um Motoren effizienter und Umweltfreundlicher zu machen.

Nur hier werden aus irgend einem Grund sehr feine Winkelauflösungen gebraucht, mehr als der Geber erzeugen kann.

Gruß
Elmar

Winne
02.02.2008, 08:45
Also bei konstanter Drehzahl gibts nur eine genaue Lösung: PLL zum synchronisieren von f1=2f0 oder f2=4f0

verwirren tut mich allerdings die gewüschte Winkelbasis von 500-2000/360°.

So etwas erscheint mir zumindest ungewöhnlich da es mindestens einen periodischen Fehler erzwingt. Jedenfalls ist mir keine arythmetische oder graphische Methode bekannt mit der sich dieses mathematische Problem
lösen lässt, welches ja fasst der Quadratur des Kreises gleichkommt.

Dies ist meines Errachtens ja der Grund weshalb man sich abweichend vom 6 basierten Kreisteilungen welche graphisch leicht darstellbar sind zu binärbasierten bewegt hat, welche ohnehin besser zu binärbasierten Digitalsystemen passt. Nie aber eine 10er teilung sich durschsetzen konnte.

Bin auf die plausible Begründung des Wunsches nach einer dezimalbasierten Teilung gespannt. Nicht das ich deeren legitimität in frage stelle? Allein der Sinn dessen interessierte mich, schon weil man ja nie genug lernen kann.:cool:

elmar
02.02.2008, 13:35
Hi,

bei PLL wäre ich aber vorsichtig, da es sich um einen Regelkreis handelt, der nur im resultierenden Mittelwert genau ist. Daher dürfte man sich zwar keinen "Wander", dafür aber einen deutlichen "Jitter" einhandeln. Bei der hohen auflösung dürfte der Fehler des Jitters zeimlich dramatisch ausfallen!

Gruß
Elmar

Felix Weiss
02.02.2008, 16:20
Ich habe mich PLLs noch nicht praktisch betätigt, aber dürfte die PLL den Jitter des Sensors nicht sogar noch weiter reduzieren, solange der Motor ausreichend gleichmäßig läuft? Dazu werden ja PLLs auch verwendet.
Dazu handelt es sich doch blos um eine verdopplung/vervierfachung. Das Dürfte für eine PLL doch kein Problem darstellen.

Grüße Felix

Winne
02.02.2008, 16:32
PLL |= PLL

Entscheidend ist wie der Regelkreis abgestimmt ist siehe 2Punkt versus PID Regler

Winne
02.02.2008, 16:48
Symptom: keine Erwärmung

Trafo brummt wie immer in Intervallen.
Alle anderen Vorgänge scheinen normal abzulaufen.
Sicherheitsschaltung scheint o.k.

Magnetron: Panasonic "M210-M1"

Tips? zur Fehlereingrenzung erbeten.


Serien C?

Entlatdewiderstände ca 9MOhm(i.O.)
Schalter scheinen Auch o.k.

Winne
02.02.2008, 17:14
sorry,

sollte neues Thema werden.

hat sich erledigt, MW tut vorerst wieder warum auch immer.

elmar
02.02.2008, 21:29
Hi,

gerade das ausbügeln des PLL erzeugt den Jitter, da die Phasenlage zwischen ein- und ausgangssignal unabhängig ist. Es geht ja darum die Winkelstellung aus den Pulsen zu gewinnen - und das ist phasenabhängig! Man erhält zwar eine frequenzvervielfachung, aber die Ausgangsfrequenz hat eine beliebige Phasenlage zum Eingangssignal. Diese wird ja durch den VCO (Voltage controled Oscillator) erzeugt und hat primär nichts mit der Eingangsfrequenz zu tun!

Gruß
Elmar

guidob
03.02.2008, 00:43
Hi Elmar,

vorsichtig: die PhaseLockedLoop ist sehrwohl phasentreu. Daher ev. Probleme
beim Folgen von Frequenzänderungen. Das bekommt man prinzipiell in den
Griff, ist aber halt ein Regelkreis und entsprechend einzustellen. Für rein
digitale Frequenzvervielfachung blödsinnig, in der HF überholt durch DDS.

Gruß,

guidob

elmar
03.02.2008, 12:24
Hi,

die Phasentreue besteht aber nur im "Eingeschwungenen" Zustand! Ändert sich die Eingangsfrequenz "minimal", so wird erst mal eine Phasenabweichung auftreten, was ich vereinfacht "Jitter" genannt hatte. Wenn die Drehzahl konstant ist, dann ist PLL eine super sache. Zumindest hat man dann eine konstante abweichung. Aber je nachdem was beim versuch passiert, kann es sprünge in der Drehzahl geben, die den PLL erst mal rumregeln lassen.

Gruß
Elmar