Alps Quadratur Encoder?

Hallo,

ich stehe gerade vor dem Problem, dass ich einen Alps Drehimpulsgeber nicht ordentlich ausgewertet kriege. Bei einem Exemplar von Grayhill habe ich dagegen keine Probleme.

Der Grayhill zeigt exakt das Verhalten, das auch in der DSE-FAQ beschrieben ist. Der von Alps dagegen hat nur folgende moegliche Stellungen:

Rechtsdrehung: 00->10->01 Linksdrehung: 00->01->10

Die 11 fehlt also komplett. Die Stellung 00 ist zwischen 2 Rastungen untergebracht, soll also beim durchlaufen ueberhoert werden.

Der Fehler aeussert sich so, dass in Drehrichtung links nur jede 2. Rasterstellung gezaehlt wird und bei Rechtsdrehung wilde Spruenge in sowohl positive, als auch negative Richtung auftreten... *verzweifel*

Das ganze steckt mal wieder an einem Atmel Mega128 und soll Interrupt-gesteuert ausgewertet werden. Mein Quellcode fuer den Alps-Encoder sieht wie folgt aus: (AVR-GCC)

Danke fuer Eure Hilfe

Daniel

#include #include #include #include "src/global.h" #include "src/common/enc.h"

s08 encTable[16]={0,-1,+1,0,0,0,-1,0,0,+1,0,0,0,0,0,0}; s16 encPosition=0; u08 status=0; u08 quadrature_value = 0; s16 encMin=1; s16 encMax=6;

s16 encoderGetPosition(void) { return ( encPosition ); }

void encoderSetPosition(s16 position) { encPosition = position; }

