- 3D-Druck Einstieg und Tipps         
Seite 318 von 355 ErsteErste ... 218268308316317318319320328 ... LetzteLetzte
Ergebnis 3.171 bis 3.180 von 3542

Thema: Willas Shrediquette Tricopter / Quadrocopter / Hexacopter

  1. #3171
    Erfahrener Benutzer Roboter-Spezialist Avatar von deHarry
    Registriert seit
    17.08.2010
    Beiträge
    597
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi Chris,

    104 als Antwort vom MPU ist korrekt.

    In der Leseroutine (Read_MPU() solltest du um Zeit zu sparen die Tatsache ausnutzen, dass die ACC- und die Gyro-Register jeweils ohne Lücke hintereinander liegen.

    Das machst du, indem du das Startregister für X ACC vorgibst und dann alle 6 Werte hintereinander mit I2rbyte xxx, Ack , #2 einliest.
    Erst beim zweiten Byte von Z ACC kommt der Lesebefehl mit Nack und anschließendem I2Stop.
    Da wir die Z-Achse nicht verwenden, kannst du weitere 2 Leseops sparen, indem du schon bei Y ACC aufhörst.

    Bei den Gyros genauso, aber da der Tempsensor dazwischen liegt, muss leider hier neu aufgesetzt werden.

    [edit]
    Für den Mega328p sieht das konkret so aus:

    Code:
    '===Read MPU-6050===============================================================
    Sub Read_mpu
    
    '==All registers are read in one burst read operation, so FIFO has to be enabled
    ' wir müssten auf den FIFO-Interrupt warten und dann burst-lesen, aber der INT ist nicht verdrahtet :-(
    ' also kein burst mode zum Lesen
    '==Read only 2 really used ACC-Axis from MPU-6050==
    
      I2cstart                                                  'start condition
      I2cwbyte Mpuaddw                                          'write adress of MPU-6050
      I2cwbyte 59                                               'Register 59 ACCEL_XOUT_H
      I2cstart                                                  'repeated start
      I2cwbyte Mpuaddr                                          'read adress of MPU-6050
      I2crbyte Meas_accy(2) , Ack                               'read byte ACCEL_XOUT_H (Reg 59)
      I2crbyte Meas_accy(1) , Ack                               'read byte ACCEL_XOUT_L (Reg 60)
    
      I2crbyte Meas_accx(2) , Ack                               'read byte ACCEL_YOUT_H (Reg 61)
      I2crbyte Meas_accx(1) , Nack                              'read byte ACCEL_YOUT_L (Reg 62)
      I2cstop                                                   'stop condition
    
    '==Read all 3 Gyro-Axis from MPU-6050==
      I2cstart                                                  'start condition
      I2cwbyte Mpuaddw                                          'write adress of MPU-6050
      I2cwbyte 67                                               'Register 67 GYRO_XOUT_H
      I2cstart                                                  'repeated start
      I2cwbyte Mpuaddr                                          'read adress of MPU-6050
      I2crbyte Meas_gyrox(2) , Ack                              'read byte GYRO_XOUT_H (Reg 67)
      I2crbyte Meas_gyrox(1) , Ack                              'read byte GYRO_XOUT_L (Reg 68)
    
      I2crbyte Meas_gyroy(2) , Ack                              'read byte GYRO_YOUT_H (Reg 69)
      I2crbyte Meas_gyroy(1) , Ack                              'read byte GYRO_YOUT_L (Reg 70)
    
      I2crbyte Meas_gyroz(2) , Ack                              'read byte GYRO_ZOUT_H (Reg 71)
      I2crbyte Meas_gyroz(1) , Nack                             'read byte GYRO_ZOUT_L (Reg 72)
      I2cstop                                                   'stop condition
    
      Get_gyrox = Get_gyrox / 64                                ' auf 10 bit schrumpfen
      Get_gyroy = Get_gyroy / 64                                ' auf 10 bit schrumpfen
      Get_gyroz = Get_gyroz / 64                                ' auf 10 bit schrumpfen
      Get_gyroy = Get_gyroy + 434                               ' (512 - 68) die gelesenen Werte in die Nähe von 512 skalieren
      Get_gyrox = Get_gyrox + 589                               ' (512 + 77) damit Willas Algorithmen stimmen
      Get_gyroz = Get_gyroz + 464                               ' (512 - 48)
    
      Get_accx = Get_accx / 64                                  ' auf 10 bit schrumpfen
      Get_accy = Get_accy / 64                                  ' auf 10 bit schrumpfen
      Get_accx = Get_accx + 500                                 ' (512 +- xx) die gelesenen Werte in die Nähe von 512 skalieren
      Get_accy = Get_accy + 500                                 ' (512 +- xx) damit Willas Algorithmen stimmen
    
    End Sub
    Die "Skalierung" am Ende der Routine muss eventuell nicht sein, wenn die Algorithmen entsprechend angepasst werden.
    Geändert von deHarry (30.03.2012 um 18:51 Uhr)
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

  2. #3172
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.12.2011
    Ort
    Muggensturm
    Beiträge
    116
    Ich habe jetzt auch meine Platine, es hat solange gedauert, weil ich dem Chris eine Adresse übermittelt habe, wo die Postleitzahl einen Zahlendreher hatte und die Post so lange gebraucht hat bis sie es gemerkt hat.
    Ich habe sie auch schon bestückt und wie Willa hatte ich Probleme beim Sensor. Es gab einen Kurzschluß in der Betriebsspannung durch den Metallboden des MPUs.
    Jetzt möchte ich gerne etwas ausprobieren. Ihr habt ja wohl Software die funktioniert, wie komme ich da drann?

    gibt es vielleicht ein Programm das die Leuchtdioden der Reihe nach aufleuchten lässt?
    Ich habe auch die Vorwiderstände der LED 1 und 3 auf 390 Ohm verkleinert, damit sie heller leuchten.

    Gruß Bernd

  3. #3173
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    43
    Beiträge
    1.273
    hi, ich hab mal ein blink programm angehängt.

    Ich habe nochmal etwas gelötet... Jetzt bekomme ich "104" als antwort in der variablen "Test". Aber alle anderen Variablen sind nun "0". Immerhin schon mal was anderes. Irgendwie antwortet die MPU, aber nicht ganz korrekt...
    Angehängte Dateien Angehängte Dateien
    Viele Grüße, William
    -> http://william.thielicke.org/

  4. #3174
    Erfahrener Benutzer Begeisterter Techniker Avatar von Picojetflyer
    Registriert seit
    03.08.2004
    Ort
    Sauerland
    Beiträge
    247
    Code:
     
    I2cstart #2                                              'start condition
       I2cwbyte Mpuaddw , #2                                    'write adress of MPU-6050
       I2cwbyte 117 , #2                                        'Register 117 "Who am I"
       I2crepstart #2                                           'repeated start
       I2cwbyte Mpuaddr , #2                                    'read adress of MPU-6050
       I2crbyte Test , Nack , #2                                'read byte WHO_AM_I (Reg 117)
       I2cstop #2                                               'stop condition
    
        Print #1 , Test
    Wenn die I2C Komunikation nicht stimmt (MPU antwortet nicht) kann es passieren das man trotzdem diese 104 zurückbekommt. Ist mir bei meinen Copter schon früher mal aufgefallen. Man schreibt ja die 104 ins I2C Register, wenn die Komunikation nicht OK ist ändert sich darin auch nix und man bekommt die 104 auch wieder zurück.

  5. #3175
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    43
    Beiträge
    1.273
    Man schreibt ja die 104 ins I2C Register, wenn die Komunikation nicht OK ist ändert sich darin auch nix und man bekommt die 104 auch wieder zurück.
    Hmmm, wenn ich die Kabel von I²C entferne bekomme ich als Antwort in Test "114", mit angeschlossenen Kabeln "104". Also irgendwas passiert da... Es könnte aber sein, dass die Kondensatoren (2.2nF und 10nF) etwas gelitten haben beim mehrfachen ein/auslöten. Ich werde die mal austauschen.
    Viele Grüße, William
    -> http://william.thielicke.org/

  6. #3176
    Erfahrener Benutzer Roboter-Spezialist Avatar von deHarry
    Registriert seit
    17.08.2010
    Beiträge
    597
    Ihr habt den MPU bei der Initialisierung aus dem Sleepmode geholt, ja?
    Nach Power On steht die Kiste erst einmal und muss davon überzeugt werden, Werte auszugeben.

    Das Powermanagement-Register 107 muss dafür passend gesetzt werden. (Ich meine das aber schon bei eurem Code irgendwo gelesen zu haben)

    Code:
      I2cwbyte 107                                              'Register 107 Power Management 1
      I2cwbyte &B00001011                                       'No Reset / No Sleep / No Cycle / Temp_Sens: Dis / Clock Source: Z-Gyro
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

  7. #3177
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    Hast du den mal meinen oben geposteten Code versucht? Der funzt bei mir zu 100% Wenns bei dir nicht geht, liegts wohl an der HW.
    Hast du einen MPU6000 oder MPU6050?

    Gruß
    Chris

  8. #3178
    Erfahrener Benutzer Roboter-Spezialist Avatar von deHarry
    Registriert seit
    17.08.2010
    Beiträge
    597
    MPU-6000 oder MPU-6050 muss egal sein, wenn die Anschlüsse, wie im Schaltbild von Bernds Design gezeigt, verlötet sind.
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

  9. #3179
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    Ja, genau auf die "Verlötung" wollte ich hinaus. Willa, welche Pins haben bei dir welches Potential und welchen Chip hast du?

    Gruß
    Chris

  10. #3180
    Erfahrener Benutzer Roboter-Spezialist Avatar von deHarry
    Registriert seit
    17.08.2010
    Beiträge
    597
    Er hat einen MPU-6000.
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

Seite 318 von 355 ErsteErste ... 218268308316317318319320328 ... LetzteLetzte

Stichworte

Berechtigungen

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

Labornetzteil AliExpress