Hat jemand Erfahrung mit der Auswertung von Motor Encodern mit Counter
ICs? Welche ICs eignen sich dafür?
Ich will meinen AVR nicht so sehr mit dem Auswerten der Encodersignale
belasten.
Viele Grüße!
Markus
Ansonsten kann es aber auch durchaus einfacher sein, mal schnell
nen kleinen CPLD (z.B. Xilinx 95xx) für die Aufgabe zu programmieren,
als was "exotisches" zu beschaffen. Kommt halt drauf an, obs privat
bzw. hobbymäßig eingesetzt werden soll, oder in der Firma.
Hallo Markus,
> Ich will meinen AVR nicht so sehr mit dem> Auswerten der Encodersignale belasten.
hat er denn soviel zu tun ?
Wenn Du ein A- und ein phasenverschobenes B-Signal hast, um Drehzahl und
Drehrichtung auszuwerten, dürfte es ihn nicht überfordern.
Gruss Otto
>Wenn Du ein A- und ein phasenverschobenes B-Signal hast,>um Drehzahl und Drehrichtung auszuwerten, dürfte es ihn>nicht überfordern.
Das kann nur der OP wissen, denn das hängt ja nun mal stark
von der max. Frequenz des Quadratursignals ab und läßt sich so
pauschal nicht abtun.
Danke für die schnellen Antworten!
Die Idee mit dem externen IC hatte ich, da die maximale Encoderfrequenz
bei ca. 5kHz liegt und ca. 3-4 Motorencoder ausgewertet werden müssen.
Das dürfte ein AVR zwar noch problemlos packen, aber für den Rest den er
tun soll hat er dann wenig Zeit ;-)
Preislich dürfte ein zweiter AVR oder ähnliches, aber deutlich günstiger
sein, da von den Spezial-ICs ja jeweils einer pro Motor benötigt wird.
Grüße
Markus
Wenn die 5kHz schon fix sind, sollte ein AVR mit 16MHz das packen. Ich
selbst hab auch erst sowas gemacht. Da ich eine zeitkritische
Kommunikation auch noch hatte, musste ich es dann doch per zusätzlichen
IC machen. Ich habe den HCTL2022 verwendet. Funktioniert super und die
digitale Filterstufe ist auch recht hilfreich.
mfg Weinga-Unity
Hallo,
ein ähnliches Problem beschäftigt mich auch derzeit. Ich bin dabei ein
Encodersignal abzugreifen um damit Drehzahl und Position zu bestimmen.
Der Encoder hat 100 Striche, Flankenwechsel wird mit Timer0 ISR
bestimmt.
Allerdings ist das echt mühsam, da der Mega8 alle 256 Takte in diese ISR
wechseln muß, um den Zustandswechsel auch bei 6000 UpM erkennen zu
können. (100 Striche mal 200 Flanken = 20 kHz)
Timer1 ist für pwm Reserviert.
Die Drehzahl ermittle ich dann über die Anzahl der ISr bei denen kein
Flankenwechsel statt gefunden hat.
Hat jemand schon mal etwas ähnliches programmiert und kennt ev. einen
eleganteren Weg (Stichwort-> Servoregler)
Gruß
Timo
@Timo
Nimm den Capture Eingang und zähl die Anzahl der Flanken.
Diesen Wert liest du in einem festgelegten Intervall ( Timergetriggert
IRQ) aus.
Da reicht auch ein größeres Intervall als 256 Takte, zb 20 ms.
@ Ralph (Gast)
>Nimm den Capture Eingang und zähl die Anzahl der Flanken.
Für rein Drehzahlmessung in nur einer Richtung ist das OK. Für echte
Encoderauswertung nicht. Siehe Drehgeber
MFG
Falk
Hallo Falk,
aber kann ich so eine Routine in der ISR abhandeln und das alle 256
Takte?
Ich glaube ich werde mir einen tiny oder einen der 7366 von lsicsi als
Puffer dazwischen legen und dann wie Ralph gesagt hat, nur alle 20 ms
die Position abrufen und aus der Positionsveränderung die
Geschwindigkeit ermitteln.
Aber ich finde diese Lösung unbefriedigend, der AVR müßte mit einer
geschickten Programmierung doch in der Lage sein, die Daten auszuwerten
und z.B. via RS232 auszugeben. Bei dem UHU Servoregler geht das, soweit
ich weiß, auch mit nur einem Mega8. Und der regelt auch noch die
Position mit!
Gruß
Timo
@ Timo Kümmerle (Gast)
>aber kann ich so eine Routine in der ISR abhandeln und das alle 256>Takte?
Naja, wenn mans geschickt oder in Assembler macht schon. Aber für vier
Kanäle wirds dann schon anspruchsvoll.
>Ich glaube ich werde mir einen tiny oder einen der 7366 von lsicsi als>Puffer dazwischen legen und dann wie Ralph gesagt hat, nur alle 20 ms>die Position abrufen und aus der Positionsveränderung die>Geschwindigkeit ermitteln.
Moment! Wenn du die Postition erfassen willst MUSST du die
vollständige Auswertung machen. Und ob du die dann alle ms oder 20ms
weiterleitest ist dann unwesentlich.
>Aber ich finde diese Lösung unbefriedigend, der AVR müßte mit einer>geschickten Programmierung doch in der Lage sein, die Daten auszuwerten>und z.B. via RS232 auszugeben.
Kann er.
>Bei dem UHU Servoregler geht das, soweit>ich weiß, auch mit nur einem Mega8. Und der regelt auch noch die>Position mit!
Knoff Hoff!
MFG
Falk
Eine eigene Frage?
Dieser Thread ist über 18 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.