- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 11

Thema: MPU 6050 Beschleunigungssensor - Programm zu langsam

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.199
    Du kannst versuchen, die Ausgaben, die auf die Karte geschrieben werden, erst ein paar Datensätze lang zu puffern.
    Das erspart zumindest das dauernde öffnen und schliessen der Datei...da musst du halt schauen, wie weit du mit dem Arbeitsspeicher kommst.

    Weiters würde ich versuchen, möglichst viele der Fliesskomma-Berechnungen zu umschiffen (je mehr davon verschwindet, umso besser).
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.190
    Wie wärs, wenn Du die Gyro Abfragen in einen Timer Interrupt legst, der alle 5 bis 10ms ausgelöst wird.
    Dort zyklisch die Gyro Werte addieren und in der Hauptroutine die Position daraus berechnen.
    Komplexe Berechnungen sollten da aber dann vermieden werden ( Zeitfaktor ).

    Zum anderen würde ich statt der float Variablen lieber int Typen wählen, wo das möglich ist, weil die ein Controller wesentlich schneller verrechnen kann.

  3. #3
    HaWe
    Gast
    Ist die Frage, was genau gespeichert werden soll: die nackten raw-Werte direkt aus den Registern (6DOF, zusammengesetzt zu 3x integer für Gyro und 3x integer für Accel.) - oder schon fertig ausgerechnete Winkel.
    Eulerwinkel (bzw. yaw, pitch, roll) werden aber nur mit floats vernünftig berechnet. Wenn also abspeichern, dann entweder direkt die raw-Werte aus den Registern (ohne weitere Umrechnungen), oder die daraus bereits fertig ausgerechneten geometrischen Winkel und dann erst zu int gerundet:
    z.B. die float-Eulerwinkel mit 100 multiplizieren und dann runden (edit: je nachdem, int16_t oder uint16_t). Dann hat man gegenüber float nur die halbe Anzahl an Bytes auf SD zu schreiben und statt 6 Werte für 6DOF nur 3 ausgerechnete Euler-Winkel.
    Geändert von HaWe (28.07.2020 um 16:59 Uhr)

  4. #4
    HaWe
    Gast
    PS:
    es gibt auch SAMD51 (ARM Cortex M4) Platinen im Uno-Formfaktor, programmierbar per Arduino genau wie auch UNO oder DUE. Vorteil: 120MHz Takt plus extra fpu Coprozessor für schnelle float-Berechnungen, da sind dann auch komplizierte float-Berechnungen rattenschnell:
    https://www.adafruit.com/product/3382
    https://www.adafruit.com/product/4000 .

    Aber auch der MPU6050 hat ja bereits einen onboard-digital-motion-processor (dmp), der komplizierte Berechnungen onboard, also schon ohne Arduino, ausführen kann, nur muss der gesondert angesprochen werden, was längst nicht alle MPU6050 Libs auch tatsächlich tun, im Gegensatz zu dieser hier, wie schon erwähnt: https://github.com/jrowberg/i2cdevli...rduino/MPU6050 .
    Geändert von HaWe (30.07.2020 um 09:07 Uhr) Grund: typo

Ähnliche Themen

  1. Programm ablauf langsam
    Von fredyxx im Forum Arduino -Plattform
    Antworten: 29
    Letzter Beitrag: 29.08.2016, 11:55
  2. Mpu-6050
    Von inka im Forum Robby RP6
    Antworten: 12
    Letzter Beitrag: 29.05.2013, 09:41
  3. Kalman Filter sehr langsam (Gyro + Beschleunigungssensor)
    Von djdune im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 6
    Letzter Beitrag: 04.07.2012, 17:00
  4. Problem mit MPU-6050
    Von ni.c im Forum Sensoren / Sensorik
    Antworten: 0
    Letzter Beitrag: 06.04.2012, 11:53
  5. Programm zu langsam?
    Von Hübi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 05.03.2009, 17:03

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests