Inkrementalgeber auswerten

Gast #3088476
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
Gast #3088482
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.
Gast #3088511
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.
Gast #3088682
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;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren