- Modernes Energiemessgeraet    Werbung      
Ergebnis 1 bis 3 von 3

Thema: MPU6050 Initialisieren mit dem Netduino

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2006
    Alter
    46
    Beiträge
    16
    Ein kleiner Nachtrag:
    Kurz danach habe ich festgestellt, dass ich das mit dem Power Management falsch verstanden habe. Anders als bei dem BMA020 Sensor, ist es erforderlich beim Initialisieren das Power Management, Gyroskope und Beschleunigungssensor einzustellen. Dazu habe ich folgende Methode geschrieben:

    Code:
    public void Initialize()
    {
                // Power Management 1
                // Hier wird der Temperatur Sensor nur abgestellt
                _I2C.Write(new byte[] { MPU6050_R.PWR_MGMT_1, 0x08 }));
    
    
                // FullScaleGyroRange
                _I2C.Write(new byte[] { MPU6050_R.GYRO_CONFIG , 0x00 });
    
    
                // FullScaleAccelRange
                _I2C.Write(new byte[] { MPU6050_R.ACCEL_CONFIG, 0x00 });
    
    
                // Power Management 1
                // Aus dem Sleep Modus holen
                ErrorStatus(_I2C.Write(new byte[] { MPU6050_R.PWR_MGMT_1, 0x50 }));
    }
    Allerdings habe ich wohl nicht nicht das richtige Setting für den Sensor herausgefunden. Entweder kommt nur "0" oder das Ergebnis ergibt keinen Sinn. Zuerst würde ich gerne konstant Daten erhalten, und vielleicht ergibt sich dann das andere.


    Initialisiere den Beschleunigungs- und Gyrosensor MPU-6050
    Status: OK
    Status: OK
    Status: OK
    Status: OK
    Verbindung testen:
    Status: OK
    -----------------------------------------------------------------------
    Acceleration: X: 0 Y:0 Z:0 Gyro: X: 0 Y: 0 Z: 0
    Acceleration: X: 0 Y:255 Z:31612 Gyro: X: 12527 Y: 52991 Z: 26885
    Acceleration: X: 10352 Y:20660 Z:47104 Gyro: X: 0 Y: 0 Z: 0
    Acceleration: X: 0 Y:0 Z:0 Gyro: X: 0 Y: 0 Z: 0
    Acceleration: X: 0 Y:0 Z:0 Gyro: X: 0 Y: 0 Z: 0
    Acceleration: X: 0 Y:0 Z:0 Gyro: X: 0 Y: 0 Z: 0
    Acceleration: X: 0 Y:0 Z:0 Gyro: X: 0 Y: 0 Z: 0
    Acceleration: X: 0 Y:0 Z:0 Gyro: X: 0 Y: 0 Z: 0
    Acceleration: X: 0 Y:0 Z:80 Gyro: X: 0 Y: 0 Z: 0
    Acceleration: X: 26624 Y:0 Z:0 Gyro: X: 0 Y: 255 Z: 31612
    Acceleration: X: 4400 Y:61390 Z:65385 Gyro: X: 10352 Y: 20660 Z: 47104
    Acceleration: X: 0 Y:0 Z:0 Gyro: X: 0 Y: 0 Z: 0
    Acceleration: X: 0 Y:0 Z:0 Gyro: X: 0 Y: 0 Z: 0

    --- // ---
    An der Stelle weiss ich nun nicht weiter. Ich hatte schon an den I2C Takt gedacht, aber das machte keinen Unterschied.
    Vielleicht hat hier jemand einen Ansatz, woran das liegt.


    Grüße von
    Robo-Hero

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2006
    Alter
    46
    Beiträge
    16

    Lächeln

    Abschluss.

    Inzwischen habe ich mein Anliegen gelöst und das lesen der Sensor Daten funktioniert nun einwandfrei. Mein Fehler lag nicht beim initialisieren sondern vor dem lese Vorgang (Zuvor nicht gepostet).

    In meiner Methode zum Einlesen der Daten, habe ich nur den Lesevorgang, jedoch vorher kein Adress byte für die erste Achse gesendet.

    Code:
    public SensorData GetSensorData()
    {
       byte[] registerList = new byte[14];
       registerList[0] = MPU6050_Registers.ACCEL_XOUT_H;
       registerList[1] = MPU6050_Registers.ACCEL_XOUT_L;
       registerList[2] = MPU6050_Registers.ACCEL_YOUT_H;
       registerList[3] = MPU6050_Registers.ACCEL_YOUT_L;
       registerList[4] = MPU6050_Registers.ACCEL_ZOUT_H;
       registerList[5] = MPU6050_Registers.ACCEL_ZOUT_L;
       registerList[6] = MPU6050_Registers.TEMP_OUT_H;
       registerList[7] = MPU6050_Registers.TEMP_OUT_L;
       registerList[8] = MPU6050_Registers.GYRO_XOUT_H;
       registerList[9] = MPU6050_Registers.GYRO_XOUT_L;
       registerList[10] = MPU6050_Registers.GYRO_YOUT_H;
       registerList[11] = MPU6050_Registers.GYRO_YOUT_L;
       registerList[12] = MPU6050_Registers.GYRO_ZOUT_H;
       registerList[13] = MPU6050_Registers.GYRO_ZOUT_L;
       // Der entscheidene Schreibvorgang. Erst nachdem ich dies
       // eingetragen habe, kamen die daten Konstant wie ich es erwarte.
       _I2C.Write(new byte[] { MPU6050_Registers.ACCEL_XOUT_H });
       _I2C.Read(registerList);
       return new SensorData(registerList);
    }
    Vielleicht hilft das den einen oder anderen weiter, mit dem Sensor weiter zu arbeiten. Bild

    Da ich auch einigermaßen die Doku rauf und Runter durchgelesen habe, dürfte ich sicherlich einige Fragen beantworten können.

    Grüße von
    Robo-Hero

    PS: Hier ist der Link zu meinem Blogpost, über dem Sensor MPU6050 nud Netduino.
    http://meineweltinmeinemkopf.blogspo...-netduino.html

Ähnliche Themen

  1. LCD initialisieren
    Von Spitfire im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 03.08.2012, 22:18
  2. LCD initialisieren
    Von Spitfire im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 03.08.2012, 22:18
  3. Netduino Plus Einstieg
    Von Zwerwelfliescher im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 16
    Letzter Beitrag: 20.05.2011, 20:57
  4. Netduino I2C Problem
    Von TobiKa im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 14
    Letzter Beitrag: 27.12.2010, 17:25
  5. Neues Entwicklungssystem - Netduino
    Von Ls4 im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 13
    Letzter Beitrag: 24.12.2010, 10:07

Stichworte

Berechtigungen

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

    Werbung      fchao-Sinus-Wechselrichter AliExpress