Forum: Mikrocontroller und Digitale Elektronik Quadrokopter Regelung


von Max H. (hartl192)


Lesenswert?

Ich will mir diesen Sommer einen Quadrokopter bauen. Ich habe mich scho 
ein wenig in das Thema eingelesen, aber keine Website gefunden, auf der 
die Regelung erklärt ist. Als Sensoren möchte ich den L3G4200D und den 
ADXL345 verwenden. Ich habe die beiden Sensoren schon über I2C 
erfolgreich ausgelesen. Das ganze Programm möchte ich selbst schreiven 
und verstehen und nicht einfach ein fertiges aus den uC laden. Als UC 
will ich den PIC18F46k22 verwenden, da ich mich mit diesem schon 
intensiv beschäftigt habe.
Ich habe gelesen, dass meist ein Kalaman oder ein Komplementäfilter 
eingesetzt wird und die Regelung mit einem PID Regler realisiert wird.
Kennt jemand Websites, auf denen die Fusion der Sensordaten und die 
Regelung gut beschrieben sind?

von Quadcopter (Gast)


Lesenswert?


von Max H. (hartl192)


Lesenswert?

Dieser Thread beschäftigt sich aber auch nicht wirklich mit der 
Regelung.

von ah. (Gast)


Lesenswert?

Sonst gibt es auch noch ein spezielles Forum :
http://www.mikrokopter.de/en/home
http://forum.mikrokopter.de/

von Max H. (hartl192)


Angehängte Dateien:

Lesenswert?

Ich habe heute den Schaltplan für die Hauptplatine gezeichnet. Was sagt 
ihr dazu? Hat jemand einen Verbesserungsvorschlag?
Die Stecker J3, J4 und J5 sind dazu da um später eventuell noch etwas 
Zusätzliches anzuschließen, z.B. GPS-Logger an J5…

von oh (Gast)


Lesenswert?

Naja. etwas probieren gehoert auch dazu. Das Problem hier ist eher die 
Regelung abzugleichen, da man keine Echtzeitdaten bekommt. Dh man 
benoetigt einen Logger an Board, resp eine Aufzeichnungsfunktion, oder 
man macht einen Kommunikation Kanal zum Auslesen der Steuerdaten in 
Echtzeit.

von Max H. (hartl192)


Lesenswert?

Ist der Schaltplan so in Ordnung? Hat jemand einen 
Verbesserungsvorschlag?

von Lord of L. (lightninglord)


Lesenswert?

Ich kann dir diesen Text zum Thema Kalmanfilterung nur empfehlen:

http://www.visual-analytics.net/document.library/statistics/Kalman%20Filter%20fuer%20Dummies.pdf

Gibt eine gut verständliche Einführung in die Grundfunktion des Filters.
Mit dem Filter für deine Sensordaten steht und fällt deine Regelung. Da 
über die Messdaten zweimal Integriert wird, wirken sich die Drifts der 
Sensoren sehr auf dein Messergebnis aus. Am besten probierst du deine 
Filter und Regelung z.B. mit Scilab aus. Den PID kannst du ja zur Not 
immer noch iterativ bestimmen, hab ich bei meinem Quadrokopter auch so 
gemacht ;-). Dafür habe ich mir einen kleinen Teststand aufgebaut, in 
welchem sich der Quadrokopter um eine Achse drehen konnte. Dazu habe ich 
die dazu orthogonale Achse bzw. deren Ausleger mit Kugellagern drehbar 
gelagert. Dann fliegt dir das Ding nicht weg und du kannst die Daten 
einfach per Kabel auslesen (Echtzeit), das hilft ungemein.

von Max H. (hartl192)


Lesenswert?

Werde ich mir ansehen. Danke.

von Max H. (hartl192)


Lesenswert?

Was sagt ihr zum Schaltplan?

von B. G. (smarti)


Lesenswert?

Scheint in Ordnung zu sein, wobei bei I2C sollten noch 
Pullup-Widerstäand auf SCL und SDA sein.

von Max H. (hartl192)


Lesenswert?

