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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.