- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 36 von 36

Thema: Quadrocopter

  1. #31
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    41
    Beiträge
    982
    Anzeige

    LiFePo4 Akku selber bauen - Video
    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

  2. #32
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    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

  3. #33
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    41
    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 20:44 Uhr)

  4. #34
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    41
    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

  5. #35
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    41
    Beiträge
    982
    Hallo

    In letzter Zeit habe ich noch einige Optimierungen am Code vorgenommen. Ich habe jetzt noch das Problem, dass wenn wenig Last auf den Motoren ist (Sinkflug) die Regler sich ein wenig aufschaukeln und er in der Luft ein wenig "zappelt". Da muss ich noch an den PID-Parameter schrauben. Hat da gerade jemand eine Idee in Welche Richtung ich schrauben soll? P und I verkleinern?

    Ich habe jetzt auch den Luftdruck Sensor (MS5611) in Betrieb genommen und berechne damit die Höhe. Wenn er ruhig auf dem Boden steht schwankt die Höhe so um ca. +/- 10cm. Wenn ich jetzt aber die Motoren starte (Copter steht auf dem Boden) fällt die Höhe um ca. 1-2m. Durch die Propeller gibt es unter dem Copter einen Überdruck und dadurch sinkt natürlich die Höhe. Den Drucksensor habe ich mit Schaumstoff eingepackt.
    Nun meine Frage, wie verhält sich das dann in der Luft? Wie sind da so die Erfahrungen? Ändert sich der Druck auch bei mehr oder weniger Schub?
    Und wie sind die Erfahrungen bei einem Höhenregler? Reicht es auf den Luftdruck zu Regeln oder sollte ich den Luftdruck über einen Komplementärfilter mit den ACC-Sensoren koppeln?

    Gruss Bluesmash

  6. #36
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    41
    Beiträge
    982
    Hallo Zusammen

    Da mein Grosser schon relativ gut fliegt brauchte ich eine neue Herausforderung.
    Daher habe ich mir noch einen kleinen Quad für indoor gebaut.
    Die Platine habe ich selber gezeichnet und geätzt.

    Dies ist aber schon die zweite Version. Bei der ersten habe ich einige Design-Fehler bei der Platine gemacht und die Motoren hatte ich nur mit einer Lasche befestigt. Diese sind aber nach und nach durch die Vibrationen abgebrochen...

    Mit den Motoren bin ich aber nicht 100% zufrieden. Irgendwie machen einige komische Geräusche. Wie wenn die Lager bereits defekt wären, dabei haben sie erst ein paar Flugminuten.... Irgendwelche komischen Resonanzgeräusche, auf dem Video kann man es hören...

    Hier einige Eckdaten:
    - Motoren: AP03 7000kv
    - ESC: SuperMicro Systems Mi-3A
    - Empfänger: Orange
    - Akku: Turnigy nano-tech 750mah 1s
    - Propeller: 3020 von Hobbyking
    - Empfänger: OrangeRX NanoReceiver R616XN
    - IMU: MPU6050
    - Prozessor: Atmega328P

    Hier ein paar Bilder:

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

Name:	20151011_124913.jpg
Hits:	16
Größe:	87,0 KB
ID:	30787

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

Name:	20151011_125012.jpg
Hits:	13
Größe:	118,6 KB
ID:	30788

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

Name:	20151011_125048.jpg
Hits:	12
Größe:	93,3 KB
ID:	30789

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

Name:	20151011_125057.jpg
Hits:	12
Größe:	120,4 KB
ID:	30790

    https://youtu.be/94cC_pz9oFk

Seite 4 von 4 ErsteErste ... 234

Ähnliche Themen

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

Stichworte

Berechtigungen

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

Labornetzteil AliExpress