Hallo an alle, ich habe ein seltsames Problem. An der Hochschule arbeite ich an einem kleinen Projekt, eine Implementierung von einem ABS-System in einem Modellauto (elektrohydraulische Bremse). An den Rädern sind Inkrementalgeber installiert mit 1200 Strichen. Diese senden ihr Signal an einen ATMega88-20 an die Eingänge INT0 und INT1. Eine Auswertung der Drehrichtung ist nicht nötig. Im Programm selbst werden die Signale per ISR detektiert (rising edge). Tritt ein solcher Event auf, wird einfach ein uint16_t Variable (natürlich volatile) hochgezählt. Den aktuellen Wert lasse ich per USART auf eine Konsole ausgeben. Bin noch beim Debuggen. Mein Problem ist aber, daß bei sehr langsamer Bewegung des Rades meine Zählvariable nicht hochgezählt wird. Erst bei schnellerer Drehung reagiert es. Steht das Rad anschließend wieder und wird erneut nur ganz leicht bewegt, geht der aktuelle Zählwert verloren, wird zu 0. Ein ganz merkwürdiges Verhalten, brauche auch eine Auswertung von kleinen Drehraten. Die Pull-Ups für die Eingänge sind ebenfalls aktiviert. Kennt jemand ein solches Verhalten bzw hat jemand Tipps für mich? Wäre klasse für meine Nerven :-) Danke! Grüße, Markus
Markus Groh schrieb: > Im Programm selbst werden die Signale per ISR detektiert (rising edge). > Tritt ein solcher Event auf, wird einfach ein uint16_t Variable > (natürlich volatile) hochgezählt. Ausschluss einer fehlerhaften Software: Hast du einen minimalen Sourcecode mit dem sich das Problem reproduzieren lässt? > Den aktuellen Wert lasse ich per USART auf eine Konsole ausgeben. Bin > noch beim Debuggen. Mein Problem ist aber, daß bei sehr langsamer > Bewegung des Rades meine Zählvariable nicht hochgezählt wird. Erst bei > schnellerer Drehung reagiert es. Steht das Rad anschließend wieder und > wird erneut nur ganz leicht bewegt, geht der aktuelle Zählwert verloren, > wird zu 0. Ausschluss einer fehlerhaften Hardware: Wurde das Signal schon oszilloskopiert? Kann es sein, dass ein unerwartetes Signal angeliefert wird?
Zitat : An den Rädern sind Inkrementalgeber installiert mit 1200 Strichen. Diese senden ihr Signal an einen ATMega88-20 an die Eingänge INT0 und INT1. Eine Auswertung der Drehrichtung ist nicht nötig. Zitat Ende Wenn die Drehrichtung nicht ausgewertet wird, genügt es doch, einen Ausgang des Drehgebers zu zählen. Ansonsten wie oben erwähnt, Software-Listing schicken und Signalqualität überprüfen. ciao WEIF
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.