Forum: Mikrocontroller und Digitale Elektronik Inkrementalgeber auswerten


von Josef K. (Gast)


Lesenswert?

Hallo leute

Ih habe ein problem und habe es bisher nicht lösen können. Ich weis 
nämlich nicht wie man einen inkrementalgeber auswerten lässt (in der 
programmiersprache c). Hat jemand vieleicht einen code bzw ein 
codebeispiel zu diesem thema? Danke schonmal im vorraus.

Mfg Josef

von Ingo (Gast)


Lesenswert?

Suchfunktion nutzen, gibt's n Artikel zu!

von Yalu X. (yalu) (Moderator)


Lesenswert?


von spontan (Gast)


Lesenswert?

Es gibt sogar µCs, die haben die komplette Auswertung auf dem Chip in 
Hardware gegossen. Hilfreich bei hohen Frequenzen der Geber, schau doch 
mal bei PIC18F2431.

Aber über die Frequenz sagst Du leider nix aus. Für Drehgeber, die per 
Hand betätigt werden ist eine Software-Lösung ideal.

von Werner (Gast)


Lesenswert?

Josef K. schrieb:
> Ich weis nämlich nicht wie man einen inkrementalgeber auswerten lässt
> (in der programmiersprache c)

Vorher mußt du dir Gedanken machen, ob dein Rechner das schafft. Mit 
Inkrementalgebern ist man je nach Auflösung und Drehzahl schnell bei 
Frequenzen, die einen Softwarelösung arg beschäftigen können, so dass 
ein FPGA oder eine festverdrahtete Hardwarelösung die Methode der Wahl 
ist.

von Josef K. (Gast)


Lesenswert?

Ich benutze den pic 18f2455 und als inkrementalgeber  stec11B01.

von Werner (Gast)


Lesenswert?

Josef K. schrieb:
> Ich benutze den pic 18f2455 und als inkrementalgeber  stec11B01.

spontan schrieb:
> Aber über die Frequenz sagst Du leider nix aus.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Naja, wenn der Drehgeber seiner Bestimmung entsprechend eingesetzt wird,
muss die Auswertegeschwindigkeit wohl kaum diskutiert werden.

von kukuk (Gast)


Lesenswert?

Die ''3SchweizerMaedels'' lenken beim Lesen etwas ab...Herr Moderator 
;-)

von Werner (Gast)


Lesenswert?

Yalu X. schrieb:
> Naja, wenn der Drehgeber seiner Bestimmung entsprechend eingesetzt wird,
> muss die Auswertegeschwindigkeit wohl kaum diskutiert werden.

Dann könnte man auch eine der vielen Routinen hier aus dem Forum 
einsetzen, die man über die Suche findet (evtl. nach Anpassung an den 
PIC), z.B.
(1) Beitrag "Drehgeber/Encoder 1-, 2- oder 4-schrittig"

von MaWin (Gast)


Lesenswert?

> Ich weis nämlich nicht wie man einen inkrementalgeber auswerten
> lässt (in der programmiersprache c

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29

Am einfachsten realisiert man das mit einer state machine als Tabelle.
In C sieht das so aus.

  int table[4][4]={{0,1,-1,0},{-1,0,0,1},{1,0,0,-1},{0,-1,1,0}};
  int position=0; // zaehlen wir mal die absolute Position
  volatile int quadrature_input; // bit 0 und bit 1 sind 
Quadratureingaenge
  int new_quadrature_value, last_quadrature_value=quadrature_input;

Folgenden Code ausreichend oft wiederholen (in der Programm Hauptscheife 
oder einer Zeitgeber gesteuerten Interrupt Routine):

  new_quadrature_value=quadrature_input;
  position+=table[last_quadrature_value][new_quadrature_value];
  last_quadrature_value=new_quadrature_value;

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.