- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 36

Thema: Quadrocopter

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    42
    Beiträge
    982
    Hallo Chris

    Auf dem Copter habe ich ein Raspberry Pi A+ dieses möchte ich zusammen mit der Kamera für Foto und Filmaufnahmen verwenden. Der Pi soll als AccessPoint laufen und darauf der RPi Cam Control Webserver. Dieser funtioniert bereits, es stürzt aber immer wieder ab und in den Videos habe ich ruckler drinn Für die Kamera möchte ich mir noch ein "SuperSimpleGimbal" nachbauen.

    Ich habe letztens noch ein neues 10-DOF Sensorboard gekauft. (MPU6050 + HMC5883L + MS5611)
    Damit möchte ich eine "Höhe-halten" Funktion programmieren, ob ich den Kompass auch integrieren werden weiss ich noch nicht.

    GPS wäre auch ein sehr intressantes Thema. Aber momentan ist es noch nicht auf meiner ToDo Liste...

    Auf jedenfall muss ich noch meinen Code optimieren, damit Mehr Zeit für anderes bleibt. Momentan ist alles mit Float programmiert, da muss ich noch einiges ändern...


    Gruss Bluesmash

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Hi,

    soll darauf auch ne "inteligentere" Software laufen, also zb Gesichtserkennung zum Folgen oder solche Späße?
    Ja, du solltest, wenn du noch mehr reinpacken willst, unbedingt auf Festkommaarithmetik umstellen, da geht dann noch einiges mehr!
    Wenn du GPS haben willst, brauchst du dafür auch nen Kompass, sonst gehts nicht.

    Gruß
    Chris

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    42
    Beiträge
    982
    Mal schauen was noch alles kommt
    Am Anfang war eigentlich nur das Ziel einen Qadrocopter zu bauen und programmieren der einigermassen gut fliegt, da mich einfach einfach die Technik intressierte...
    Mal schauen welche spielereien ich noch einbauen werde.... aber momentan ist der Pi nur für die Kamera gedacht...

    Gruss Bluesmash

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    42
    Beiträge
    982
    Umso mehr man sich mit den Details beschäftigt, umso mehr Probleme tauchen auf

    Das nächste Problem, Temperaturdrift der Gyro's.

    Da sich unter der Abdeckhaube auch der Raspberry befindet, wird es unter der Haube sehr warm. Jetzt bei ca. 23° Raumtemperatur knapp 50°C. Ohne Himbeere ca. 40°C.

    Zum Drift habe ich jetzt mal eine Aufzeichnung gemacht. Jede Sekunde wird ein neuer Offset (Mittelwert über 200 Messungen) des Gyro gebildet und zusammen mit der Temperatur aufgezeichnet.

    Hier mal der Verlauf über die Zeit:
    Am Anfang ist die Abdeckhaube drauf. Beim Einbruch der Temperatur habe ich die Haube entfernt und später wieder draufgelegt.

    Klicke auf die Grafik für eine größere Ansicht

Name:	Temperaturdrift1.jpg
Hits:	18
Größe:	38,0 KB
ID:	30107

    Der Gyro der Y-Achse ist relativ stabil. Die X-Achse driftet aber extrem.

    Hier noch eine Grafik im direkten Zusammenhang Temperatur/Offset:

    Klicke auf die Grafik für eine größere Ansicht

