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.
.. wenn's sowieso ein zweiter Chip wird, warum nicht ein kleiner AVR zusätzlich ? Kann man dann über SPI, I2C o.ä. anbinden. Frank
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.