Hallo Chris
Die Haube habe ich aus der Bastelecke, da gibt es solche Plexiglaskugeln die aus 2 Hälften bestehen.
Der Rest ist selbst gemacht. Der Grundrahmen besteht aus Karbon Rohren und Aluminium Teilen die mir ein Freund gedreht hat. Die Rohre sind mit 2K-Epoxid eingegklebt.
Übrigens, auf dem Quadrocopter habe ich noch ein Raspberry Pi A+ mit Kamera verbaut. Mit dem PI möchte ich einen Access-Point aufbauen und darauf soll ein Webserver für die Bedienung der Kamera laufen... Das ist meine nächste Baustelle
Alle 5ms wird der Sensor ausgelesen, die Winkel berechnet und die PID-Regler aufgerufen.
Der Komplementär Filter läuft mit 0.98*Gyro und 0.02*ACC.
Den Regler habe ich als Kaskade aufgebaut. Der innere Regelkreis (PID) Regelt nur auf die Gyro-werte und der äussere (PI) Regelt dann den Winkel. Im Video auf der Wippe ist es gut ersichtlich (In der ersten Hälfte läuft nur der Gyro-Regler und in der zweiten wird der äussere Regler hinzugeschaltet).
Auf dem Video ist es relativ schwierig zu erkennen, da man nicht sieht wann ich den Knüpel los lasse...
Am besten sieht man es im ersten Video ab 0:12 2mal nacheinander. Da gebe ich ihm nur einen kleinen "Schupf", in dem Moment wo er kurz zurückregelt lasse ich den Knüppel los und er fliegt schräg weiter.
Hier mal der relevante Teil des Codes vielleicht verstehts du etwasich habe leider nur wenig dokumentiert...
Code:'Sensordaten einlesen Gosub MPU6050_read 'Gyrowinkel berechnen 'Offset abziehen Gyr_X = Gyr_X - Gyr_X_Offset Gyr_Y = Gyr_Y - Gyr_Y_Offset Gyr_Z = Gyr_Z - Gyr_Z_Offset 'Winkel X-Achse Ist_Gyr_X = Gyr_X / 32.8 Temp_s = Ist_Gyr_X * 0.005 Winkl_Gyr_X = Temp_s 'Winkel Y-Achse Ist_Gyr_Y = Gyr_Y / 32.8 Temp_s = Ist_Gyr_Y * 0.005 Winkl_Gyr_Y = Temp_s 'Winkel Z-Achse Ist_Gyr_Z = Gyr_Z / 32.8 Temp_s = Ist_Gyr_Z * 0.005 Winkl_Gyr_Z = Temp_s 'Beschleunigungen auf +/- 1g begrenzen If ACC_X > 17000 Then ACC_X = 17000 If ACC_X < -17000 Then ACC_X = -17000 If ACC_Y > 17000 Then ACC_Y = 17000 If ACC_Y < -17000 Then ACC_Y = -17000 If ACC_Z > 17000 Then ACC_Z = 17000 If ACC_Z < -17000 Then ACC_Z = -17000 'ACC Winkel berechnen X-Achse Temp2_s = ACC_Y Temp_s = ACC_X * ACC_X Temp3_s = ACC_Z * ACC_Z Temp_s = Temp_s + Temp3_s Temp3_s = sqr(Temp_s) Temp_s = atn2(Temp2_s , Temp3_s) Winkl_ACC_X = rad2deg(Temp_s) 'ACC Winkel berechnen Y-Achse Temp2_s = ACC_X Temp_s = ACC_Y * ACC_Y Temp3_s = ACC_Z * ACC_Z Temp_s = Temp_s + Temp3_s Temp3_s = sqr(Temp_s) Temp_s = atn2(Temp2_s , Temp3_s) Temp_s = Temp_s * -1 Winkl_ACC_Y = rad2deg(Temp_s) 'Komplementärfilter 0,98*Gyro + 0.02*ACC 'X-Achse Temp_s = Winkel_X + Winkl_Gyr_X Temp2_s = Temp_s * Kompl_Faktor Temp_s = 1 - Kompl_Faktor Temp3_s = Winkl_ACC_X * Temp_s Winkel_X = Temp2_s + Temp3_s 'Y-Achse Temp_s = Winkel_Y + Winkl_Gyr_Y Temp2_s = Temp_s * Kompl_Faktor Temp_s = 1 - Kompl_Faktor Temp3_s = Winkl_ACC_Y * Temp_s Winkel_Y = Temp2_s + Temp3_s 'Trimm Wert verrechnen Winkel_X_T = Winkel_X + Winkel_X_Trimm Winkel_Y_T = Winkel_Y + Winkel_Y_Trimm







Zitieren


Lesezeichen