Name:	Temperaturdrift2.jpg
Hits:	17
Größe:	37,4 KB
ID:	30108

    Bei beiden Kurven habe ich eine Lineare Trendlinie (Rot) in Excel hinzugefügt. Der Drift sieht sehr linear aus.
    Könnte ich jetzt diese Kurve als Offset im Programm hinterlegen? oder gibt es noch andere Enflüsse die auf den Offset wirken, so dass sich diese Kurve wider verschieben würde...?

    Gruss Bluesmash

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Hi,

    jap, das ist meistens so
    Ob du den Drift mit soner Annäherung wegrechnen kannst, kann ich dir nicht sagen. Wäre aber mal sehr interessant, das auszuprobieren!
    Als erstes müsste man wohl prüfen, ob und welche Faktoren in den Offset mit reinspielen. Das lässt sich überprüfen, indem man an versch Uhrzeiten / Tagen den Offset berechnet und dann mal vergleicht.
    Dann wäre es gut zu wissen, warum die eine Kurve stärker vom Drift betroffen ist als die andere. Hast du evtl einen der beiden Gyros als PLL-Source ausgewählt?
    Außerdem sollte man prüfen, ob dieser Zusammenhang sich auf andere MPU60x0 übertragen lässt, da kann ich dir gerne behilflich sein, wenn du mir deinen Offset-Quellcode zukommen lässt.
    Du könntest aber auch eine dynamische Drift-Korrektur einbauen, so hab ich das gemacht:
    Es gibt zwei weitere Variablen 'DriftWinkelX' und 'DriftWinkelY', diese sind das selbe wie die normalen Komp.Filter Winkel nur eben werden diese ausschließlich aus den Gyros berechnet. Alle xx ms (z.b. 500) werden dann die Werte verglichen (DriftWinkelX & KompWinkelX, DriftWinkelY & KompWinkelY) und daraus wird dann ein Korrekturfaktor errechnet.

    Gruß
    Chris

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    42
    Beiträge
    982
    Ich werde mal ein paar Messungen zum Vergleich machen.

    Was verstehst du unter PLL Source? Ich finde es komisch das der einte Gyro praktisch keinen Drift hat und der andere so extrem.

    Eine Idee wäre noch, nicht die Fixe Kurve zu verwenden, sondern beim Start den Start Offset und Temperatur speichern und danach anhand der Temperaturdifferenz zum Start und dem Start Offset den korrigierten Offset anhand der Kurve berechnen. Ich hoffe du verstehst was ich meine

    Das Problem ist mir auch erst jetzt aufgefallen mit dem kleinen ACC Anteil (0.001) beim Komplementärfilter, jetzt hat der ACC-Anteil zu wenig "Kraft" den Winkel zu korrigieren und er läuft mir langsam davon wenn der Gyro wegdriftet... bei einem Anteil von 0.02 hatte der ACC genug "Kraft" den Absoluten Winkel zu korrigieren, obwohl der Gyro langsam wegdriftete....

    Ja es wäre sehr intresssant einen Vergleich zu haben. Ich mache einfach einmal pro Sekunde einen Mittelwert und zeichne diesen auf
    Hier mal ein paar Code Ausschnitte:

    Code:
    Dim LSB as Byte
    Dim MSB as Byte
    Dim Gyr_X as Integer
    Dim Gyr_Y as Integer
    Dim Gyr_Z as Integer
    Dim Temperatur as Integer 
    Dim Gyr_X_Offset as Integer
    Dim Gyr_Y_Offset as Integer
    Dim Gyr_Z_Offset as Integer
    Dim Gyr_X_Offset_Sum as Long
    Dim Gyr_Y_Offset_Sum as Long
    Dim Gyr_Z_Offset_Sum as Long
    Dim i as Word 
    
    
    'Offset berechnen, Mittelwert aus 300 Messungen
       Gyr_X_Offset_Sum = 0
       Gyr_Y_Offset_Sum = 0
       Gyr_Z_Offset_Sum = 0
       For i = 1 to 300
          gosub  MPU6050_READ
          Gyr_X_Offset_Sum = Gyr_X_Offset_Sum + Gyr_X
          Gyr_Y_Offset_Sum = Gyr_Y_Offset_Sum + Gyr_Y
          Gyr_Z_Offset_Sum = Gyr_Z_Offset_Sum + Gyr_Z
       next
       decr i
       Gyr_X_Offset = Gyr_X_Offset_Sum / i
       Gyr_Y_Offset = Gyr_Y_Offset_Sum / i
       Gyr_Z_Offset = Gyr_Z_Offset_Sum / i
    
    
    '----------   Beschleunigungssensor auslesen   ----------
    MPU6050_read:
    
       I2cstart
       I2cwbyte &HD0                       'Schreibadresse
       I2cwbyte &H3B                       'Register h43 auswählen
       I2cstop
    
       I2cstart
       I2cwbyte &HD1                       'Leseadresse
    
       I2crbyte Msb , Ack                  'ACC X (Register 3B + 3C)
       I2crbyte Lsb , Ack
       ACC_X = Makeint(Lsb,Msb)
       I2crbyte Msb , Ack                  'ACC Y (Register 3D + 3E)
       I2crbyte Lsb , Ack
       ACC_Y = Makeint(Lsb,Msb)
       I2crbyte Msb , Ack                  'ACC Z (Register 3F + 40)
       I2crbyte Lsb , Ack
       ACC_Z = Makeint(Lsb,Msb)
    
       I2crbyte Msb , Ack                  'Temperatur (Register 41 + 42)
       I2crbyte Lsb , Ack
       Temperatur = Makeint(Lsb,Msb)
       Temperatur = Temperatur / 34
       Temperatur = Temperatur + 365
    
       I2crbyte Msb , Ack                  'Gyro X (Register 43 + 44)
       I2crbyte Lsb , Ack
       Gyr_X = Makeint(Lsb,Msb)
       I2crbyte Msb , Ack                  'Gyro Y (Register 45 + 46)
       I2crbyte Lsb , Ack
       Gyr_Y = Makeint(Lsb,Msb)
       I2crbyte Msb , Ack                  'Gyro Z (Register 47 + 48)
       I2crbyte Lsb , Nack
       Gyr_Z = Makeint(Lsb,Msb)
    
    Return
    
    
    '----------   Beschleunigungssensor Initialisieren   ----------
    MPU6050_init:
    
       'Sensor aktivieren
       I2cstart
       I2cwbyte &HD0                       'Schreibadresse
       I2cwbyte &H6B                       'Register h6B Powermanagement
       I2cwbyte &H00                       'Wert 0 schreiben
       I2cstop
    
       waitms 200
       Toggle LED_R
       toggle LED_H
    
       'Filter konfigurieren
       '     ACC                  Gyro
       'Wert Bandbreite  Delay    Bandbreite  Delay
       '0    260Hz       0.0ms    256Hz       1.0ms
       '1    184Hz       2.0ms    188Hz       1.9ms
       '2     94Hz       3.0ms     98Hz       2.8ms
       '3     44Hz       4.9ms     42Hz       4.8ms
    
       I2cstart
       I2cwbyte &HD0                       'Schreibadresse
       I2cwbyte &H1A                       'Register h1A Filter
       I2cwbyte 6                         'Wert schreiben
       I2cstop
    
       waitms 200
       Toggle LED_R
       toggle LED_H
    
       'Gyro Bereich festlegen
       'Wert    Bereich
       '0       +/-  250°/s
       '8       +/-  500°/s
       '16      +/- 1000°/s
       '24      +/- 2000°/s
    
       I2cstart
       I2cwbyte &HD0                       'Schreibadresse
       I2cwbyte &H1B                       'Register h1B Gyro konfig
       I2cwbyte 16                         'Wert schreiben
       I2cstop
    
       waitms 200
       Toggle LED_R
       toggle LED_H
    
       'ACC Bereich festlegen
       'Wert    Bereich
       '0       +/-  2g
       '8       +/-  4g
       '16      +/-  8g
       '24      +/- 16g
    
       I2cstart
       I2cwbyte &HD0                       'Schreibadresse
       I2cwbyte &H1C                       'Register h1C ACC konfig
       I2cwbyte 0                          'Wert schreiben
       I2cstop
    
       waitms 200
       Toggle LED_R
       Toggle LED_H
    
    Return
    Gruss Bluesmash
    Geändert von Bluesmash (01.05.2015 um 19:44 Uhr)

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    42
    Beiträge
    982
    Hallo Chris

    Ich habe jetzt mal testweise die Temperaturkompensation anhand der gemessenen Kurven implementiert.
    In ein paar Testversuchen zwischen ca. 23°C und 45°C bleibt der Absolute Kopterwinkel sehr stabil +/-0.1-0.2° (Der Kopter stand immer unbewegt auf dem Boden)
    Ohne die Kompensation hatte ich bei einer Erwärmung von 23°C auf ca. 40°C eine Abweichung von ca. 4° auf der X-Achse...

    Ich hoffe jetzt mal, der Temperatur-Drift bleibt in der nächsten Zeit konstant damit man dies nicht alle paar Tage anpassen muss... Natürlich muss man den Drift bei jedem einzelnen MPU6050 separat bestimmen...
    Mal sehen wie sich der Drift über einen längeren Zeitraum verhält.
    Ich habe nur einen kurzen Flug in der Küche absolviert und abgesehen von den Turbulenzen die in einem kleinen Raum entstehen, fliegt der Kopter jetzt sehr stabil

    gruss Bluesmash

Ähnliche Themen

  1. Quadrocopter (Dimensionierung)
    Von crabtack im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 54
    Letzter Beitrag: 24.03.2015, 16:44
  2. Quadrocopter Höhenbegrenzung
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 19.10.2011, 23:55
  3. Quadrocopter
    Von Thalhammer im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 16
    Letzter Beitrag: 10.02.2011, 12:06
  4. -=4C=- Quadrocopter
    Von Salvador im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 42
    Letzter Beitrag: 15.05.2009, 19:43
  5. quadrocopter
    Von goara im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 257
    Letzter Beitrag: 27.12.2008, 21:07

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests