Forum: Mikrocontroller und Digitale Elektronik Geschwindigkeit durch integration eines Beschleunigungssignals


von Toni E. (johny123)


Lesenswert?

Ich habe einen Beschleunigungssensor, von den Werten will ich die 
Geschwindigkeit bekommen.

Reicht es so: V0+a*dt

Ich messe den Zeitabstand zwischen zwei Signalen und multipliziere mit 
der momentanen Beschleunigung? Am Anfang für v0 einfach 0 nehmen?

von Klaus H. (hildek)


Lesenswert?

Toni E. schrieb:
> Ich messe den Zeitabstand zwischen zwei Signalen und multipliziere mit
> der momentanen Beschleunigung?

Wenn deine Beschleunigung während dt konstant ist, ja. Sonst ist es halt 
nur eine Näherung, die gut sein kann, wenn a sich wenig ändert und dt 
kurz ist.

> Am Anfang für v0 einfach 0 nehmen?
Du bekommst halt immer nur die Geschwindigkeitsänderung für jedes 
Intervall dt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Toni E. schrieb:
> Am Anfang für v0 einfach 0 nehmen?
Wenn das zur Realität passt...

Aber du wirst schnell sehen dass im echten Leben mit sich ändernder 
Beschleunigung durch die Ungenauigkeiten des diskreten Signals und der 
anschließenden Berechnung diese Geschwindigkeitsbestimmung nur 
kurzzeitig funktioniert.

: Bearbeitet durch Moderator
von Frank K. (fchk)


Lesenswert?

Toni E. schrieb:

> Ich messe den Zeitabstand zwischen zwei Signalen und multipliziere mit
> der momentanen Beschleunigung? Am Anfang für v0 einfach 0 nehmen?

Rein theoritisch kann man das so machen. In der Praxis wird das mit den 
üblichen Sensoren für ein paar € sehr schnell sehr ungenau. Wenn Du 
irgendeine Möglichkeit hast, die Geschwindigkeit oder den Ort direkt zu 
messen, dann mach das.

Für die Trägkeitsnavigation geeignete Sensoren sind mindestens 
dreistellig, eher vierstellig im Preis.

fchk

von Rainer W. (rawi)


Lesenswert?

Toni E. schrieb:
> Ich habe einen Beschleunigungssensor, von den Werten will ich die
> Geschwindigkeit bekommen.

Fliegt dein Beschleunigungssensor im freien Raum oder wirken auch noch 
andere Kräfte?
Ist dein Beschleunigungssensor offset-frei?

: Bearbeitet durch User
von Fritz G. (fritz65)


Lesenswert?

Toni E. schrieb:
> Reicht es so: V0+a*dt
>
> Ich messe den Zeitabstand zwischen zwei Signalen und multipliziere mit
> der momentanen Beschleunigung? Am Anfang für v0 einfach 0 nehmen?

Theoretisch geht das, gesteuerte Raketen machen das genau auf diese 
Weise. Durch zweifache Integration kommt dann die Position heraus:
https://www.aggregat4.de/pdf/Ger%C3%A4tebeschreibung_A4.pdf

Das Problem ist ein in der Praxis immer vorhandener Offset des 
Beschleunigungsmessers. Das führt zu einem mit der Zeit linear 
ansteigenden Fehler in der Geschwindigkeit, der Positionsfehler erhöht 
sich sogar quadratisch. Für Zeiten länger als ein paar Minuten muss 
daher durch eine externe Referenz nachkorrigiert werden.

von Purzel H. (hacky)


Lesenswert?

Der Offset eine analogen Sensors ist temperaturabhaengig. Daher kann man 
ihn nicht rauskompensieren. Der Offset fuehrt zu einem sich ueber die 
Zeit vergroessernden Fehler. Daher muss man periodisch, wenn moeglich 
kompensieren. Wenn man die Geschwindigkeit nicht erfassen kann, zB per 
GPS, kann man nochmals integrieren und bekommt die Position. Allenfalls 
kann man ueber die Position kompensieren, falls man die kennt.
Ein Drehbeschleunigungssensor, integriert liefert einen winkel. Der kann 
zB mit einem Kompass kompensiert werden. Kompensieren bedeutet, vom 
Istwert-Sollwert rechnet man den Offset zurueck, und verwendet den 
weiterhin.

