Ohhhh - das hatte ich noch nicht herausgefunden, danke für diesen nützlichen Hinweis. Vielleicht ist meine Unwissenheit der Grund, dass meine autonomen Dosen so genau geregelt laufen können? Spott beiseite - ich verstehe das Argument wirklich nicht. Weil es ziemlich einfach ist, eine Geschwindigkeit zur errechnen aus 2 Abstandsmesswerten.Zitat von -skunk-
Brrrr, die Geschwindigeit "habe" ich ja bei meinem Aufbau auch nicht. Und Du hast vermutlich weder mein verlinktes Posting gelesen und schon garnicht ein paar weiter vorgeschaut - da steht nämlich Alles.Zitat von -skunk-
1) In meinem Controller läuft ein Timer als eine Art Borduhr, der im 50µs-Takt einen Wert hochzählt; er ist für vielerlei Zeitmessaufgaben im System nützlich. Diese Zeitscheiben werden bei 20000 - entsprechend einer Sekunde - auf Null zurückgesetzt. Dieser Zeitwert heißt Izeit_1. Anmerkung: mein controller läuft mit 20 MHz, da habe ich von einem 50µs-Takt zum nächsten 1000 Maschinenzyklen zur Verfügung - das ist ziemlich reichlich.
2) Hier wird gezeigt, wie ich die Encoder, je einer pro Motor, initialisiere damit sie einen Interrupt erzeugen wenn eine steigende Flanke erkannt wird. In dieser ISR werden die Encoderticks gezählt (gibt ne Wegmessung) und die aktuelle Bordzeit Izeit_1 zum Interruptzeitpunkt festgestellt.
3) Aus der Bordzeit des vorhergehenden Interrupts und der aktuellen Zeit ergibt sich eine Zeitdifferenz, die ich von einem Interrupt zum anderen gemessen habe.
4) Das Wunderbare ist jetzt, dass von einem Encodertick bis zum nächsten eine genau feststellbare Strecke gefahren wird - das gibt die Fahrzeuggeometrie und die Getriebeübersetzung her. Also kenne ich die Strecke und die dafür benötigte Zeit. Strecke pro Zeit ergibt also GENAU die gefahrene Geschwindigkeit. Diese Weisheit stammt noch aus frühen Schultagen (ich höre gleich auf zu ätzen).
Der Rest der Regelung (ich habe bei mir eine Geschwindigkeitsregelung) ist im Link vorgestellt.
So - nun habe ich beim WALL R eine ähnliche Aufgabe wie sie sich Dir stellt: ich muss nicht nur die Geschwindigkeit der beiden Räder regeln, damit ich einen Geradlauf habe - ich muss auch beizeiten langsamer werden, damit ich nicht in die Wand einbombe. Das hat Richard ja im Wesentlichen vorgestellt, es ist eine eher einfache Aufgabe/Lösung. Es wird einfach die Geschwindigkeitsvorgabe entsprechend dem Abstandswert ausgegeben.
Irgendetwas noch unklar?
Lesezeichen