Forum: Mikrocontroller und Digitale Elektronik Auswertung Motor Encoder


von Markus (Gast)


Lesenswert?

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

von ARM-Fan (Gast)


Lesenswert?

Schau mal hier: http://www.lsicsi.com/encoders.htm
Die machen schöne Sachen.

von ARM-Fan (Gast)


Lesenswert?

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.

von Frank B. (frank_b) Benutzerseite


Lesenswert?

.. wenn's sowieso ein zweiter Chip wird, warum nicht ein kleiner AVR 
zusätzlich ? Kann man dann über SPI, I2C o.ä. anbinden.

Frank

von Otto (Gast)


Lesenswert?

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

von ARM-Fan (Gast)


Lesenswert?

>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.

von Markus (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?


von Weinga-Unity (Gast)


Lesenswert?

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

von Timo Kümmerle (Gast)


Lesenswert?

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

von Ralph (Gast)


Lesenswert?

@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.

von Falk B. (falk)


Lesenswert?

@ 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

von Timo Kümmerle (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

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.