Forum: Mikrocontroller und Digitale Elektronik Winkelsensor


von Hans Peter (Gast)


Lesenswert?

Hallo,

ich muss zwei inkremental Encoder auslesen.
Aus verschiedenen Gründen, kann ich keine Sensoren mit analog Ausgang 
verwenden.
Wie kann ich ein inkrementelles Signal auslesen?
Und an welche Pins schließe ich die beiden Sensoren an?
Ich verwende einen ATmega32.

Hat jemand vielleicht ein Bsp. Programm?


Danke

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Hans Peter schrieb:
> Hallo,
>
> ich muss zwei inkremental Encoder auslesen.
> Aus verschiedenen Gründen, kann ich keine Sensoren mit analog Ausgang
> verwenden.
> Wie kann ich ein inkrementelles Signal auslesen?

Es gibt dort verschiedene Signalarten. Verbreitet sind zwei um 90° 
phasenversetze Digitalausgänge (TTL-Pegel o.ä.), meist mit A und B 
bezeichnet.

Im Prinzip erhältst Du in Drehrichtung so etwas (AB):
00, 01, 11, 10, 00 ... usw.

und entgegengesetzt:

10, 11, 01, 00, 10 ... usw.

Nach jeweils vier Werten hast Du also wieder den Anfangszustand.

> Und an welche Pins schließe ich die beiden Sensoren an?

Da sollte sich jeder Eingangspin eignen - aber Du musst natürlich darauf 
achten, dass die Spannung bei High-Pegel passt.

> Ich verwende einen ATmega32.
>
> Hat jemand vielleicht ein Bsp. Programm?

Das solltest Du jetzt alleine schaffen :-)

Übrigens gibt es auch Absolutwertgeber. Dort wird der absolute Wert 
ausgegeben, so dass man auch ohne Referenzfahrt immer exakt die Stellung 
des Encoders erhält.

Chris D.

von yalu (Gast)


Lesenswert?

Hier steht eine ganze Menge zu dem Thema

  http://www.mikrocontroller.net/articles/Drehgeber

Wenn danach noch etwas unklar sein sollte, kannst du dich ja wieder 
melden.

von Hans Peter (Gast)


Lesenswert?

Hallo,

danke dann schaue ich da mal.
Den Sensor gibt es in verschiedenen Ausführungen.
Einmal mit A und B als Ausgang, und dan noch mal mit A,B und Z 
(Referenzpuls)
Welche Ausführung ist den einfacher zu verarbeiten oder genauer?

LG & DANKE

von Karl H. (kbuchegg)


Lesenswert?

Kann man so nicht sagen.
Die Typen mit dem Referenzpuls haben noch einen zusätzlichen Ausgang, 
der dir mitteilt, wann der Encoder eine ganz bestimmte Lage einnimmt (Z 
= Zero)

Aber abgesehen davon sind beide gleich auszuwerten.

von Hans Peter (Gast)


Lesenswert?

Also wenn ich die Asuführung mit A,B und Z nehme, brauche ich dann noch 
die Refernzmarke, die ich bei Spannungsausfall anfahren muss, um wieder 
neu zu zählen?


LG

von Karl H. (kbuchegg)


Lesenswert?

Hans Peter schrieb:
> Also wenn ich die Asuführung mit A,B und Z nehme, brauche ich dann noch
> die Refernzmarke, die ich bei Spannungsausfall anfahren muss, um wieder
> neu zu zählen?

Das kommt auf deine Anwendung an.
Die Frage ist, ob dir diese Referenzmarke überhaupt irgendetwas hilft. 
Denn wenn deine Anwendung so ist, dass der Encoder mehere Umdrehungen 
machen muss, kannst du zwar die Z-Referenzmarke wieder anfahren aber du 
kannst dann immer noch um n volle Umdrehungen des Encoders daneben sein.

