Fisch´s Projekte-Seite

Projektbeginn: Februar 2014

DIY Brushless Gimbal


Mit dem Tricopter hatte ich nun etliche Flüge hinter mir. Bei den meisten davon war die Gopro mit am Copter. Beim anschließenden einsehen des Videomaterials fällt mit der Zeit auf, dass alles durch die sich mit dem Copter neigende Kamera sehr hektisch und selten ruig wirkt, was nicht schlecht sein muss. Allerdings wollte ich z.B. auch mal ein paar entspannte Landschaftsaufnahmen machen können. Es gilt also das Rollen und Neigen des Copters auszugleichen.

Häufig genutz werden dafür Brushless Gimbals. Die Brushless Motoren dafür, welche eine spezielle Wicklungsart haben müssen, gibt es günstig zu kaufen, sodass ein selber umwickeln des Stators eigendlich nicht lohnt.Ausser man hat nichts zu tun und nen Motor grad rumliegen. Hatte ich nicht, also zwei Motoren bei RCTimer geholt (2804-100T). Fürs Erste reicht mir ein 2-Achs Gimbal, also Roll und Nick.
Neben den Motoren braucht es noch einen Controller. Dazu gehört der Motortreiber, ein Mikrocontroller und eine IMU (Gyroskop und Accelerometer, plus Magnetometer bei 3-Achsen). Über eine kleine Sammelbestellung kam ich an das mBGC (www.olliw.eu) v1.04. Diese Platine bekommt ein paar Fets, n bisschen Hühnerfutter und einen Arduino Pro Mini. Mit nem 15€ Arduino aus China kam ich auf irgendwas zwischen 20 und 30€ für die Elektronik.Plus 10€ pro Motor, macht also grob 50€.




Hier die 2804-100T Gimbal Brushless Motoren von RC Timer. Um besser planen zu können hab ich die Motoren ausgemessen und in Inventor nachgezeichnet.




Was noch fehlt ist die Gimbalkonstruktion. Um doch noch ein bisschen was dran selbst entwickelt zu haben und weil es ja nicht so schwer sein kann hab ich mich wieder mal ans Inventor gesetzt.
Raus kam ein Ding aus Alu U-Profilen (20mm x 8mm, 1mm dick) und etwas CFK bzw. GFK als Verbinder. Damit das Gimbal ordentlich funktioniert muss es ausbalanciert werden. Um es verstellbar zu machen werden die Motoren an Langlöchern festgeschraubt und lassen sich entlag des Aluprofils verschieben.

Hier noch die DXF-Dateien für die Aluteile und die "Joinplates": 20140223_dxf_exported_alugimbal.rar Die joinplate_nick wird viermal benötigt, die joinplate_mount zweimal


Die Langlöcher hab ich CNC-gefräst. Mit einem 2,5mm Einschneider auf 50mm/min vorschub in einem Durchgang (das Alu ist eh nur 1mm dick). Dabei sollte man den Fräser mit Alkohol (Spiritus oder Isoporpanol) kühlen.


Nachdem auch die "Joinplates" aus Reststücken CFK/GFK gefräst waren fehlten noch die seitlichen Löcher zum Zusammenschrauben. Dazu hab ich die jeweiligen Teile zusammengehalten und die Löcher am Alu angezeichnet, um sie anschließend per Hand zu bohren.


Dann konnten immer die zwei Aluprofile mit den "Joinplates" zusammengeschraubt werden. Teilweise hab ich Nylonschrauben verwendet um etwas Gewicht zu sparen.
Da die M3 Schrauben, die bei den Motoren dabei waren, zu lang sind, sodass die im inneren des Motors an den Stator stoßen würden, hab ich aus Holz ein paar Distanzplatten gefräst. (Datei im oben genannten Archiv: motor_distanceplate.dxf und motor_distanceplate-glocke.dxf)
Der schwarze Kasten ist ebenfalls aus Holz und dient als Halterung für den Controller.


Dann mussten die Teile mit den Motoren nurnoch zusammengeschraubt werden. Die IMU wird im inneren des Aluprofils aufgeklebt, auf dem die Kamera nachher sitzt. Die Kabel von der IMU zum Controller müssen sehr flexibel sein, da sich sonst das Gimbal nicht ausbalancieren lässt.


Hier der erwähnte Controllerkasten, war mehr ne Notlösung weil mir auf die schnelle nix schöneres einfiel.