void encoderInit(void) { // configure encoder direction pins for input cbi(DDRE, 6); cbi(DDRE, 7); // apply pullup resistors to direction inputs sbi(PORTE, 6); sbi(PORTE, 7);

cbi(EICRB, ISC61); cbi(EICRB, ISC71); sbi(EICRB, ISC60); sbi(EICRB, ISC70); quadrature_value=inp(PINE)>>6; //enable interrupts outp((1 encMax ) { encPosition = encMin; } else if (encPosition < encMin) encPosition = encMax; }

--
  .~.    Daniel Schramm  Phone: +49 231 6108112   Mail:daniel.schramm@gmx.de 
  /V\    Bruehlweg 36    Mobile:+49 178 8839848   ICQ: 35816985 
 Click to see the full signature
Reply to
Daniel Schramm
Loading thread data ...

Nachtrag:

hat evtl. jemand ein Datenblatt von einem derartigen Incrementalgeber, in dem die Impulsfolgen zu sehen sind, das wuerde schon sehr helfen...? Bei Alps.de werde ich nicht fuendig.

Bye Daniel

--
  .~.    Daniel Schramm  Phone: +49 231 6108112   Mail:daniel.schramm@gmx.de 
  /V\    Bruehlweg 36    Mobile:+49 178 8839848   ICQ: 35816985 
 Click to see the full signature
Reply to
Daniel Schramm

mit einem funktionierendem Impulsgeber klappt das Programm von gerade uebrigens mit folgender Tabelle:

s08 encTable[16]={0,-1,+1,0,0,0,0,0,0,0,0,0,0,+1,-1,0};

(Die Zwischenstellungen 11 und 00 werden dabei sauber ignoriert. Habe uebrigens auch gerade bemerkt, dass manche Drehbeber von Alps 00 und 11 als zwischenschritte haben, andere diese jedoch als statische. Bei denen von Grayhill sind alle 4 Stellungen auf Rastungen zu finden.)

Bye Daniel

--
  .~.    Daniel Schramm  Phone: +49 231 6108112   Mail:daniel.schramm@gmx.de
  /V\    Bruehlweg 36    Mobile:+49 178 8839848   ICQ: 35816985
 Click to see the full signature
Reply to
Daniel Schramm

Hallo Daniel,

ich glaube nicht, dass Dein ALPS kaputt ist, die sind meienr Erfahrung nach alle so, wenn Du mit dem Oszi nachmisst, kannst Du sehen, dass Gray-Code 'rauskommt, nur nicht immer in der richtigen Reihenfolge... Ich verwende bei den ALPS (STEC16) folgende Schaltung (2x):

+5V | 4k7 | ALPS--+--+---47k---+---+----Quadraturdecoder | | | Eingang +---->|---+ 4n7 Diode | GND

Dabei die Diode bei einem Kanal so 'rum und beim anderen Kanal andersrum. Welche Richtung an welchen Kanal weiss ich gerade nicht, einfach ausprobieren. Mit einem Schmitt-Trigger Eingang werden aus den Signalen dann halbwegs brauchbare phasenverschobene Signale. Damit geht die Quadraturdekodierung dann.

Gruss Hartmut

Reply to
Hartmut Schaefer

Hi!

Beim Gray wechselt aber gerade nie mehr als eine Leitung gleichzeitig den Zustand. Daniel schreibt zwar nicht, wie er die Signale aufgenommen hat, aber wenns denn wirklich so ist, dann wird das Ding wohl wirklich kaputt sein.

Gruß, Michael.

Reply to
Michael Eggert

Hallo Michael,

Deswegen schrieb ich ja auch "nicht immer in der richtigen Reihenfolge...", da haette ich wohl noch ein Ironie-Tag einfuegene sollen. Der Alps vermurkst die Flanken abhaengig von der Drehrichtung, so dass eben keine sauberen 90° verschobenen Signale 'rauskommen. Die Alps, die ich einsetze, haben sich genauso benommen wie von Daniel beschrieben, deshalb nehme ich an, dass es sich um das gleiche Problem handelt. Beispiel: Wenn man die Schalter im Alps gegen Masse schalten laesst und einen Pull-Up verwendet, sind die Ausgaenge im Ruhezustand auf 11. Bei Drehung im Uhrzeigersinn:

11 10 00 11, wobei der Wechsel von 00 auf 11 eben manchmal ueber 10 oder 01 laeuft, je nachdem, wie es der Schalter gerade mag oder was die Dekodierung draus macht (Abstand der beiden Flanken wenige ns). Im Uhrzeigersinn: 11 00 10 11, Wechsel von 11 auf 00 siehe oben.

Hinweis an Daniel: Wenn es ein STEC16 ist: Von vorne gesehen muss an den linken Pin die Diode mit der Kathode angeschlossen werden, rechts mit der Anode.

Gruesse Hartmut

Reply to
Hartmut Schaefer

Hallo Hartmut,

nach Austausch des Gebers habe ich jetzt auch festgestellt das die Impulse von dem Drehgeber eine Katastrophe sind, wahnsinnig am Prellen und eigentlich wirklich ein Fall fuer Deie Schaltung + Schmitt-Trigger.

Ich hatte jetzt allerdings keine Lust, die Hardware zu aendern und habe die Entprellung per Software realisiert.

Dise mechanischen Dinger von Alps sind wirklich eine Katastrophe im Vergleich zu den optischen von Grayhill, die liefern perfekte Signale und jeder Gray-Code ist eine eigene Position.

Wenn jemand Interesse an der kompletten Software hat, schicke ich sie gerne per PM zu.

Bye Daniel

--
  .~.    Daniel Schramm  Phone: +49 231 6108112   Mail:daniel.schramm@gmx.de
  /V\    Bruehlweg 36    Mobile:+49 178 8839848   ICQ: 35816985
 Click to see the full signature
Reply to
Daniel Schramm

Meinereiner hat den auch verwendet, aber ohne Probleme. Ich setze eine (MAWIN sei Dank) Statemachine ein und verwende bei den a & B Leitungen 100nF gegen Masse. Pullup kommt vom Prozessor intern und schalten tut der Encoder (ich weiss, tuten tut nur der Nachtwächter) gegen Masse. Damit habe ich nie Probleme gehabt. Schönere Drehencoder sind aber die von Bourns und günstiger. Da habe ich mal 50000 Umdrehungen gemacht und alle 1000 eine Impulsantwort. Das ist von Anfang bis Ende genausogut und per C gegen Masse auch gut hinzubekommen. Die optischen sind halt dann doch deutlich teurer.

Bye Carsten "Daniel Schramm" schrieb im Newsbeitrag news: snipped-for-privacy@olaf.komtel.net...

die

gerne

Mail: snipped-for-privacy@gmx.de

pinguin.sauerland.de

--
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
 Click to see the full signature
Reply to
Carsten Wenzler

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.