Ok das werde ich dann morgen mal probieren. Danach möchte ich gern auch den I-Anteil hinzufügen. Hier wäre es vielleicht gut wenn mir Willa was dazu sagen könnte oder auch gern jemand anderes.
Bye
Druckbare Version
Ok das werde ich dann morgen mal probieren. Danach möchte ich gern auch den I-Anteil hinzufügen. Hier wäre es vielleicht gut wenn mir Willa was dazu sagen könnte oder auch gern jemand anderes.
Bye
vielleicht magst du ja mal den stand deines projekts vorstellen?! Da ich demnächst ein redesign von meinen Kopter mache könnt ich etwas inspiration gebrauchen :-)
Du bekommst hier sicher auch den ein oder anderen Hinweis wenn du dein Projekt beschreibst...
Klar kein Thema:
Zu meinen Quadcopter:
- Rahmen besteht aus 10x10x1mm Alu-Vierkant
- Länger der einzelnen Ausleger ca. 35cm
- 2 Centerplatten (10x10x0,5cm)
-Motoren sind Robbe Roxxy 2527-34 mit 1045 Props
-Als Regler verwende ich 4x BL-CTRL 1.2
-Empfänger ist ein DSL4Top Typ: MK
-Gesamtgewicht ohne Lipo: Ca.850g
-Sensorik sind einmal: LPR530AL 2-Achs Gyro und ADXL335 3-Achs ACC
-Als Controller benutze ich einen Mega644p und geproggt wird in Bascom.
So nun mal grob mein Programmablauf:
Als Interrupt habe ich den DSL4Top dran hängen, um das Summensignal auszulesen. (Ca. alle 10ms)
Meine Hauptschleife besteht aus:
1. ADC Werte von Gyro, ACC und Bat auslesen (Wobei momentan nur die Gyro-Werte verwendet werden.
2. Summensignal auswerten
Hierzu hab ich mal ein paar Fragen.
Da ich ja das Summensignal mit einen Timer auslese, bekomme ich die Dauer der einzelnen Impulse der Kanäle. Für Kanal1(GAS) zind es z.B. Min Wert = 57988; Max Wert = 60622.
Meine Berechnung schaut folgendermaßen aus:
"ACHTUNG BASCOM CODE"
'Berechnung für Channel 1 (Gas)
If Empf(1) > 57987 Then
Empf_tmp(1) = Empf(1) - 58080
Empf_tmp(1) = Empf_tmp(1) / 10
End If
If Empf_tmp(1) > 255 Then
Empf_tmp(1) = 255
End If
Soll_motor_gas = Empf_tmp(1)
If Soll_motor_gas < 0 Then
Soll_motor_gas = 0
End If
"ENDE BASCOM CODE"
Ich bin mir nun nicht sicher, ob ich so das Signal richtig auswerte?!?
3. P-Regler habe ich so:
Stellwert_nicken = Gyro_x - Soll_x_funke * Kp (Wobei bei mir momentan der Kp den Faktor 0.3 hat)
4. Motorsoll Mixer
Hier werden die einzelnen Sollwerte aus Regler und Funke gemixt.
5. Daten an die BL-Ctrl senden
6. Wiederhole 1-6
So das ist nun mein Programm ganz grob beschrieben. Hoffe es ist verständlich.
Leider komme ich aber mit der Regelung (Gyro und ACC Auswertung) nicht hin. Vom fliegen kann ich momentan noch nicht sprechen, eher ein "Rumgehüpfe"
Hoffe ihr könnt mir da weiter helfen.
PS: Den ITG3200 habe ich auch noch bei mir rumliegen im Falle der LPR taugt nix.
Bye
Bei der Auswertung des Summensignals ist mir nicht klar warum du da so große Zahlen hast. Vor allem müsste max doch etwa doppelt so groß sein wie min?! Schließlich bewegen sich die Signale zwsichen 1 und 2 ms. Oder ist das die Zeit seit dem 1. Kanal?
Vermutlich kann dir da ein blick in Willas Tricopter Sourcen gut weiterhelfen. Der programmiert auch in BASCOM und verwendet auch einen Atmel MC.
http://shrediquette.blogspot.com/
Ich hab bei mir die Auswertung des Summensignals inzwischen durch ne serielle Schnittstelle ersetzt. Die ACT Empfänger (du hast ja auch einen) haben diese DSL Schnittstelle das ist nix anderes. Dafür kann ich dir wenn du magst auch code geben. Ist aber in C.
Den gleichen 2 achs Gyro wie du verwende ich auch. Wie gesagt hab ich probleme mit Schwingungen weil der wohl recht kleine Resonanzfrequnzen verwendet. Das hab ich mit ner ziehmlich rechenintensiven digitalen Filterung einigermaßen in Griff bekommen. Man sieht ihn trotzdem noch zappeln.. deswegen der Plan mit den ITG-3200 Gyro.
Aber vielleicht ist dein Rahmen schwingungsmäßig besser und es klappt bei dir einfach..