Hallo mikrocontroller Anhänger:) Ein Freund von mir und ich haben uns vorgenommen einen Quadrocopter „selbst“ zu bauen und zu programmieren. Die Teile haben wir uns besorgt (Motoren, ESC’s, Seonsoren und Rahmen) und auch alles zusammengebaut. Nun geht es darum die Werte der Sensoren geeignet zu verwenden und damit den Copter zumindest mal stabil in der Luft halten zu können. Die Theorie ist dabei nicht ganz so undurchsichtig und schwer begreiflich, aber die genaue Umsetzung dann doch eher :D. Als 6-DOF Sensor benutzen wir den MPU6050 über I2C. Zur Steuerung benutzen wir einen Arduino Uno. Die Motoren werden über ein PWM-Signal zwischen 1190 und 1700 angesteuert, das macht 510 Schritte. Unsere Fragen sind: - Welchen Bereich der 510 Schritte kann der Regler überhaupt beeinflussen? Ein Beispiel was wir damit meinen: Wenn der Copter z.B. bei einem Wert von 1300 locker über dem Boden schwebt, was ist das maximale was der Regler auf die Motoren draufgeben bzw. abziehen kann je nachdem wie er ausgelenkt wird. Soll der Regler die Möglichkeit haben die Motoren auf bis zu 1700 hochdrehen lassen zu können bzw. die andere Seite bis auf 1190 herunter zu drosseln um eine Stabile Lage erreichen zu können, oder muss man dem Regler doch nur einen gewissen Bereich geben in dem er Regeln darf, z.B. +- 100. - Wir haben einen PID-Regler eingebaut und wissen nicht welche Werte wir jeweils für Proportional, Integral und Differential-Anteil angeben sollen. So wie wir mitbekommen haben müssten wir mit dem P-Anteil anfangen und uns an eine gute Regelung vorantasten. Aber gibt es bestimmte Standardwerte an denen man nur noch ein Feintuning vornehmen müsste? Unsere Bisherige Regelung war extrem träge und somit miserabel. Aber es nützte nichts an den Werten herumzuschrauben weil wir auch noch das Problem aus Frage eins haben und somit nicht wissen was davon genau das Problem ist. Am wichtigsten wäre die Frage eins beantwortet zu haben. Es gibt natürlich auch viele Seiten die man sich ergooglen kann, diese Beschreiben aber nie unser Problem aus Frage eins. Oder haben wir da einen Denkfehler? Es ist viel Text und ich hoffe, dass wir es verständlich machen konnten was die Probleme sind. Wäre super wenn jemand eine Antwort für uns hätte. Grüüüüße
probiert's doch einfach. dafuer den kopter an 4 schnueren aufhaengen.
Das haben wir schon versucht, aber der Copter schwingt hin und her oder Schlägt aus. Dadurch, dass wir zwei Probleme haben wissen wir nicht so ganz welches davon zum unerwünschten Verhalten führt. Wir haben auch versucht den Regler einzustellen, was nicht funktioniert hat. Die Frage ist dann, liegt es am Regler oder an dem Wertebereich der Motoren den der Regler beeinflussen kann. Wie gesagt, es sind zwei Probleme die wir hin und her schieben ohne zu wissen welches davon zum Fehlverhalten führt.
Guten Morgen Zwei Freunde von mir bauen derzeit auch einen Kopter und veröffentlichen das Projekt hier auf Mikrocontroller.net Beitrag "[Projektvorstellung] - Selbstgebauter Oktokopter (Open Source)" Nimm sonst einmal Kontakt mit ihnen auf. Auch wenn der Tread dort ein bisschen inaktiv aussieht, war gerade noch am Sonntag mit ihnen unterwegs. Deren Kopter ist gerade bei den ersten Flugversuchen, in der Luft liegt er schonmal ziemlich Stabil. Wie sie es umgesetzt haben weiss ich nicht, da müsstest du direkt bei ihnen fragen. Ich schreib ihm nachher mal ne SMS, vielleicht schaut er ja hier mal kurz vorbei. Gruss
Ich gehe davon aus das die ESC standard mit eine servosignal angesteurt werden. Soll ein puls sein von 1 bis 2ms, wiederholerate ca 20 ms. Das soll dan ihre PWM Wert 1190 bis 1700 entsprechen. Diese Werte scheinen mir nicht plausibel : min PWM und max PWM soll eine Verhaltnis haben von 1/2. So einen ESC hat meistens auch die moglichkeit um die min/max Werte von servosignal zu speichern, da bei jeden Sender / Empfanger eine schone Regelstrecke eingestellt werden kan. Beim einschalten muss dan eine bestimmte Zeit die min und max PWM Werte angesteurt werden. Diesen einschaltsequenz mussen sie auch einhalten. Wen das alles passt, soll die PWM Wert eine Schub von 0 bis 100 % ergeben.
Leszek K. schrieb: > Es ist viel Text und ich hoffe, dass wir es verständlich machen konnten > was die Probleme sind. Nein, nicht wirklich. Aber das passt zu Erfahrungen, die folgendes besagen: Wenn jemand gezwungen und in der Lage ist, das Problem verstaendlich zu formulieren, dann findet er oft auch selbst die Loesung. wendelsberg
San Lue schrieb: > Ich schreib ihm nachher mal ne SMS, vielleicht schaut er ja hier mal > kurz vorbei. Erhalten. Bin da :) Guten Morgen Vorrab: Viel Erfolg bei eurem Vorhaben. Ist ein wirklich cooles Projekt und macht riesen Spass sowas zu entwickeln. Leszek K. schrieb: > Soll der Regler die Möglichkeit haben > die Motoren auf bis zu 1700 hochdrehen lassen zu können bzw. die andere > Seite bis auf 1190 herunter zu drosseln um eine Stabile Lage erreichen > zu können, oder muss man dem Regler doch nur einen gewissen Bereich > geben in dem er Regeln darf, z.B. +- 100. Ich weiss nicht was für BL-Regler ihr derzeit verwendet. Unsere werden per I2C angesteuert und haben eine Auflösung von 8 Bit (255 Stufen). Bei der ersten Stufe dreht sich der Motor rund 2-3 mal pro Sekunde. Will man den Kopter nicht gerade im freien Fall auf die Erde zurasen lassen, sind solche Werte natürlich unbrauchbar. Die mindestdrehzahl wäre also so zu wählen, dass der Kopter zwar sinkt aber immernoch Stabil in der Luft bleibt, bzw. nicht zu sehr beschleunigt. Auch die maximale Drehzahl kann ruhig eingeschränkt werden. Wenn ihr das Gewicht eures Kopters kennt, rechnet da mal rund 25-30 % dazu. Also, wenn er 1kg wiegt, rechnet ihr mal mit rund 1,3kg Schubkraft die ihr benötigt, um sicher fliegen zu können. Nun ist es abhängig von euren Motoren. Ich weiss nicht, wieviel Schub die haben, der Schub sollte allerdings wie bereits erwähnt etwas eingeschränkt werden, so dass sie bei voller Leistung rund 130 % des eigengewichtes tragen. Theoretisch kann man hier auch voll aufdrehen, bringt aber nichts wenn der Kopter danach einfach in die Höhe rast. Der Stromverbrauch wird bei Maximalschub auch nicht gerade kleiner. ;) Blos den Kopf nicht hängen lassen und ein bisschen ausprobieren. Anders haben wir es auch nicht auf die Reihe gekriegt.
Danke schon mal für die Antworten :) Wir verwenden als ESC's die HK-TR_P30A und dazu die HK-NTM2830S-800 Motoren von Hobbyking. Aha, Luftschrauben 1045 und einen 3S-LiPo. Welche Auflösung die haben, ist uns aber nicht bekannt!? Durch ausprobieren kamen wir auf den vorher erwähnten Bereich von 1190 bis 1700. Das Verfahren ist eine PPM und die Werte sind in µs. Wie viel Schub die Motoren erzeugen müssen wir noch mal nachmessen. Mal angenommen der Regler liefert ein Signal im Wertebereich zwischen -1 und 1 als Stellgröße. Die Motoren werden wie folgt angesteuert (Arduino):
1 | servoVL.write(thrust+regler); |
2 | servoHL.write(thrust+regler); |
3 | servoVR.write(thrust-regler); |
4 | servoHR.write(thrust-regler); |
Thrust soll die Stellung des Steuerknüppels sein (in unserem Fall der Analogstick eines PS2-Controllers). Wenn jetzt der Motor einen sinnvollen Wertebereich von beispielsweise 1300 und 1600 (µs PPM) hat, wird der Regler mit seinen Werten zwischen -1 und 1 nicht viel ausrichten können. Die Frage ist, wie stark lasse ich ihn durch einen Faktor da mitmischen??? soll ich ihm ermöglichen den gesamten Bereich zwischen 1300 und 1600 voll zum regeln ausnutzen lassen zu können oder nur einen geringeren?
Leszek K. schrieb: > soll ich ihm ermöglichen den gesamten Bereich > zwischen 1300 und 1600 voll zum regeln ausnutzen lassen zu können oder > nur einen geringeren? Wenn du den PID Regler einschränkst und nicht den vollen Wertebereich erlaubst, kann es passieren, das er an den Enden 'klebt' und unverhältnismässig lange braucht, um in den Regelbereich zurückzukommen. Am besten beschränkst du also nicht. Dein Problem scheint im Moment die Normierung (bzw. Skalierung) zu sein, so das alles in den Wertebereichen zusammenpasst und gute Auflösung hat. Am besten also alles auf 8 oder 16 bit skalieren. Dein Ziel könnte es also erstmal sein, die drei Achsen vom Beschleunigungsmesser zu erfassen, zu skalieren und nacheinander die drei Achsen auszuregeln (Schritt für Schritt). Roll und Pitch sind die wichtigsten beiden. Die Motore sollen also dafür sorgen, das Roll und Pitch Beschleunigung null sind und das Dings still in der Luft steht, von der absoluten Höhe mal abgesehen. Als 'Störgrösse' kommt dann später der Joystick. Binde den Kopter zum Testen doch oben und unten an Strippen fest, dann saust er nicht so wild rum. Leszek K. schrieb: > Aber gibt es > bestimmte Standardwerte an denen man nur noch ein Feintuning vornehmen > müsste Leider nicht wirklich. Das ist so abhängig von vielen Faktoren, das Versuch und Irrtum vermutlich am besten funktionieren. Wenn ihr z.B. den kleinen PID Regler aus AVR221 nehmt, kann man hier die P,I und D Faktoren herausführen (Konsole z.B.) und die im Betrieb anpassen, das funktioniert bei meinen PMSM Experimenten immer recht gut. Übrigens ist das AVR221 PDF eine recht gute Einführung in PID und hat nette Grafik zum Erklären drin.
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.