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
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.
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.
Josef K. schrieb: > Ich benutze den pic 18f2455 und als inkrementalgeber stec11B01. spontan schrieb: > Aber über die Frequenz sagst Du leider nix aus.
Naja, wenn der Drehgeber seiner Bestimmung entsprechend eingesetzt wird, muss die Auswertegeschwindigkeit wohl kaum diskutiert werden.
Die ''3SchweizerMaedels'' lenken beim Lesen etwas ab...Herr Moderator ;-)
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"
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.