-
Hi!
Das Problem ist endlich gelöst:mrgreen:
Ich habe einfach die Motoren mit Gummimatten gedämpft, damit die Schwingungen nicht so stark aufs Gestell wirken.
Jetzt sind die Vibrationen nicht mehr so schlimm und laufen vor allem Symmetrisch.
Jetzt noch was an der Reglung feilen, dann gibt es hoffentlich bald einen Testflug!
mfg
Olaf
-
Hi!
Also, wenn ich den Copter in einem Gestell habe, wo er sich nur um eine Achse drehen kann ist alles bestens.
Lässt sich gut steuern und bleibt stabil.
Wenn ich ihn jetzt frei fliegen lasse klappt es prinzipiell ganz gut.
Problem ist, dass er relativ stark in eine Richtung geneigt bleibt (Y Achse).
Wenn ich nun etwas zu viel Gas gebe, kippt er um.
Also, ich denke, ich muss die Parameter weiter einstellen.
Aber wie soll ich das am besten Machen, ohne viel zu viele Rotoren zu zerstören?
Ich habe die PID übrigens etwas unkonventionell gelöst, um Fließkommazahlen zu umgehen:
Code:
int16_t PID::Compute(int16_t error)
{
//errSum += (error); //Integralanteil
if ((errSum + error/prescaler) > Imax) //errsum begrenzen
errSum = Imax;
else if ((errSum + error/prescaler) < Imin)
errSum = Imin;
else
errSum += (error /prescaler);
float dErr = (error - lastErr); //Differentialanteil
lastErr = error;
return (int16_t)((error/kp) + (dErr / kd) + (errSum/ki));
}
Code:
pidX.SetParam(420,10000,10); //P, I, D
pidX.SetLimits(-5000,5000);
pidX.SetPrescaler(100);
zum Test war der I Anteil verschwindend gering, der war früher mal höher
Aber Prinzipiell spricht nicht gegen das Prinzip, oder?
mfg
Olaf
-
Hallo
Ich kenn mich nicht aus, aber wenn du hier ankommst berechnest du das zum dritten mal:
else
errSum += (error /prescaler);
Gruß mic
-
Hi!
Danke, für die Schnelle Antwort!
Allerdings habe ich es bis dahin nicht wirklich 3 mal berechnet.
Weiter oben rechne ich errsum + error/prescaler.
Dabei wird der Wert aber nicht wieder in errsum gespeichert, sondern nur zum Vergleich genutzt und ist dann wieder "weg".
Mit dem += Operator wird das Ergebnis direkt in errsum gespeichert und bleibt erhalten.
mfg
Olaf
-
Morgen!
Mittlerweile fliegt das Teil und ich bin überglücklich :D
Ich musste die Frequenz der PWM, mit der ich die Motoren ansteuer von 50Hz auf 1500Hz erhöhen.
Läuft noch nicht perfekt, aber es kann sich schonmal sehen lassen:
<a href="https://www.youtube.com/watch?v=C99vFfhYrd4&feature=youtu.be" target="_blank">https://www.youtube.com/watch?v=C99v...ature=youtu.be
Problem ist nur, wenn ich lenke und dann aufhöre zu lenken fängt er an zu wippen, im Video ab 0:22 zu sehen.
Woran kann das liegen?
Und wie behebe ich es am besten?
Eigentlich muss dafür nur die Reglung direkter reagieren oder?
mfg
Olaf