mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Winkelsensor (Inkrementalencoder) an ATmega32


Autor: Hans Peter (gableguy2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

allen eine frohes neues Jahr 2010.
Ich würde gerne zwei Winkelgeber an einen ATmega32 anschließen.
Die Sensoren sollen folgende sein:

http://www.asm-sensor.com/asm/product_detail.php?l...

Die haben einmal Winkelgeber mit analogem Ausgang, aber auch 
Inkrementalencoder.
Die Inkrementalencoder sind für mich ein Problem. Wie schließe ich die 
am Besten an einen ATmega32 an, um den Winkel auszulesen?

Will einfach nur wissen, ob und wie ich den Sensor (egal welcher von der 
HP) an den ATmega32 anschließen kann. Oder ob ich noch eine Schaltung 
vor dem mC Eingang brauche?


LG & Danke

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans Peter schrieb:
> Will einfach nur wissen, ob und wie ich den Sensor (egal welcher von der
> HP) an den ATmega32 anschließen kann. Oder ob ich noch eine Schaltung
> vor dem mC Eingang brauche?

Hallo,

die Encoder haben 90 Grad versetzte Signale und einen Nullimpuls, das 
ist üblich und bewährt. Zur Auswertung braucht man einen 
Richtungsdiskriminator und an dessen Ausgang einen Auf-Abwärtszähler. 
Normalerweise realisiert man das in programmierbarer Logik, weil für 
reine Softwarelösungen meistens die maximalen Schrittfrequenzen zu hoch 
sind. Die meisten Zähler in µP können auch garnicht vor und zurück 
zählen.

Ausserdem ist das System nach dem Einschalten in einem undefinierten 
Zustand, als erstes muss sich die Achse solange (langsam) drehen, bis 
der Nullimpuls durchläuft - damit werden die Zähler auf 0 gesetzt und 
erst von da an ist die absolute Winkelposition bekannt.

Gruss Reinhard

PS es gab für solche Encoder das IC 74LS2000. Vilelleicht findest du 
noch ein Datenblatt, daraus kann man die nötigen Funktionen entnehmen.

Autor: Hans Peter (gableguy2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für deine Antwort.
Also sind diese Sensoren nicht so gut? Wenn bei jedem Start, zuerst der 
Nullpunkt gesucht werden musss, um dann zu starten und richtig zu 
zählen?
Es gibt auch noch magnetische Sensoren, die am Ende der Welle befestigt 
werden, dann sind diese schon besser?


LG

P.S.: Leider finde ich nix über das IC.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>PS es gab für solche Encoder das IC 74LS2000. Vilelleicht findest du
>noch ein Datenblatt, daraus kann man die nötigen Funktionen entnehmen.

Der 74LS2000 war leider nicht immer zuverlässig. Der HCTL-2000 war da 
wesentlich besser. Heute scheint es nur noch die Nachfolger HCTL-2022 
bzw. HCTL-2032 zu geben.
http://www.farnell.com/datasheets/20478.pdf

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans Peter schrieb:
> Es gibt auch noch magnetische Sensoren, die am Ende der Welle befestigt
> werden, dann sind diese schon besser?

kenne ich nicht, aber grundsätzlich ist es so: wo inkremental dran 
steht, ist das ein Zählsystem, und das muss an der Nullposition resettet 
werden. Es gibt auch Absolut-Drehgeber, aber die brauchen viele 
Lesespuren (= Bits Auflösung) und sind daher sehr viel teurer. Und 
Synchro-Resolver sind analog und man muss daher eine ADC-Wandlung 
entsprechender Genauigkeit nachschalten. Ein eingebauter 8-Bit-ADC löst 
256 Stufen auf, das wird nirgends hin reichen.

Gruss Reinhard

Autor: Tauwetter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wunder mich ein bißchen über die Antworten. Die o.g. Winkelsensoren 
liefern doch den abs. Winkel als Ausgangsspannung bzw. -strom. Zur 
Auswertung reicht dann der ADC.

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tauwetter schrieb:
> Ich wunder mich ein bißchen über die Antworten. Die o.g. Winkelsensoren
> liefern doch den abs. Winkel als Ausgangsspannung bzw. -strom. Zur
> Auswertung reicht dann der ADC.

Der Fragesteller wollte den Unterschied zwischen Winkelgebern mit 
Analogausgang und Incrementalencodern wissen - was gibt es da an den 
Antworten zu meckern? Und wenn, warum schreibst du dann nicht einfach 
eine nach deiner Meinung korrekte Antwort?

mit befremdetem Gruss Reinhard

Autor: Tauwetter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich auf die angegebene Seite klicke, sehe ich lauter 'absolute 
Winkelsensoren' mit analogem Ausgang.
Darum wundert es mich, dass darauf garnicht eingegangen wird, zumal 
diese recht einfach an einen Mega32 anzuschließen sind.
Mehr nicht!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tauwetter schrieb:
> Wenn ich auf die angegebene Seite klicke, sehe ich lauter 'absolute
> Winkelsensoren' mit analogem Ausgang.
> Darum wundert es mich, dass darauf garnicht eingegangen wird, zumal
> diese recht einfach an einen Mega32 anzuschließen sind.
> Mehr nicht!

Welchen Teil der Fragestellung aus dem Ursprungsposting ...

> Die Inkrementalencoder sind für mich ein Problem. Wie schließe
> ich die am Besten an einen ATmega32 an, um den Winkel auszulesen?

... verstehst du nicht?

Autor: Andi Hofmann (Firma: S&H) (andish)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Für's Archiv und weil ich auch gerade konkrete Sensoren suche:
Heute würde ich Infineon TLE5011 oder Melexis MLX90324 probieren, nur 
als Beispiel. Melexis kann wahlweise analog oder digital ausgeben, mit 
programmierbarem Winkelbereich. (Das ist auch der (einzige) Nachteil: 
komplexer Chip, langes Lesen im Datenblatt. Und nicht ganz billig, 6€+ 
;)

Rotation: Winkel: Im einfachsten Fall brauche ich nur einen Scheiben- 
oder Ringmagnet, der N-S in der Ebene hat. Nennt sich "diametral" 
magnetisiert, einfach in einem Magnetshop danach suchen.

Manche Pinwand-Magnete haben diese Konfig, so aus versehen.
Rheinmagnet.de kann auch Ringmagnete aus Q100 ummagnetisieren. Ist halt 
für große Stückzahlen, da Produzent.

Nette magnetshops im iNet verraten die Konfiguration auch.
Meidet Neodym. Nicht nur weil's giftig ist. Die Temperatur, ab der er 
seine Magnetisierung verliert (Curie und so;), ist erschreckend niedrig, 
manchmal 80°C als max. Temp. angegeben. Coldan hilft, macht's aber 
teuer.


Was ich noch suche, ist ein einfacher kombinierter Sensor, der sowohl 
digital Zählimpulse ausgibt als auch (analog oder seriell) eine Art 
Winkel in der Phase des Magnetsignals.
Zur Zeit tendiere ich zu einem analogen, da ich den analogen Ausgang 
auch auf einen digitalen Eingang packen kann, um wenigstens digital mit 
zu zählen.

Damit hat man sowohl bei schneller Fahrt die Gewähr, schnell genug mit 
zu kommen, als auch bei Schleichfahrt bzw. der Aufgabe, eine Position zu 
halten, genug Information, um den Motor präzise anzusteuern.
(Da darf sich dann der A/D - Wandler auch ein bisschen Zeit lassen.)


Zur Zeit sieht es so aus, dass ich zwei Sensoren an meinen Ringmagnet 
(aus CD-Rom, 12 Polwechsel per Umd.) packen werde, da ich schon den rein 
digitalen TLE4966 verbaut habe.

Ich habe übrigens mit einem einfachen 8Bit-Atmel (Arduino nano bzw. pro 
micro) erfolgreich sowohl zwei einfache digitale Hall-Sensoren aus alten 
Lüftern als auch einen digitalen Infineon TLS4966-3K (Richtung und Puls) 
ausgewertet. Die einfachen Halls konnten mit Interrupt-gesteuertem 
Software-Quadratur-Decoder auf jede Flanke (also 4 Pulse pro Periode) 
arbeiten, man dreht einfach im Config-Register die Flankenrichtung bei 
jedem Interrupt um; der Rest ist eine Art State-Machine, die die 
Quadratur-Dekodierung der erlaubten Übergänge in einer kleinen Tabelle 
erledigt.

Der Infineon TLE4966 macht nur 2 Flanken pro Periode.

Verloren habe ich bei beiden Aufbauten (Quadratur bzw. Richtung/Pulse) 
keine Pulse. Man muss halt realistisch bleiben, und austesten, was ein 
µC an IRQ-Frequenz in der Summe ab kann, bevor sich was verschluckt. 
Hatte Raten so um ein paar tausend / sec..

Die Atmel xMegas und auch die cypress pSoC's und so manch andere 
(Arduino Due: Sam3XE) haben quadratur-decoding eingebaut. Wer das haben 
möchte.

Für den Raspberry Pi mag ich mir mal die vorgeschaltete CPLD (kleines 
FPGA)  im Projekt "Guzuntu" ansehen, preiswert, flexibel, 5V-tolerante 
Eingänge, und was man an decoding braucht, hey, kein Problem ;) s. 
github: https://github.com/Guzunty/Pi/wiki/Frequently-aske...
Leider hat er anders als die pSoC's nix mit Analog am Hut.

Wer wirklich zu 0 EUR arbeiten will, kommt auch zum Ziel. Ein paar 
Lüfter mit digitalen Hall-Sensoren, und ein paar Floppy, CD-Rom- oder 
Druckermotoren geben immer mal analoge Hall-Sensoren her (manche 
größeren CPU-Lüfter vom Schrott auch).
Man muss dann all das Know How, das Chip-Hersteller in die Auswertung 
der Sensoren gesteckt haben, selber aus dem Ärmel schütteln. Korrekte 
45° Verschiebung der beiden analogen oder digitalen Einzel-Sensoren 
z.B.. Oder eine Temperaturkompensation. Die meisten Chips "choppen", 
tauschen also Strom- und Mess-Pfad an den 4 Anschlüssen eines 
Hall-Elements. Und so weiter... Doch ich weiß eines: 12bit pro Umd. 
brauch ich gar nicht. Aber so 5-6 die übrig bleiben, wären nett ;)

Viel Spaß!

Andi

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.