PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PID Regler Arduino



xxxmicroxxx
29.03.2014, 12:43
Hey Leute und einen fröhlichen Arduino Day (http://day.arduino.cc/).
Aber jetzt zu meinem Problem: Ich will einen Quadrocopter bauen welcher durch auswertung von Sensoren selbstständig in der Luft stehen bleibt.
Mit einem P-Regler stürtzt das Ding wahrscheinlich ab, also ein PID Regler. Ich habe aber keinen Plan wie ich den Programmieren soll. Also habe ich mal geschaut und den Beispielcode gefunden: https://github.com/br3ttb/Arduino-PID-Library/blob/master/PID_v1/Examples/PID_Basic/PID_Basic.ino
Aber wo soll ich da die ganzen Eingänge der Sensoren(Werte laufen erst noch durch einen Klaman-Filter) und die Ausgänge definieren. Und brauche ich dann für jeden Arm einen PID-Regler?

Che Guevara
29.03.2014, 14:58
Hi,

was willst du den regeln? Willst du einen HeadingHold oder AutoLevel-Regler? HeadingHold lässt sich auf jeden Fall auch mit "nur" einem P-Regler sehr stabil realisieren, nur wird der Winkel mit der Zeit abdriften, weil kein I-Term vorhanden ist.
Hast du den denn Kalman schon programmiert? IMHO brauchts den definitiv nicht, ein gut eingesteller Komplementärfilter ist mindestens genausogut bei sehr viel weniger Rechenzeit. Da du nicht angegeben hast, welchen Arduino (bzw. welchen Prozesser) du verwenden willst, kann man das aber schlecht einschätzen, ob genug Zeit für den Kalman ist. In der Regel sollte der PID-Regler (sprich: EVA) mit mind. 500Hz laufen, um einen stabilen Kopter zu gewährleisten.
Welche Sensoren willst du den verwenden? Analog, digital?
Du brauchst für jede Achse (sprich: Nick , Roll , Yaw) einen Regler, der die entsprechenden Werte berechnet. Diese müssen dann korrekt auf die jeweiligen Motoren übergeben werden.
Welche Motorsteller willst du verwenden? Standart mit Pwm , I2C, USART, CAN ?
Der Vorteil bei PWM ist, wenn du genügend Timer / Hardware Pwm Ausgänge hast, kann die Ausgabe der Daten relativ schnell erfolgen, wohingegen du z.b. bei I2C schon einige µs nur für die Ausgabe verbrauchst. Ich weiß, das hört sich nicht viel an, aber hier ein paar µs und da ein paar, und schon läuft deine Software nur noch mit 300Hz, was dann schon etwas wackelig sein kann.

Gruß
Chris

Klebwax
30.03.2014, 08:56
Mit einem P-Regler stürtzt das Ding wahrscheinlich ab, also ein PID Regler.

Kannst du das mal etwas erläutern?


Aber jetzt zu meinem Problem: Ich will einen Quadrocopter bauen welcher durch auswertung von Sensoren selbstständig in der Luft stehen bleibt.

Wäre es nicht vernünftiger, ihn erstmal zu bauen, ihn zum Fliegen zu bringen, und mir dann Gedanken um selbstständiges navigieren zu machen.

MfG Klebwax

Valen
30.03.2014, 17:41
Wäre es nicht vernünftiger....

erst anfangen ein PID-regler zu bauen das nur ein Motor zu einer bestimmten Drehgeschwindigkeit regelt. Und nicht gleich mit etwas anfangen das unkontrolliert im Gegend oder ein Kopf fliegen kann. Fang erst mal an mit ein 1-Achsen Problem. (Wie den Beispiel Code) Danach 2, .... und NUR DANNACH die weitere Dimensionen.