Geschwindigkeit beim Dateneinlesen

Hallo,

wie fast jeder der im Forum neu ist schon mal ein Sorry falls der Post falsch platziert ist.
Ich hoffe ich kann meine Frage trotzdem stellen.
Bin auch erst beim einarbeiten in Arduino und Microcontroller.

Meine Frage ist jetzt:

Wie kann ich die Geschwindigkeit wie schnell Daten eingelesen werden bei einem Arduino Uno herausfinden.
Vlt fehlt mir aber grundsätzlich das Verständnis, dann bitte ich um Hilfe.

Also ich habe ein Arduino Uno (Baudrate = 9600) mit einem MPU6050.
Ich würde gerne aus der Beschleunigung den zurückgelegten Weg berechnen.
Dazu bräuchte ich ja die Zeit zu jedem Messwert (Beschleunigung) um das dann zu berechnen.
Aber woher weiß ich wie schnell die Daten eingelesen werden bzw. welche Zeit ich dazu hernehmen soll?
Gibt es einen bessere Methode um den Weg zu ermitteln?
Verwende jetzt für den Anfang einfach den Code aus dem Beispiel MPU6050_DMP6

Noch eine Frage, gibt es eine Libary mit der man Integrale berechnen kann in Arduino IDE?

Danke für die Antworten und die Nachsicht falls etwas nicht ganz korrekt ist.

mfg

Grob abgeschätzt kannst Du davon ausgehen, dass 1 Zeichen etwa in Baudrate / 10 eingelesen werden kann. Bei 9600 Baud wären das also 960 Zeichen pro Sekunde, also grottenlahm.

Gruß Tommy

ok und woher weiß ich wie viele Zeichen ich einlese beim MPU6050 bzw. wie kann ich mir dann die Zeit fpr die Zeichen ausrechnen?

mfg

  • Die MPU6050 hat keine serielle Schnittstelle sondern I2C. Was hat die Baudrate damit zu tun?
    Die I2C Schnittstelle hat einiges an overhead und auch wenn sie mit 400kHz Taktfrequenz funktionieren kann kommt man wahrscheinlich auf 1000 Lesungen pro Sekunde.
  • Die Beschleunigung kann bis zu 1000 mal die Sekunde gelesen werden auch wenn laut Datenblat meist 200Hz genommen werden.
  • Die Geschwindigkeit/ den Weg anhand der Beschleunigung zu messen funktioniert nicht, da Fehler aufsumiert werden. ich beschleunige für 1 Sekund mit 1m/s^2, also Geschwindigkeit 1m/s. Dann beschleunige ich nochmal 1 sekunde mit 1m/s^2. Dann habe ich eine Geschwindigkeit von 2m/S
    Sind es dann mal nicht 1 Sekunde sondern 1,1 Sekunden oder 1,1m/s^2 dann ist jede nachfolgende Messung falsch bzw die Summe (Integral) der Beschleunigungen pro Zeit.
  • Nein der Arduino kann keine Integrationsrechnung. Wozu brauchst Du die denn? Du hast ja nicht die mathematische Funktion der Beschleunigung in der Zeit um ein Integral mathematisch zu berechnen . Du kannst aus der Beschleunigung in einem Zeitintervall die Geschwindigkeit / Weg berechnen und diese/diesen aufsummieren.
  • Um die Beschleunigung zu erhalten mußt Du die Erdbeschleunigung vom 3-dimensionalen Meßwert wegrechnen und dann auch mindestens 2 dimensional die Geschwindigkeit berechnen wenn Du nicht durch die Mechanik nur Beschleunigung in eine Richtung hast.

Nimm GPS das ist mit seiner Ungenauigkeit von 10m genauer.

Grüße Uwe

Hallo,
hier kommt was zum Lernen:

Hallo, danke für die Antwort.
Ich habe so kleine Bewegungen das es mit GPRS nicht funktionoiert zu messen und es spielt bei mir auch keine Rolle das sich die Fehler mit der Zeit aufsummieren bzw. ich hab einen Referenzpunkt.
Auch gimbal lock is mir egal da es nicht auftreten kann.

Ich weiß nur nicht wie ich die Zeit zu den jeweiligen Datenpunkten welche mir im seriel monitor angezeigt werden bekomme.

Mehr brauch ich dann nicht.

Jemand noch ne Idee?

Danke

Was machst Du denn genau? Bitte mal genau beschreiben.
Kannst Du irgendwie mechanisch den Weg messen?
Grüße Uwe

Eventuell auf millis() zurückgreifen und den Wert in einer Variable zwischenspeichern. Beim nächsten Datenempfang millis() - gespeicherten Wert, dann hast Du die Zeit in Millisekunden die vergangen ist.

Gruß, Jürgen

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.