Als Opensource Controllersoftware gibt es BruGI. Den Arduino Sketch lädt man wie gewohnt auf den Arduino. Mit der BruGi GUI Software (blg-tool.exe) lassen sich dann alle Einstellungen machen (Motorstrom, PID etc). Leider gibt es die GUI nur für Windows. Eventuel funktioniert es ja mit Wine. Da der Controller aber eigendlich nur einmal richtig eingestellt werden muss hab ich da nicht weiter getestet.
Bevor man das Gimbal mit Strom versorgt sollte man zuerst die Einstellungen überprüfen. Dazu den Arduino Seriel mit dem Rechner verbinden und das Brushless-Gimbal-Tool starten. Dann sollte man eine ACC und GYRO Calibration gemacht werden (unter dem Reiter "Calibration"). Das Gyro kalibriert sich zusätzlich bei jedem start. Trotzdem sollte man beim Einstellen der PIDs hin und wieder manuel das Gyro kalibrieren.
Die PIDs werden unter "PID Pitch" und "PID Roll" angepasst. Dazu sollte man die "PID Tuning Guide" gelesen haben.
Um mit den PID Tuning beginnen zu können muss der Controller mit Strom versorgt werden. Dazu wie in Punkt 1 beschrieben die "PWM" (also den Motorstrom) von Roll und Pitch auf 0 stellen. Dann unter Settings die Einstellungen mit "Save to EEPROM" in den Arduino schreiben. Bevor man den Controller an 7-16V anschließt sollte man die 5V Spannungsversorgung für den Arduino trennen (falls der auf dem Arduino verbaute Spannugnsregler benutzt wird). Nun kann der Controller an die Hauptspannungsquelle angeschlossen werden.
Achtung: Ich hab den Controller zum Testen immer nur an ein Labornetzteil mit Strombegrenzung angeschlossen (begrenzt auf 400mA). Als ich den Controller zum ersten Mal an einen 3S Lipo steckte brutzelten mir zwei der FETs durch. Warscheinlich war der Arduino nicht schnell genug um die FETs beim Start abzuschalten so das es dort einen Kurzschluss gab. Um einen Lipo sicher zu verwenden werde ich noch eine kleine Strombegrenzerschaltung löten müssen.
Nun kann mit Punkt 2 der PID Tuning Anleitung fortgefahren werden.
Für mich erwies sich im Nachhinein als Praktischer zuerst P, I und D auf kleine werte zu stellen. z.B. P=2, I=1, D=2. max PWM liegt bei mir meist so zwischen 30% und 50%. Von da wird dann zuerst P so lange erhöht bis der Motor anfängt zu Schwingen/Vibrieren, dann wieder etwas zurück. Das selbe mit D. Dann wieder mit P usw. I brauchte ich garnicht so hoch stellen. Dann mal ein bisschen hin und herbewegen und die Werte etwas anpassen.
Anschließend nicht vergessen die Einstellungen in den EEPROM zu speichern. Auch sollte man sich zwischen durch ein Backup als Datei machen ("Save to File").
Funktioniert das Einstellen garnicht, also will das Gimbal nie Ruig stehen bleiben ist entweder die IMU invertiert (unter Settings "Reverse Z-axis" bzw. "Swap XY-axis") oder die Motorrichtung muss getauscht werden (entweder Motorstecker umdrehen oder bei den PID Einstellungen unter "Direction reverse").

Strombegrenzung

Wie bereits erwähnt braucht es (zumindest bei mir) zum sicheren Betrieb eine art Strombegrenzung, ähnlich der eines Labornetzteils.
Realisieren lässt sich eine solche "Konstantstromquelle" mit einem Opamp und einem Fet. Durch den Spannungsteiler lässt sich der Maximalstrom einstellen. Die Widerstandswerte im Schaltplan hab ich durch ausprobieren ermittelt. Eingangsspannung beträgt 7-12V (also 2S oder 3S Lipo), den Strom begrenze ich auf etwa 350mA.
Zum Einstellen des Stroms dreht man den Poti ganz runter (sodass am nichtinvertierten Eingang des LM358 0V anliegen) und schließt den Ausgang (JP1) kurz. Mit einem Amperemeter misst man den fließenden Strom und dreht den Poti langsam hoch, bis der gewünschte Strom erreicht ist. Bei höheren Strömen am besten nicht allzu lange kurzschließen, da der Fet (BUZ11) ohne Kühlung schnell heiß wird.


Die Schaltung hab ich auf einem Stück Lochrasterplatine aufgebaut und mit einer kleinen Aluplatte als Kühlung eingeschrumpft.


Vorne am Stecktri befestigt sieht es dann so aus. Die Befestigung und die Vibrationen vom Copter waren wohl nicht ganz so optimal, sodass das Gimbal vorne zu stark vibrierte.
Da ich momentan eigendlich nur noch mit der viel leichteren und kleineren Mobius fliege, werde ich das Gimbal etwas um-/neubauen.



So ganz richtig hab ich das Gimbal mit der Gopro nicht eingestellt bekommen. Da ich aber von der Gopro Hero 2 auf die viel kleinere und günstgere Mobius als Flugkamera umgestiegen bin, wollte ich das Gimbal nochmal kleiner und leichter aufbauen.


3D Printed Gimbal


Ein bisschen im Netz umgeschaut, unteranderem bei Thingiverse finden sich diverse Mobius Brushlesgimbals. Da ich bei Thingiverse nicht so richtig füdig wurde hab ich mir dann eine ganz einfach Konstruktion selber designed, passend für die RCTimer "GBM2804 019-100T" Motoren.

Nichts wirklich unglaublich besonderes, drei Winkel mit passenden Langlöchern zum justierbaren abringen der Motoren. Die Mobius wird mit Klettband auf die Trägerplatte geklettet und mit zwei Gummibändern gesichert.


Die drei PLA Teile waren nach 1,5 Stunden fertig ausgedruckt. 3 Perimeter und 20% infill sind stabil genug. Die 3mm langlöcher musste ich mit einem Fräser noch etwas per Hand nachfeilen.
Download als STL: 3dprintgimbal_20141016.rar


Mobius drauf, nun können die Arme grob Justiert werden, sodass die Mobius nicht in eine Richtung wegkippt.
Die IMU hab ich unten drunter im Schnittpunkt der beiden Motorachsen angeklebt. Das Kabel von der IMU zum Controller hab ich diesmal deutlich dünner gewählt, damit dort die Achse nicht beeinflusst wird.


Den Controller erstmal provisorisch hinten dran gepömpelt. Motoren und PID grob eingestellt und siehe da, es macht nicht mehr solche Faxen wie zuvor.