Die Pull Up für das I2C sind bereits auf der GY80 Platine vorhanden.

von Patrick B. (p51d)


Lesenswert?

An deiner Stelle würde ich einen anderen Prozi nehmen: Mindestens einen 
16Bit, da du für Regelaufgaben mehr mit 32-Bit Variablen und viel 
Rechenaufwand rechnen musst, wenn du die Regelung einigermassen schlau 
gestallten willst. Ausserdem hast du noch GPS und ein Gyroskop (sollte 
dann aber auch mindestens alle 1ms aktuelle Daten zur Verfügung 
stellen)? Das willst du ja auch noch auslesen.
Im Normalfall aktualisiert du die Stellgrössen etwa alle 1ms, das heisst 
dass du sämltiche Ist-Werte GEFILTERT dann haben musst. Meistens laufen 
Pro Kreis mehrere kaskadierte Regler, welche auch wiederum doppelt so 
schnell sind wie der übergeordnete.
Würd dir eventuell sogar ein Cortex-M0 mit >48MHz empfehlen.

Ich hatte auch einmal ein PIC für eine Regelung einer Schlittenposition 
(eine Achse) verwendet, und ich war da schon knapp drin.

von Doc Arkan (Gast)


Lesenswert?

Nimm nen ATMega32U4 und pflanz nen MPU6050 drann. Zusätzlich nen Kompass 
(typ gerade nicht lesbar) und nen Luftdrucksensor (BMP085?).

Lad dir auf den ATMega nen Arduino Bootloader drauf und du kannst den 
Source von MultiWii verwenden...

Das Board kannst Du designen wie du willst, oder nimmst ne fertige 
Plattform (FlyDuino)

von ah. (Gast)


Lesenswert?

Das GPS bringt nur jede Sekunde neue Werte.

von Max H. (hartl192)


Lesenswert?

Ich möchte den PIC verwenden, da ich bereits alles zum Programmieren 
habe und ich mich bereits intensiv mit diesem beschäftigt habe. Außerdem 
möchte ich die Software selber schreiben und nicht irgend einen fertigen 
Code verwenden.
Wenn ein Atmega32 das schafft müsste ein PIC18F46k22 das wohl auch 
schaffen.

von Dave C. (dave_chappelle)


Lesenswert?

Schaltplan sieht gut aus, ist aber auch noch nicht gerade viel dran :)
Kannst ja nochmals einen hochladen, wenn er ein bisschen kompletter ist!

von Max H. (hartl192)


Lesenswert?

Wieso? Was fehlt bei diesem Schaltplan?

von Doc Arkan (Gast)


Lesenswert?

ah. schrieb:
> Das GPS bringt nur jede Sekunde neue Werte.

ublox6 gibt pro sekunde 10 Werte aus

von Patrick B. (p51d)


Lesenswert?

M. H. schrieb:
> Wieso? Was fehlt bei diesem Schaltplan?

Naja, wie wärs mit Stützkondensatoren pro IC und noch ein paar für die 
Motoren?

Ich nehme an, dass das ganze über ein Akkupack betrieben wird: Wo ist 
hier die Überwachung, damit du automatisch notlanden könntest?
Oder eine Drehzahlüberwachung der Motoren? Polyfuse/Strombegrenzung 
falls einer blockieren sollte...
Wird dieser PIC noch mit 12V an MCLR gebrannt? Wenn ja (so wie bei den 
alten "High-Voltage"), fehlt dir noch eine Diode.

Da gibts noch viele spielereien, die man drauf machen könnte...

von Max H. (hartl192)


Lesenswert?

Patrick B. schrieb:
> Naja, wie wärs mit Stützkondensatoren pro IC und noch ein paar für die
> Motoren?

Ich habe nur einen IC auf der Platine, den PIC. Die IMU (GY-80) ist eine 
kleine Platine auf der die Kondensatoren bereits vorhanden sind. Der PIC 
und der Spannungsregler haben die Stützkondensatoren. Die 
Brushless-Regler bekommen von der Platine nur das Signal und werden zur 
Stromversorgung direkt mit dem Akku verbunden

