Eigenbau-Quadrocopter

Ein Quadrocopter ist ein Fluggerät, welches den Auftrieb über vier in eine Ebene angeordnete Rotoren erzeugt. Hier wird der Selbstau eines solchen Hubschraubers beschrieben.

Features

Zielsetzung

Einen Quadrocopter entwickeln und bauen, der möglichst stabil fliegt und genügend Reserven besitzt um auch Nutzlasten wie Kameras etc. zu tragen. Nebenbei soll das (viel zu) theoretische Uni-Wissen über Steuerungs- und Regelungstechnik (insbesondere PID-Regler, später vielleicht sogar mal der Kalman-Filter) aufgefrischt und praktisch angewendet werden.

Status

Im folgenden werde ich über Neuigkeiten bezüglich. des Quadrocopters berichten. Wer immer auf dem laufenden sein möchte, abonniert am besten den RSS-News Feed.

28.11.2009

Die Motoren und eine 6-Kanal Fernsteuerung wurden bestellt.

Erste Vorüberlegungen für den Aufbau

Bild 1: Erste Vorüberlegungen für den Aufbau

2.12.2009

Die Mikrocontroller, Mosfets und ein ganzer Haufen "SMD-Hühnerfutter" sind eingetroffen. Das Paket mit den Motoren ist noch nicht da: "Aus unvorhersehbaren Gründen musste die Zustellung abgebrochen werden." Da das Platinen-Layout noch nicht fertig ist, wurde zum Test eine 3-phasige Mosfet-Brücke auf einem Stück Streifenrasterplatine zusammen gelötet.

3.12.2009

Das Paket mit den Motoren ist angekommen. Beim Testen der High-Side Mosfets wird eine Brücke plötzlich so heiß, dass das Lot flüssig wird und sich eines der Kabel löst. Ursache: Ein vergessener Pull-Down-Widerstand bei einem der Low-Side Mosfets.

Prototyp der Motor-Endstufe mit einem EK5-0002-Motor

Bild 2: Prototyp der Motor-Endstufe mit einem EK5-0002-Motor

4.12.2009

Es dreht sich! Ein einfaches Testprogramm wurde geschrieben, welches ein Drehfeld erzeugt. Von einer echten Ansteuerung ist das aber noch weit entfernt: Das Drehfeld ist fest vorgegeben. Was fehlt, ist eine Positionsbestimmung mit der der richtige Zeitpunkt für die nächste Phase bestimmt wird.

Video 1: Ein erster Motortest

5.12.2009

Es dreht sich - aber richtig! Der Controller bestimmt jetzt anhand der induzierten Gegenspannung die aktuelle Position und bestimmt damit den optimalen Schaltzeitpunkt. Testweise wurde auch der Spindelmotor einer alten Festplatte angeschlossen.

Video 2: Sensorlose Phasenregelung

13.12.2009

Die Beschaltung der Mosfets und die Brushless-Controller-Software wurden weiter optimiert. Die Positionserkennung funktioniert jetzt auch mit PWM. Im unbelasteten Zustand dreht der Motor hoch bis 20000Upm und zieht dabei rund 5A ohne großartig warm zu werden.

17.12.2009

Es fliegt - naja, zumindest 1/4 des Quadrocopters.
Nachdem DHL die Zustellung eines Pakets wieder drei Tage lang aus "unvorhersehbaren Gründen" immer wieder abgebrochen hat, sind endlich die Propeller angekommen (Zugegeben, es ist kurz vor Weihnachten. Aber das vor Weihnachten ein paar mehr Pakete verschickt werden, ist doch einigermaßen vorhersehbar, oder?). Die Propeller wurden dann auch gleich am Testaufbau montiert, welcher dann, trotz Leistungsbeschränkung auf ca. 30% und einem Gewicht von 400g auch gleich abgehoben ist:

Video 3: Ein etwas unvorsichtiger Test mit Propeller

22.12.2009

Für die Motor-Regler wurde ein Platinen-Layout erstellt. Mit der Toner-Methode wurden vier dieser Platinchen hergestellt. Jeder Motor bekommt eine eigene ATmega88 RISC-CPU.

Herstellung der Platine mit den Motor-Controllern

Bild 3: Herstellung der Platine mit den Motor-Controllern

23.12.2009

Inzwischen kann man schon erkennen, wie der Quadrocropter später aussehen wird. Das Chassis wurde aus 10mm Alu-Profil aus dem Baumarkt gefertigt. Der Achsabstand beträgt 42cm (über die Mitte gemessen).

Das Chassis aus Alu-Profil

Bild 4: Das Chassis aus Alu-Profil

28.12.2009

Nach einiger Fummelei mit stumpfen Bohrern und zu klein geratenen Pads bei den Durchkontaktierungen sind zwei der Motorregler bestückt und voll funktionsfähig.

Zwei funktionsfähige Motorregler

Bild 5: Zwei funktionsfähige Motorregler

30.12.2009

Für die Beschleunigungs- und Drehratensensoren wurden zwei kleine Adapterplatinchen erstellt. Beide Sensoren kommen in einem LGA Gehäuse daher; die Pins sind ähnlich wie bei BGA nicht seitlich, sondern unter dem Gehäuse. Der Pinabstand beträgt bei dem Beschleunigungssensor 0,5mm. Ein Lötkolben hilft da nicht weiter. Zum löten wurden daher die Pins auf dem Bauteil und der Platine großzügig verzinnt. Das Bauteil wurde dann mit viel Flussmittel auf der Platine platziert und von unten mit Heißluft erwärmt bis das Lötzinn flüssig wurde. Das hat funktioniert, allerdings stellte sich beim Durchmessen der Pins heraus, dass in der selbst erstellten Eagle-Library auf einer Seite die Nummerierung der Pads versehentlich gespiegelt wurde. Die Adapterplatine für den Beschleunigungsensor ist damit nutzlos. Hoffen wir mal, dass der Sensor das anstehende aus- und wieder einlöten übersteht.

Adapterplatinen für den dreiachsigen Beschleunigungssensor und die Drehratensensoren (Gyros)

Bild 6: Adapterplatinen für den dreiachsigen Beschleunigungssensor und die Drehratensensoren (Gyros)

5.1.2010

Die Platine für den Beschleunigungssensor wurde neu layoutet und der Sensor anschließend erfolgreich aus und wieder eingelötet. Einer der Drehratensensoren (Gyro) wurde an den ADC-Eingang eines ATMega8 angeschlossen und die Werte über die serielle Schnittstelle ausgegeben. Um aus den Drehgeschwindigkeiten den Drehwinkel zu erhalten, wurden die Werte aufintegriert. Das erste Ergebnis sieht schon gar nicht so schlecht aus (Anmerkung: Erster Versuch, es fehlt noch die Kalibrierung und eine Zeitbasis per Timer).

Gyro abwechselnd um 90° Grad nach links und nach recht gedreht. Blau: ADC-Wert, Rot: Winkel-Integral

Bild 7: Gyro abwechselnd um 90° Grad nach links und nach recht gedreht. Blau: ADC-Wert, Rot: Winkel-Integral

6.1.2010

Die Auswertung des Gyroskop-Sensors wurde noch einmal überarbeitet. Mit festem Zeitraster per Timer-Interrupt, Oversampling und Runge-Kutta-Integration sieht das Ergebnis viel besser aus als ursprünglich erwartet. Das Messergebnis wurde in dem Video über die serielle Schnittstelle an den PC übertragen und dann mit einem auf die schnelle zusammen gehacktem FLTK-Progrämmchen angezeigt.

Video 4: Gyro Test

9.1.2010

Die Lageregelung auf einer Achse wurde getestet. Klappt noch nicht so ganz doll; die richtigen Parameter für den PID-Regler müssen noch gefunden werden.

Video 5: Test mit zwei Motoren

An die PID-Parameter wurde sich experimentell langsam heran getastet. Mit hohem D-Anteil, kleinem P- und winzigem I-Anteil sieht die Reaktion auf eine Auslenkung schon halbwegs brauchbar aus:

Video 6: Test mit zwei Motoren und PID-Regelung

24.1.2010

Der Beschleunigungssensor wurde per I²C ausgelesen. Die Sensordaten wurden im folgenden Video mit einem kleinem FLTK basierendem Programm visualisiert. Die Beschleunigungswerte sind unten zu sehen (+/-1g). Daraus werden Roll- und Nick-Winkel berechnet und einmal gefiltert und einmal ungefiltert dargestellt.

Video 7: Test des BMA150-Beschleunigungssensors

Für die Übertragung der Telemetrie-Daten und ggf. Anpassung der Parameter on-the-fly (hier durchaus wörtlich zu nehmen ;-) wurde ein RFM12-Funkmodul vorgesehen, welches auf 868Mhz senden und empfangen kann. Zum testen wurden zwei kleine Mega8-Platinchen hergestellt. Auf der Platine ist auch USB vorgesehen, so dass sich die Platine auch gleich als Funk-Dongle verwenden lässt.

RFM12<->USB Test-Boards

Bild 8: RFM12<->USB Test-Boards

30.1.2010

Mithilfe der V-USB-Library wurde ein PPM2USB-Adapter realisiert. Die PPM-Signale von der Modellbau-Fernsteuerung werden in digitale Werte gewandelt. Auf der USB-Seite wird ein Standard-USB-Joystick emuliert. Damit konnten dann im Flug-Modell-Simulator (FMS) schon ein paar Runden gedreht werden.

Video 8: Test des PPM2USB-Adapters, Testflug mit Quadropcopter und A380 im FMS

19.11.2013 - Und er fliegt doch!

... Zumindest ein bisschen...
Nach einem ausgiebigem Winterschlaf geht es nun weiter. Nachdem ich mir beim Chinamann einen Hubsan X4 Mini-Quadrocopter bestellt hatte und damit ein paar Runden gedreht hatte, war klar: Da muss was größeres her!
Also mal wieder in die Bastelkiste gegriffen und ein leicht angestaubtes Quadrocopter-Chassis mit ein paar Motoren samt Reglern, einen ATMega168, drei Murata-Gyros, einen Lipo 2200mAh 3S-Akku und einen Funkempfänger hervor gekramt und mit Lötkolben, viel Heißkleber und Klebeband zu einem ganzen zusammen gefügt. Anschließend wurde eine einfache Reglersoftware zusammen gehackt (C-Code, Gyro-Offsets und sonstige Parameter hardcoded, P-Regler Parameter pi mal Daumen geschätzt). Lebendgewicht: 666g (Codename: Evil-Copter).
Das Ergebnis: Er fliegt... halbwegs... kurz. Leider spinnt einer der Motorregler und liefert bei ca 50% Throttle plötzlich keinen Schub mehr :(

Video 9: Der erste Flugversuch. Das geht sicher noch besser.

20.11.2013 - Und er fliegt... richtig!

Wie sich heraus stellte, war der Stützkondensator an einem der Motorregler an einer Seite gar nicht angelötet... *facepalm*
Danach lief dann alles glatt: Er fliegt! Für pi-mal-Daumen geratene Reglerparameter sogar unerwartet sauber. Das hin und her liegt am Piloten welcher erst mit der ungewohnten Steuerung klar kommen muss (die Empfindlichkeit von Pitch und Roll ist viel zu hoch) und Angst um seine Propeller hat ;)

Video 10: Der ztweite Flug

Links

Tags: quadrocopter mikrocopter quadrotor quadcopter quadrokopter quatrocopter mikrokopter quad copter hubschrauber quattrokopter modellbau drone drohne Atmel AVR Mikrocontroller Projekte Projekt uC diy selbstbau tutorial µC selbstgebaut schaltung schaltplan schema bauplan bauanleitung schematic programmierung elektronik controller embedded Atmega8 Atmega32 arduino bascom avr-gcc avr studio atmega microcontroller isp