Stell dir ein Lautstärke-'Poti' an deiner Stereoanlage vor, welches 
rundum gedreht werden kann. Drehst da im Uhrzeiger, wirds lauter. Drehst 
du gegen den Uhrzeiger wirds leiser. Jetzt kannst du diesen Knopf, sagen 
wir 5 mal komplett im Uhrzeiger drehen um von minimaler zu maximaler 
Lautstärke zu kommen.
Dann nehmen wir noch eine Z-Markierung dazu: Ein weißer Strich auf dem 
Knopf und ein Lämpchen, das immer dann aufleuchtet, wenn der Strich 
genau senkrecht steht.
Hilft dir das in der Audio-Anwendung etwas? Wohl eher nicht. Du kannst 
zwar den Knopf wieder so drehen, dass der Strich senkrecht steht, aber 
über die dadurch eingestellte Lautstärke sagt dir das herzlich wenig.

von Oliver (Gast)


Lesenswert?

Erzähl doch mal was über die Anwendung. Denn "Inkrementalgeber auslesen" 
kann je nach Anforderung mit einem AVR sehr einfach, aber auch völlig 
unlösbar sein, weil die direkte Auswertung per Software doch relativ 
langsam ist.

Oliver

von Hans Peter (Gast)


Lesenswert?

Es geht um eine Nachführung, und durch den Sensor will ich wissen, wo 
(welcher Winkel) die Achse gerade hat. Und bei Sturm soll er in die 
senkrechte fahren, das könnte ja dann meine Referenzmarke sein.
Im datenblatt steht noch 184320 Impulse/Umdrehung.
Ich brauche nur die Winkel von 0° - 180°.

von Karl H. (kbuchegg)


Lesenswert?

Hans Peter schrieb:
> Es geht um eine Nachführung, und durch den Sensor will ich wissen, wo
> (welcher Winkel) die Achse gerade hat.

Und der Encoder ist wie mit der Achse verbunden?
Getriebe/Kein Getriebe
Kann der Encoder mehrere Umdrehungen machen, wenn die Achse verfährt?

> Und bei Sturm soll er in die
> senkrechte fahren, das könnte ja dann meine Referenzmarke sein.

Ist völlig wurscht.
Bei der Referenzmarke geht es darum, 1 bestimmte Ausrichtung zu kennen. 
Ob die in deinem Fall bedeutet: Antenne ist waagrecht oder Antenne ist 
senkrecht, spielt kaum eine Rolle. Impulse mitzählen musst du so und so.
Und ob du bei Sturm dann in die Position "Z schlägt an" oder in die 
Position "Impulszähler steht auf 6547" fährst, spielt auch keine Rolle 
mehr.

von Tauwetter (Gast)


Lesenswert?

>Ich brauche nur die Winkel von 0° - 180°.

Dann nimm doch endlich ein Poti!
Und Du mußt auch keine Angst haben, dass dadurch der Stromverbrauch 
Deiner Atmega32-Schaltung mehr als 160mA verbraucht; oder waren es 
200mA?

Das hatten wir doch alles unter "Hans Peter" in den letzten Tagen schon 
geklärt, hoffe ich.

von Karl H. (kbuchegg)


Lesenswert?

Tauwetter schrieb:
>>Ich brauche nur die Winkel von 0° - 180°.
>
> Dann nimm doch endlich ein Poti!

:-)
Viel zu banal.
Da würde mann dann ja auch nach einem Stromausfall die absolute 
Winkellage der Achse wissen. Wo bleibt denn da die Herausforderung?

von Billy der Bastler (Gast)


Lesenswert?

Zum Poti wäre lediglich noch anzumerken, dass man da nach Möglichkeit 
welche nehmen sollte, die für diesen Zweck gedacht sind (z.B. 
Servopoti). Normale Billig-Potis haben ein ziemlich großes Spiel(mehrere 
Grade) zwischen Achse und Schleifer,für genaue Winkelmessungen sind die 
daher nicht geeignet.

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.