Quadrokopter

Nach eingehendem Studium der Materie, habe ich mich entschlossen, meinen eigenen Quadrokopter zu entwickeln. Folgende Vorgaben habe ich mir gestellt:

  • 4 bis 8 Motoren
  • Elektronik basierend auf einer aktuellen Rechnerplattform
  • Moderne, möglichst digitale Sensoren
  • 4 zusätzliche Servos
  • 4 Schaltkanäle
  • Statusanzeige auf Jeti Box
  • GNU Softwareplattform
  • Erweiterbar mit Navigationsmodul

 

Daraus ist eine erste Version des Flight Controllers entstanden:

 

Flight Controller Platine von obenFlight Controller Platine von unten

 

Folgende Hauptkomponenten werden eingesetzt:

  • ARM Cortex-M3 Prozessor STM32F101
  • 3 achsiger Accelerometer
  • 3 achsiger Gyro
  • Drucksensor
  • Temperatursensor
  • Getaktete Regler für die 3.3V und 5V Stromversorgung
  • Tongeber

 

Die Software wird in C geschrieben und mit der GNU-Toolchain kompiliert. Ich habe mich entschieden, ein kleines Betriebssystem einzusetzen. Dies erlaubt es, Aufgaben in Tasks zu programmieren und die Verwaltung dieser Tasks dem Betriebssystem zu überlassen. Ziel ist ein modularer Aufbau der Software, der es erlaubt Module mit verschiedenen Implemenationen der gleichen Aufgabe einfach auszutauschen. Wichtig ist auch die Kapselung der Hardware, damit auch hier andere Komponenten, mit minimalem Anpassungsaufwand in der Software, eingesetzt werden können.

 

Nachfolgend ist die Entwicklungsumgebung zu sehen.

 

Entwicklungsumgebung

 

Der Flight Controller wird über einen 3- oder 4-Zellen LiPo-Akku gespiesen. Davon werden in Zukunft auch die Motoren den Strom beziehen. Über das weisse USB-Kabel ist ein JTAG-Debugger angeschlossen, der die Softwareentwicklung unterstützt. Das schwarze Kabel ist ein USB-RS232-Konverter. Darüber wird die Konfigurations- und Wartungsschnittstelle des Flight Controllers zum PC geführt. Am farbigen Kabel hängt ein einfacher Empfänger, der seine Signale vom Sender nebenan kriegt. Mit diesem Aufbau ist es möglich die Software zur Ansteuerung der Sensoren und zum Lesen des PPM-Summensignal vom Empfänger zu programmieren. Ausserdem können die Servo- und Schaltkanalansteuerungen realisert werden.

 

Flight Controller mit angeschlossenen Servos

 

 

In der Zwischenzeit ist eine erste Testplattform entstanden, die es erlaubt, die Motoren anzusteuern.

 

Erste Testplattform des Flight Controllers

 

Damit konnte ich schon die grundsätzliche Motorenansteuerung implementieren und testen. Die empfangenen PPM-Signale werden über entsprechende Mischer auf die Motoren gegeben, so dass eine ungeregelte Steuerung möglich wäre. Aus Sicherheitsgründen sind noch keine Propeller montiert (der Abstand der Motoren ist noch etwas knapp). Verwendet werden die Brushless-Regler von www.mikrokopter.de in der Version 2.

Auf dieser Plattform konnte ich auch die Daten des Beschleunigungs- und des Gyrosensors verifizieren. Darauf basierend habe ich die Regelungsalgorithmen implementiert und soweit wie möglich getestet. Nun muss ein richtiges Frame her, damit die Algorithmen weiter getestet und parametrisiert werden können. Nun wird's etwas mechanisch.

 

So soll der Quadrokopter, der übrigens CC-Copter heissen soll, aussehen:

 

CAD Konstruktion des CC-Copter

 

Die Ausleger bestehen aus Aluendstücken und einem CFK-Verbindungsrohr. Die Zentralplatten sind aus GFK gefertigt. Der Achsabstand der Motoren beträgt diagonal 50cm. Das angestrebte Abfluggewicht sollte unter 1kg sein, um genügend Leistungsreserve zu haben.

 

Die Ausleger und die Zentralplatten sind gebaut und ein erster Motor an einem Ausleger montiert.

 

Bauteile für das Frame des CC-Copter

 

Als nächster Schritt werden diese Teile zum fertigen Frame zusammengebaut und dann die Motoren montiert und verkabelt:

 

CC-Copter Frame vormontiert

 

Verkabelung von Motoren und Regler auf den CenterplatesVerkabelung eines Motors

 

 

