Liebe Freunde, ich habe eine Frage zur Auswertung eines Drehgebers mit einem Atmega8. Ich weiß, dass Vieles in Tutorials dokumentiert ist, allerdings würde ich mich freuen, wenn jemand mal kurz über mein Grobkonzept schaut, bevor ich mich verrenne :-) Ich bin leider noch ein ziemlicher Neuling. Die Tutorials helfen mir zwar, zu verstehen, was überhaupt gemacht werden muss, allerdings habe ich das Gefühl, als ob ich etwas entscheidendes vergessen habe ;-) Ich nutze einen Atmega8 mit 16Mhz, und möchte einen 3-Kanal-Drehgeber auswerten (Kanäle A, B, Volle_Drehung) (Datenblatt: http://www.farnell.com/datasheets/20523.pdf). Der Motor läuft mit max. 3200 U/min = 54 U/s. Der Drehgeber liefert mir 500 Impulse/U. Ich komme daher auf eine Impulsfrequenz von 27 kHz. Da der Atmega8 nur die Drehzahl & Drehrichtung erfassen und per I2C weitergeben soll, ist es mit der 16Mhz-Taktung ohne Prescaler doch gut möglich, das Signal auszuwerten, oder? Zum Ablauf hatte ich mir folgendes überlegt: - Ich erkenne vom A-Signal jede steigende Flanke am ICP1. - In der ISR des ICP speichere die Zeit, lasse den zum ICP-gehörenden Timer1 laufen und messe wiederum die Zeit der nächsten steigenden Flanke. Über die Zeitdifferenz kann ich ja die Drehzahl in U/min berechnen. - In der ISR des ICP schaue ich ebenfalls, ob der B-Pegel HIGH oder LOW ist. Ist B=HIGH, dreht sich meine Welle gegen den Uhrzeigersinn, ist B=LOW, dreht sie sich im Uhrzeigersinn. - Die Drehzahl und die Drehrichtung kann ich dann einfach über UART,I2C,SPI weitersenden. Ist mein Ablauf so möglich? Oder habe ich etwas Entscheidendes übersehen, dass meine Auswertung auf diese Art unmöglich macht? Vielen Dank schon einmal für Eure Hilfe! Lucas
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.