www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Auswertung Motor Encoder


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ARM-Fan (Gast)
Datum:

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

Autor: ARM-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank B_. (frank_b) Benutzerseite
Datum:

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

Frank

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ARM-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Weinga-Unity (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Timo Kümmerle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Timo Kümmerle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.