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?
Sonst gibt es auch noch ein spezielles Forum : http://www.mikrokopter.de/en/home http://forum.mikrokopter.de/
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…
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.
Ist der Schaltplan so in Ordnung? Hat jemand einen Verbesserungsvorschlag?
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.
Scheint in Ordnung zu sein, wobei bei I2C sollten noch Pullup-Widerstäand auf SCL und SDA sein.
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.
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)
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.
Schaltplan sieht gut aus, ist aber auch noch nicht gerade viel dran :) Kannst ja nochmals einen hochladen, wenn er ein bisschen kompletter ist!
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...
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.
hi, pack noch einen kleinen (Piezo)Lautsprecher in Printmontage mit drauf, der einen Pfeifton erzeugen kann, wenn der Akku langsam leer wird.
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.
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?
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.
> 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.
Für den Kalmanfilter zum Einstieg nach dem "bayesian ninja" suchen auf youtube. Wozu soll der Kalmanfilter den genutzt werden?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.