-
-
Erfahrener Benutzer
Roboter Experte
Eine viel ressourcensparendere Möglichkeit wäre, die Impulse mit einem Timer zu zählen. Die Atmegas haben Timer, die extern getriggert werden, auf diesen Eingang legst du dann dein Signal an. Dann stellst Du einen Interrupt ein, der auslöst, wenn dieser Timer überläuft. Einen anderen Timer benützt du für die Zeitmessung.
Vorgangsweise:
-beide Timer starten bei 0, Timer1 wird extern getriggert, Timer2 über den Clock
-wenn Timer0 einen Überlauf hat, schaust du dir die verstrichene Zeit an, aus der Zeit und der bekannten Anzahl der Impulse kannst Du auf die Geschwindigkeit schliessen.
-ein Überlauf von Timer1 muss noch gehandelt werden, eigentlich hast du beim Überlauf von Timer1 auch eine Geschwindigkeit, denn da hast die fixe Zeit, und die Anzahl der Impulse kannst Du auslesen.
Wenn nicht genug Timer mit externer Triggerung vorhanden sind, könnte man vielliecht die Interruptroutine so verändern, dass in der Routine selbst nur eine Variable bei jedem Impuls erhöht wird (Software-Zähler). Nach einer bestimmten Zeit (Timer) wird dann die Anzahl der Impulse ausgewertet.
Weiter ist zu bedenken, (wie es schon Picknick geschrieben hat), ob eine solche Auflösung generell notwendig ist, denn wenn noch ein Getriebe nachgeschalten ist, ist die Auflösung am Rad definitiv viel zu hoch.
MfG
pongi
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen