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.
Im folgenden werde ich über Neuigkeiten bezügl. des Quadrocopters berichten. Wer immer auf dem laufenden sein möchte, abonniert am besten den RSS-News Feed.
Die Motoren und eine 6-Kanal Fernsteuerung wurden bestellt.
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 mußte 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 zusammengelötet.
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.
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
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
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.
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
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.
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).

Bild 4: Das Chassis aus Alu-Profil
Nach einiger Rumfummelei mit stumpfen Bohrern und zu klein geratenen Pads bei den Durchkontaktierungen sind zwei der Motorregler bestückt und voll funktionsfähig.
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 selbsterstellten 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.
Bild 6: Adapterplatinen für den dreiachsigen Beschleunigungssensor und die Drehratensensoren (Gyros)
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).
Bild 7: Gyro abwechselnd um 90° Grad nach links und nach recht gedreht. Blau: ADC-Wert, Rot: Winkel-Integral
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 zusammengehacktem FLTK-Progrämmchen angezeigt.
Video 4: Gyro Test
Die Lageregelung auf einer Achse wurde getestet. Klappt nocht 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 herangetastet. 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
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 hergestelllt. Auf der Platine ist auch USB vorgesehen, so dass sich die Platine auch gleich als Funk-Dongle verwenden lässt.
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
Ein Teil des Schaltplans der Hauptplatine ist fertig. Diesmal wurde kein AVR verbaut, sondern eine 16-bit/32-bit ARM7-CPU von NXP/Philips.
|
|
Permalink: http://thomaspfeifer.net/quadrocopter_selbstbau_avr.htm © 2010 Thomas Pfeifer |