STM3x Quadkopter Flugsteuerung
Quadrokopter Flugsteuerung in C für STM32F30x MCUs
Projektbeschreibung
Motivation
Kann ich eine Drohne selber bauen, ohne auf fertige Software zurückzugreifen? Das war die Frage, die in meinem Kopf gewachsen ist, als ich mich eine Zeit lang mit Mikrokontrollern beschaftigt habe.
Über das Projekt
Mein selbst gestecktes Ziel eine autonome Drohne zu bauen, ist bis heute leider noch nicht endgültig erreicht. Einen Multikopter zu bauen, der auf Basis einer geplanten Route seinen Flug autonom - und ganz wichtig - auch sicher durchführt, muss gründlich geplant und durchgeführt werden. Der Entwicklungsprozess nimm dementsprechend auch eine gewisse Zeit in anspruch. Ein System, das sich selbst reguliert, das basierend auf Sensordaten und eines vorgegebenen Ziels dieses Ziel auch erreicht, benötigt eine Reihe von Komponenten, die miteinander kommunizieren.
Die Herausforderung: Ein Multirotor ist ein von Natur aus instabiles System. Die Motoren müssen in regelmäßig und kurzen Zeitintervallen die richtigen Impulse erhalten, um den Multirotor durch die Zu- oder Abnahme des Schubs zu stabilisieren. Das erfordert wiederum, dass Sensoren schnell ausgelesen und Steuersignale des Operators interpretiert werden. Die gesammelten Daten müssen schnell weiter verarbeitet werden, um eine geeingnete Darstellung der Informationen zu erhalten. Es findet eine Vielzahl an wichtiger und zeitkritischer Kommunikation statt. Basierend auf den genannte Faktoren lässt sich dieses eingebette System als Regelschleife verstehen, welches Echtzeitanforderungen erfüllen muss. Sollte das System nicht in angemessener Zeit reagieren, kommt es im schlimmsten Fall zum Absturz.
Wichtige elektronische Bauteile eines Multikopters
Es gibt mehere Arten von Multirotoren. Für diese Projekt habe ich mich für einen Quadrokopter entschieden. Wie der Name vermuten lässt handelt es sich um einen Multirotor mit vier Motoren. Damit ein Quadrokopter stabil fliegen kann, benögitgt man eine Reihe von Sensoren, deren Daten Orchestriert werden müssen. Die aus den Sensoren gesammelten Daten müssen in kürzester Zeit anaylsiert, interpretiert und in Steuersingale für die 4 Motoren transformiert werden. Der Regelkreis sollte meiner Erfahrung nach über 2 kHz oder unter 500 Mikrosekunden liegen. Als Vergleich: die Reaktionszeit des Menschen liegt bei ca. 200 bis 300 Millisekungen. Also um den Faktor 1000 langsamer (Quelle: Wikipedia). Einen Überblick über die an der Kommunikation teilnehmenden Komponenten gibt die folgende Tabelle.
-
MotorenDie Anzahl varriert je nach Art des Multirotors
-
ESCElectronic Speed Controller. Impulsgeber zur Steuerung der Motordrehzahl über Zeitintervaller der Spannung.
-
BeschleunigungssensoreMessung der positiven und negativen Beschleunigung in allen drei Raumachsen
-
GyroskopMessung der Drehgeschwindigkeit um alle Raumachsen
-
BarometerMessung des Luftdrucks zur Berechnung der Höhe
-
MagnetometerBestimmung der Position relativ zum Erdmagnetfeld.
-
GPS-ModulZur Navigation des Quadkopters werden GPS-Daten benötigt
-
RC-EmpfängerEmpfänger für die Funksignale der Fernsteuerung
Kommunizierende Komponenten eines Quadrokopter
Flugsteuerung
Allgemein
Das Gehirn des Multirotors; die Flugsteuerung. Neben der korrekten Auswahl der physischen Komponenten ist die Programmlogik und die Feedbackschleife (PID) das Herzstück des gesamten Systems. Je eher ein Feedback erfolgt und je schneller die Sensordaten ausgewertet und interpretiert werden können, umso schneller kann eine Rückmeldung an die Motoren erfolgen und umso schneller kann eine Korrektur der Lage erfolgen. Die Sensoren müssen schnell nacheinander angesprochen, ausgewertet und die Informationen verarbeitet werden. Da die Programmlogik nur sequenziell abgearbeitet werden kann und nicht paralell muss mit speziellen Programmiertechniken die Wartezeit auf Sensordaten verkürzt werden. Da jeder Sensor Vor- und Nachteile sowie Messungenauigkeiten hat, müssen mehere Sensordaten kombiniert werden. Dieses Vorgehen nennt sich Sensordatenfusion. Zudem ist ein Multirotor ein stark vibrierendes System. Die Sensordaten müssen entsprechend gefilter werden, um aus dem Rauschen die richtigen Daten herauszulesen. Datenfusion und Filterung sind rechenintensive Prozesse. Aus diesem Grund ist die geeignete Wahl eines Mikrokonrollers wichtig, der ausreichend Rechenleistung mitbringt.
Mikrokontroller
Ein Arduion 8-Bit MCU mit einer Taktrate von 16Mhz ist auf den erste Blick eine geeignete MCU. Es gibt einige Projekte, wie beispielsweise das Multiwii-Projekt, die auf dem Arudino aufgespielt werden können. Die erreichbaren Flugeigenschaften sind auch in Ordnung. Der kleine Mikrokontroller der ATmega-Familie kommt aber schnell an seine Grenzen. Er ist eher geeignet, einen schnellen Einstieg in die Welt der Mikrokontroller zu finden. Viele der oben genannten Komponenten sind leicht zu beschaffen und es gibt eine große Community, die bei Fragen unterstützen kann. Auch mein Projekt hat auf der Arduino Plattform angefangen.
Arduino Nano. Kleines anwenderfreundliches Breadbord basierend auf einem ATmega238 (Arduino Nano 3.x).
Arduinio NanoEine bessere Alternative ist ein 32 Bit Mikrokontroller mit einer höheren Taktrate. Beispielsweise der SMT32F303. Mit einer Frequenz von 72MHz und dem größeren Adressbereich ist diese MCU als Steuereinheit des Quadrokopters gut geeignet. Eine weitere Anforderungen an eine Flugsteuerung ist das Packaging bzw. die Baugröße. Die kleinsten Bauformen bieten vorgefertigte Boards. All die oben genannten Sensoren sind mindestens einmal oder können durch eine ausreichende Anzahl an Schnittstellen einfach werden.
Omnibus F4 mit einer SMT32 F405 MCU und Sensoren.
Soft- bzw. Firmware
Einen Einblick in die Software kann man sich auf Githubverschaffen. Die aktuelle Version ist jedoch offizieles Release und bietet keine GUI zum setzen von PID-Werten. Auch Einstellungen für die Drehrichtung der Motoren und das zu verwendende nur im selber vorgenommen werden. Sollte trotzdem interesse bestehen, den Code oder davon zu verwenden und Fragen bei der Implementierung aufkommen dann könne mich gernen kontaktieren. Ich helfe gerne weiter.
Ihr Tech-Partner bei Software- und Webprojekten
Mit professioneller Einstellung und kreativer Energie von der Idee bis zur fertigen Anwendung.
Kontakt