von Rainer W. (rawi)


Lesenswert?

Purzel H. schrieb:
> Der kann zB mit einem Kompass kompensiert werden.

"Sensor Fusion" heißt das Stichwort

von Michi S. (mista_s)


Lesenswert?

Toni E. schrieb:
> Ich habe einen Beschleunigungssensor,

Ohne nähere Angaben gehen wir also von einem idealen Sensor aus, der Dir 
tatsächlich zu jedem Zeitpunkt die exakte Momentanbeschleunigung 
liefern kann.

> von den Werten will ich die Geschwindigkeit bekommen.
>
> Reicht es so: V0+a*dt
>
> Ich messe den Zeitabstand zwischen zwei Signalen
> und multipliziere mit
> der momentanen Beschleunigung?

Sofern die Beschleunigung in dem betrachteten Zeitraum tatsächlich 
konstant ist, dann funktioniert das mal für dieses eine Intervall.
Wenn Deine Messintervalle außerdem noch tatsächlich nahtlos aufeinander 
folgen, dann bekommst Du (mit Deinem perfekten Sensor) auch über 
beliebige, längere Zeiträume exakte Ergebnisse.

Allerdings ginge das in dem Fall auch viel einfacher:
Da die Beschleunigung in jedem einzelnen Intervall als konstant 
vorausgesetzt wurde, die Intervalle nahtlos auf einander folgen und jede 
reale Beschleunigungskurve stetig sein muß, ist die bleibt die 
Beschleunigung auch über beliebig lange Zeiträume konstant, wir haben 
also den Spezialfall der gleichförmig beschleunigten Bewegung und die 
Geschwindigkeit läßt sich auch mit der einfachen Formel:

v = a * t

ausrechnen.


Leider liefert Dir ein realer Sensor immer nur fehlerbehaftete Messwerte 
und damit stehst Du vor einem Problem: je kleiner Du dt wählst, umso 
mehr Fehlerterme summierst Du auf, vergrößerst Du aber dt, dann steigt 
der Fehler Deines Ergebnisses, weil Du ja Änderungen der Beschleunigung 
während diese Intervalls übersiehst.

von Rainer W. (rawi)


Lesenswert?

Michi S. schrieb:
> Leider liefert Dir ein realer Sensor immer nur fehlerbehaftete Messwerte
> und damit stehst Du vor einem Problem: je kleiner Du dt wählst, umso
> mehr Fehlerterme summierst Du auf,

Dann kommt es immer noch auf das Vorzeichen der Messfehler an.

von Sven B. (scummos)


Lesenswert?

Toni E. schrieb:
> Reicht es so: V0+a*dt

Mathematisch ist das vermutlich "gut genug", im Sinne von, es wird das 
Ergebnis nicht erheblich verbessern, etwas schlaueres zu machen.

Konzeptuell wird das vermutlich nicht funktionieren, die so ermittelte 
Geschwindigkeit driftet dir innerhalb kürzester Zeit völlig weg.

Beschreibe mal die reale Aufgabenstellung, dann kann man vielleicht ein 
funktionierendes Konzept empfehlen. Versuche irgendeinen Sensor-Input zu 
finden, der einen direkten Bezug zur Geschwindigkeit hat, zum Beispiel 
ein Odometer -- das funktioniert immer am besten.

von Maik .. (basteling)


Lesenswert?

Das Problem plagt Roboterbauer und Entwickler schon lange. Rakentenbauer 
noch länger ;). Deswegen wird für mobile Roboter gern in einigermaßen 
verlässlichen Abständen ein genauerer Positionswert zur Korrektur/ 
Stützung hinzugezogen. Ob nun über z.B im Boden eingelassene RFID 
Transponder, optische Referenzmarken oder RTK GPS ... Auch die schonmal 
etwas genaueren von den Antriebsrädern abnehmbaren Odometriedaten leiden 
ja unter Schlupf und veränderlichen Fehlern durch Last und 
verschleißbedingte Änderungen der Raddurchmesser.

von Xanthippos (xanthippos)


Lesenswert?

Das Stichwort für die Suchmaschine ist "Kalman-Filter". Da findest du 
jede Menge Beschreibungen wie du Geschwindigkeiten aus mehreren 
ungenauen Quellen berechnest.

von Peter D. (peda)


Lesenswert?