Patrick B. schrieb:
> Wo ist
> hier die Überwachung, damit du automatisch notlanden könntest?

Das habe ich vergessen. Ist es ok wenn ich mit einem Spannungsteiler die 
Ladeschlussspannung des Akkus  auf ca. 4 V teile und dann mit dem ADC 
messe.

Patrick B. schrieb:
> Oder eine Drehzahlüberwachung der Motoren? Polyfuse/Strombegrenzung
> falls einer blockieren sollte...

Jeder Motor hat einen Brushless-Regler, an den der µC nur das Signal 
sendet. Der Regler schaltet ab, wenn der Motor blockiert.

Patrick B. schrieb:
> Wird dieser PIC noch mit 12V an MCLR gebrannt? Wenn ja (so wie bei den
> alten "High-Voltage"), fehlt dir noch eine Diode.

Diese Schaltung zum Programmieren habe ich schon oft verwendet und ich 
hatte noch nie Probleme.

von Jo D. (Firma: Jo) (discovery)


Lesenswert?

hi,

pack noch einen kleinen (Piezo)Lautsprecher in Printmontage mit drauf, 
der einen Pfeifton erzeugen kann, wenn der Akku langsam leer wird.

von Patrick B. (p51d)


Lesenswert?

M. H. schrieb:
> Ist es ok wenn ich mit einem Spannungsteiler die
> Ladeschlussspannung des Akkus  auf ca. 4 V teile und dann mit dem ADC
> messe.

Kommt ganz auf den Akku an (Tiefentladung bei LIPO hättest du mit dieser 
Überwachung auch gleich verhindert). Aber in den meisten Fällen ist das 
IO.

Wenn der ganze Rest schon vorhanden ist, ist es gut.
Ev. noch ein Sensor für die Höhe (Luftdruck oder so) und einer für den 
Bodenabstand im Landeanflug.

von Max H. (hartl192)


Lesenswert?

Ich verwende diese Sensorplatine: 
http://dx.com/p/gy-80-bmp085-9-axis-magnetic-acceleration-gyroscope-module-for-arduino-145912

Wenn ich mit dem Luftdrucksensor nur die Höhe konstant halten will, sie 
aber nicht absolut messen muss, kann ich dann auf das Rechnen mit den 
Kalibrier Koeffizienten verzichten?
Die absolute Höhe wird mit dem GPS gemessen.

Patrick B. schrieb:
> Ev. noch ein Sensor für die Höhe (Luftdruck oder so) und einer für den
> Bodenabstand im Landeanflug.

Welchen Sensor würdest du da verwenden? Ultraschall?

von Max H. (hartl192)


Lesenswert?

Jetzt habe ich meinen Schaltplan noch um einen Ultraschallsensor (HC - 
SR04 an J8), einen Temperatursensor (LM60CIM3) und der dem 
Spannungsteiler zum Messen der Akku-Spannung ergänzt ergänzt.

von Max H. (hartl192)


Angehängte Dateien:

Lesenswert?

Ich habe gestern vergessen den neuen Schaltplan anzuhängen

von MaWin (Gast)


Lesenswert?

> Was sagt ihr zum Schaltplan?

Ein grösserer Elko an den 12V kann kurze Spannungseinbrüche verhindern, 
so dass dann nicht gleich der uC abstürzt und in Folge gleich der 
Kopter.

von Max H. (hartl192)


Lesenswert?

Ietzt habe ich einen 100µF Elko parallel zu C4 eingefügt.

von wieOskar (Gast)


Lesenswert?

Für den Kalmanfilter zum Einstieg nach dem "bayesian ninja" suchen auf 
youtube. Wozu soll der Kalmanfilter den genutzt werden?

von Max H. (hartl192)


Lesenswert?

wieOskar schrieb:
> Für den Kalmanfilter zum Einstieg nach dem "bayesian ninja" suchen auf
> youtube. Wozu soll der Kalmanfilter den genutzt werden?

Um die daten des Gyros und des Beschleunigungssensosors zu kombinieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.