DIY 2 Achsen Gimbal mit Arduino

Mein neues Copter Landegestell aus China hatte den Vorteil das bereits ein Gimbal mit dabei war. Was nun noch fehlte waren Servos und eine Steuerung dafür. Gimbals speziell mit Brushless Motoren sind derzeit ziemlich angesagt, jedoch nicht umbedingt billig. Hier stell ich kurz meine low budget Version eines 2 Achsen Gimbal vor.

 

 

Kurz erklärt handelt es sich hier um ein Pitch-Roll Gimbal angesteuert durch ein eigenes Arduino mit Breakout Board auf dem ein Gyro, Beschleunigungssensor und Kompass sitzt (IMU). Das Arduino wird  direkt von meinem 3S Lipo versorgt und kann optional aktiviert werden.

Benötigte Teile:

Downloads:

Hier der Aufbauplan:

Gimbal

Der Sketch für das Arduino (1.0.5) basiert auf dem Beispielprogramm von Pololu für das MinIMU 9 v2. Dieser Code bereitet bereits die Sensoren auf, somit ist kein zusätzlicher Code für die Stabilisierung und Ausreißer notwendig. Als einziges wurde der Servo Code hinzugefügt um die Bewegung auszugleichen. Nun nur noch das ganze richtig verkabeln, die beiden Arduino Libraries installieren (siehe README), den Sketch uploaden und los gehts.

Hier das zusammengebaute Gimbal auf meinem Copter – natürlich könnte man das auch schöner verpacken ;-). Wichtig ist die Ausrichtung der IMU. Die X-Achse muss nach vorne zeigen.

gimbal2

Das Gimbal ist bei weitem nicht perfekt. Probleme gibts bei Drehungen über 90 Grad. Ebenfalls wird die Position noch zu oft korrigiert was darin resultiert das die Servos lautstark zu hören sind.

Update 2015.04.07: Sketch aktualisiert auf die aktuellen L3G und LSM303 Libraries – Download Gimbal Sketch

 

15 Kommentare
  1. Wolle
    Wolle sagte:

    Feine Sache. Hast du vielleicht ein Video, in dem der Gimbal in Aktion zu sehen ist?
    Hast du am Code noch etwas verändert?

    Antworten
  2. reinhard
    reinhard sagte:

    Hi, ja ich hab zumindest am Handy ein Video mit dem Gimbal in Aktion – ich hoffe ich komme bald dazu es mal hochzuladen und hier zu verlinken.
    Am Code hab ich nichts mehr geändert. Das wird erst wieder interessant wenn der Sommer kommt 😉

    Antworten
  3. reinhard
    reinhard sagte:

    Dazu ist leider einiges an Arbeit notwendig – dieses Gimbal ist total getrennt von der Kopter-Elektronik, was bei mir früher eine MultiWii-Elektronik war. Dadurch das ich nur ein NanoWii(flyduino.net) hatte und auch nur ein 6-Kanal Empfänger, war das nicht möglich.
    Inzwischen hab ich eine DJI Phantom mit billig Gimbal aus China für die GoPro- das lässt sich „Schwenk-Neigen“ mit meinem Sender.
    Aber im Prinzip kann man meinen Entwurf auch so umbauen das es z.B. von einem Empfänger ließt und dementsprechend die Servos anpasst.

    Antworten
  4. Alex
    Alex sagte:

    Hallo,
    ich habe versucht den Sketch auf das Board Arduino micro zu laden.
    Beim Überprüfen erhalte ich eine Fehlermeldung.
    I2C:45: error: ‚L3G_CTRL_REG1‘ was not declared in this scope
    Die Libraries sind installiert (oder haben wir hier etwas falsch gemacht?)
    Danke für einen Tipp.

    Antworten
    • reinhard
      reinhard sagte:

      Kannst du es lokal kompilieren? Sieht aus als würden die libs/includes fehlen – erstell mal ein Projekt nur mit den libincludes und Versuch das lokal zu kompilieren

      Antworten
  5. Alex
    Alex sagte:

    O.K. ich habe ein neues Projekt erstellt nur mit den 3 Libraries L3G , LSM303 und wire. Das lies sich kompilieren.
    Die .h -dateien sind auch im Gimbal Sketch eingefügt.
    Die Fehlermeldung bezieht sich jeweils auf folgende Zeilen:
    I2C.ino:45:17: error: ‚L3G_CTRL_REG1‘ was not declared in this scope
    I2C.ino:64:34: error: ‚LSM303DLHC_DEVICE‘ was not declared in this scope
    I2C.ino:66:25: error: ‚LSM303_CTRL_REG1_A‘ was not declared in this scope
    I2C.ino:72:25: error: ‚LSM303_CTRL_REG4_A‘ was not declared in this scope
    I2C.ino:91:23: error: ‚LSM303_MR_REG_M‘ was not declared in this scope
    Irgendwelche Infos zum Sensor scheinen noch zu fehlen?

    Antworten
    • reinhard
      reinhard sagte:

      Das Projekt ist leider schon einige Jahre her – könnte eine neue Lib sein bzw. eventuell durch eine neue arduino ide Probleme machen – ich schau heut Abend mal rein und meld mich dann wieder

      Antworten
      • Alex
        Alex sagte:

        Danke.
        Kann der Fehler beim Sensor liegen? Wir haben das Nachfolgerboard :MiniMu-9 V3
        und die verlinkte library ist laut Liste für diesen neuen Sensor.
        Evtl. muss der Gimbal Sketch irgendwo für den neuen Sensor definiert werden????

        Antworten
        • reinhard
          reinhard sagte:

          Hi, nein es liegt daran das sich die Libraries in der zwischenzeit weiterentwickelt haben – ich hätte damals wohl die revision oder tag angeben sollen.
          Egal ich hab die I2C.ino angepasst mit den aktuellen Libs und am Ende des Artikels neu verlinkt. Sketch lässt sich kompilieren, jedoch kann ich’s leider nicht mit Hardware testen, da ich das Gimbal leider nicht mehr habe – also einfach mal runterladen und ausprobieren.

          Antworten
  6. Alex
    Alex sagte:

    Super – Danke !!!!
    Mit dem deinem Update lässt sich das Programm jetzt kompilieren.
    Wir werden uns jetzt an die weiteren Arbeiten machen, Falls wir alles schaffen, sende ich ein Foto,

    Antworten
  7. Alex
    Alex sagte:

    Hallo, wir hatten noch einige Schwierigkeiten.
    Bei deinem Schaltplan fehlt am Sensoranschluss noch ein Kabel für die Stromversorgung.

    Antworten
  8. Luca
    Luca sagte:

    Hey Reinhard,
    ich habe einen Arduino UNO und einen Beschleunnigungssensor MPU-6050.
    Glaubst du mit deinem Sketch und libraries könnte es trotzdem klappen ?
    Gruß Luca

    Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.