In Flugzeugen wird das benutzt, wenn alle anderen Möglichkeiten der 
Positionsbestimmung ausgefallen sind, z.B. die Antennen durch 
Blitzeinschlag zerstört.

https://de.wikipedia.org/wiki/Tr%C3%A4gheitsnavigationssystem

von Stephan (stephan_h623)


Lesenswert?

Nach 10 Minuten im Betrieb (Temperatur erreicht) geht das ganze ganz 
passabel über 0.5-2 Minuten auch mit günstigsten Sensoren.
Wenn irgendwas vibriert: vergiss es komplett.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Toni E. schrieb:
> Ich habe einen Beschleunigungssensor, von den Werten will ich die
> Geschwindigkeit bekommen.

Vielleicht beschreibst du dein Problem etwas genauer.
Die Lösung sieht bei periodischen Signalen anders aus als bei beliebigen 
eindimensionalen Signalen oder gar dreidimensionalen Signalen mit 
konstantem Gleichanteil.

von Bruno V. (bruno_v)


Lesenswert?

Toni E. schrieb:
> Reicht es so: V0+a*dt

Nein. a ist im Ruhezustand 1g. Deine Überlegungen sind nur dann einfach 
(und trotzdem schnell ungenau), wenn du nur Bewegung senkrecht zur 
Erdanziehung betrachtest.

Wenn es um Straße, Gelände oder Drohne geht, brauchst Du meist noch ein 
Gyro dazu.

von Rainer W. (rawi)


Lesenswert?

Merkt denn keiner, dass der Toni feixend in der Ecke sitzt und seit 
seinem Eröffnungs-Posting auf keinen einzigen Beitrag reagiert hat?

von Thorsten S. (whitejack)


Lesenswert?

Toni E. schrieb:
> Ich habe einen Beschleunigungssensor

Was für einen?

Kapazitiv
Piezoresistiv
Piezoelektrisch

https://www.tme.eu/de/news/library-articles/page/22568/Wie-funktioniert-und-was-ist-ein-Beschleunigungssensor/

von Jens G. (jensig)


Lesenswert?

Bruno V. schrieb:
> Wenn es um Straße, Gelände oder Drohne geht, brauchst Du meist noch ein
> Gyro dazu.

Daß sich das Ding auch noch drehen soll, davon stand bisher nichts im 
Auftrag.

von Bruno V. (bruno_v)


Lesenswert?

Jens G. schrieb:
> Daß sich das Ding auch noch drehen soll, davon stand bisher nichts im
> Auftrag.

Dass Bewegungen nicht immer senkrecht zur Erdoberfläche und gradlinig 
verlaufen (Kurvenfahrten verfälschen v ebenso), diese Anforderung stellt 
das Leben.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Bruno V. schrieb:
> Dass Bewegungen nicht immer senkrecht zur Erdoberfläche und gradlinig
> verlaufen (Kurvenfahrten verfälschen v ebenso), diese Anforderung stellt
> das Leben.

Warum senkrecht zur Erdoberfläche? Warum Kurvenfahrten? Wenn Toni E 
nicht schreibt, was er genau möchte, dann ist es müßig weiter darüber zu 
diskutieren.
Wenn ich bei einer rotierenden Maschine die Schwinggeschwindigkeit aus 
der Schwingbeschleunigung berechnen möchte, dann dividiere ich einfach 
Beschleunigung durch die Frequenz der Drehbewegung.
Bei einer IMU ist sicherlich ein Kalman- oder Mahony-Filter der 
geeignete Algorithmus.

von Bruno V. (bruno_v)


Lesenswert?

Joe G. schrieb:
> .
> Wenn ich bei einer rotierenden Maschine die Schwinggeschwindigkeit aus
> der Schwingbeschleunigung berechnen möchte, dann dividiere ich einfach
> Beschleunigung durch die Frequenz der Drehbewegung.

Wortwahl und Inhalt der OP lassen darauf schließen, dass er noch keinen 
gSensor hat und er sich neu damit beschäftigt.

Ich fürchte gar, dass er noch annimmt, es gäbe Sensoren, die rein die 
Beschleunigung aus Geschwindigkeitsänderung messen. So wie andere sich 
Neigungssensoren für Motorrad oder Fluggerät erhoffen.

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
Noch kein Account? Hier anmelden.