Und schon sieht alles flugbereit aus:

 

CC-Copter flugbereit, aber nicht flugfähig ;-)

 

Nun müssen die Software getestet und die PID-Regler zur Kontrolle der Fluglage eingestellt werden. Dies ist noch ein rechter Happen Arbeit. Auf dieser Testeinrichtung werden Nick- und Rollregler eingestellt.

 

Testeinrichtung zur Einstellung der PID-Regler

 

Die Einstellung der PID-Regler zieht sich etwas dahin. Ich bleibe aber dran.

Es gab noch etwas Probleme beim Integrieren des Gyro-Signals, um zuverlässige Winkelwerte zu kriegen. Ausserdem hat die Fusion der Winkeldaten aus dem Beschleunigungssensor und dem Gyro nicht richtig funktioniert. Diese Probleme sind nun gelöst. Somit kann die Parametrierung des PID-Regler weiter gehen.

 

 

So, nun sieht die Einstellung der PID-Regler für Nick- und Rollachse gut aus. Für die Einstellung der Gierachse kommt diese Vorrichtung zum Einsatz:

 

Testeinrichtung zur Einstellung der Gierachse

 

 

Nun sollte alles soweit sein, dass erste vorsichtige Flugversuche unternommen werden können.

Nach Montage der Landefüsse und Ausbalancieren um Nick- und Rollachse, habe ich erste zaghafte Versuche im Keller gemacht. Diese sahen sehr vielversprechend aus. Darum ging's auf dem Rasen weiter. Das Resultat kann sich sehen lassen. Nick- und Rollachse sind schon recht gut kontrollierbar. Einzig die Gierachse reagiert noch schlecht. Trotzdem ein paar Bilder der ersten Hüpfer:

 

Start zum ersten Hüpfer

 

Es fliegt

 

Nicht mal schlecht

 

Mein Quadrokopter hat sich schon ziemlich gemausert. Er lässt sich schon recht gut steuern, vielleicht noch etwas träge. Dies lässt sich mit den PID-Reglereinstellungen noch verbessern.

Zwischenzeitlich habe ich mit der Realisierung des Höhenreglers begonnen. Der Luftdrucksensor funktioniert recht gut. Die Regelung selbst ist noch nicht ganz so weit. Um das Signal des Drucksensors zu stabilisieren, habe ich einerseits das Signal softwaremässig gefiltert und andererseits die Öffnung des Sensors mit komprimiertem Schaumstoff verschlossen. Der Schaumstoff wird durch den Schrumpfschlauch zusammengedrückt. So werden die Druckschwankungen durch die Propeller recht gut geglättet.

 

Drucksensor mit Filter

 

 

Nun war es recht lange ruhig hier. In der Zwischenzeit ist das Navigationsmodul entstanden. Es enthält neben einem Mikroprozessor einen Magnetkompasssensor, ein GPS-Modul, einen SD-Kartenhalter und einen USB-Anschluss. Folgende Bilder zeigen den Aufbau und die Montage auf dem Flight Controller:

 

Navigationsmodul von obenNavigationsmodul von unten

 

Navigationsmodul mit montiertem GPS-ModulNavigationsmodul auf Flight Controller montiert

 

Als nächstes kommt der Test der Hardware, bevor dann die eigentliche Navigationssoftware entwickelt werden kann.

 

Die Hardwaretests sind soweit erfolgreich verlaufen. Die Basissoftware mit Betriebssystem, Filesystem auf SD-Karte und USB-Schnittstelle sind lauffähig. Der Kompassbaustein liefert Daten, die von der Software zur entsprechenden Richtungsinformation verrechnet werden. Der Flight Controller liefert Lageinformationen für Roll- und Nickachse, die es der Kompasssoftware erlauben die Lagekompensation vorzunehmen. So ist die Richtungsinformation unabhängig von der Lage des Quadrokopters korrekt.

 

Die Daten des GPS-Moduls können nun eingelesen und ausgewertet werden. Ich habe mir eine Handy-App geschrieben, die die Position auf Google Maps anzeigt und den Weg aufzeichnet. Die Positionsdaten werden auf der SD-Karte gespeichert, wenn eine gesteckt ist. Mit Hilfe dieser Log-Daten versuche ich nun einen Algorithmus zum Halten der Position zu entwickeln.

 

In der Zwischenzeit  bin ich in der Lage den Differenzvektor zur gespeicherten Halteposition zu berechnen und diesen als Korrekturvektor zum Flightcontroller zu schicken. Daraus müssen nun die Korrekturwerte für die Motoren berechnet werden.

 

Fortsetzung folgt ...