Hallo Leute, Ich “bastle“ gerade einen Quattrokopter und habe eine Frage (neben tausend anderen :-). Die zu regelende Größe ist zum Beispiel mein X-Achsenwinkel, dessen Wertebereich in der Praxis zwischen -50 und +50 Grad liegt. Der Regler soll die Motordrehzahlen regeln um den Winkel möglichst um 0 Grad zu halten (falls keine andere Sollgröße vorliegt). Die Stellgröße die der Regler so im allgemeinen errechnet liegt im Bereich -200 bis +200 (ja nach Parametrisierung). Aber die zu stellenden Drehzahlen liegen im Bereich 0 bis 8000 U/min. Wie und wo soll ich das am besten anpassen?
>liegt im Bereich -200 bis +200
Warum? Hast du den Regler schon fertig, ohne dir Gedanken über den
Regelkreis gemacht zu haben?
> Bereich -200 bis +200 (ja nach Parametrisierung). > Aber die zu stellenden Drehzahlen liegen im Bereich 0 bis 8000 U/min. > > Wie und wo soll ich das am besten anpassen? Mit einer lineare Gleichung umrechnen geht nicht? (Ausserdem bezweifle ich, dass du konkret die Drehzahl stellst. Du gibst einfach Gas und was dann auch immer sich für eine Drehzahl einstellt, die stellt sich eben ein). Lineare Gleichung: y = k*x + d x ist dein Wert der aus dem PID Regler rauskommt, y ist die 'Gaskorrektur' die du haben willst. k und d musst du so finden, dass dann eben (nehme ich mal an) die Gaskorrektur rauskommt, die du am Gaswert jedes Motors anbringen musst. Jeder Motor hat seine eigene Gleichung! (ok, der rechte und der linke können wahrscheinlich zusammengefasst werden, wenn der eine etwas mehr Gas gibt, gibt der andere etwas weniger. Du willst ja haben, dass der Regler das Gefährt wieder in die waagrechte zurückbringt. Ich weiß aber nicht, ob dir das Ganze dann nicht anfängt abzusacken oder wegzusteigen. Schlimmstenfalls müsste man für positive und negative Werte dann eben 2 verschiedene Gleichungen nehmen)
Danke
@Lippy
Es ist ein Softwarregler. So "Regler schon fertig" hat eigentlich keine
Bedeutung. Welche Gedanken macht man sich üblicherweise vorher?
@Karl-Heinz
>Mit einer lineare Gleichung umrechnen geht nicht?
Geht sicher aber ist es auch der richtige Weg?
Es ist ja eine Art Skalierung hat das Einfluss auf die Reglung?
Carsten M. schrieb: > Es ist ja eine Art Skalierung hat das Einfluss auf die Reglung? Nicht auf das Regelverhalten, aber der Regler muss natürlich 'wissen', welche Steuerwerte als Maximum erlaubt sind. Schau dir mal die Application Note AVR221 an, da wird ein PID Regler beschrieben, der recht einfach ist und vermutlich alles hat, was du brauchst. Die optimalen Werte für P,I und D musst du natürlich über das Einbringen von Störgrössen ermitteln.
>Welche Gedanken macht man sich üblicherweise vorher? Was man programmieren will. Oder hast du einfach losprogrammiert? In deinem Fall würde ich erstmal den Regelkreis zeichnen, übertragungsfunktionen ermitteln und den Regler bestimmen. Prüfen, welche Werte wo zu erwarten sind... usw.. Dann weiss man, welchen Algorithmus man braucht, wie gross die Variablen sein müssen/werden, etc... > Es ist ja eine Art Skalierung hat das Einfluss auf die Reglung? Natürlich. Es ist ja, wie du sagtest, eine SKalierung, auch P-Verhalten genannt...
>Ausserdem bezweifle ich, dass du konkret die Drehzahl stellst. Du gibst >einfach Gas und was dann auch immer sich für eine Drehzahl einstellt, >die stellt sich eben ein Da ich den Motorregler selber programmieren kann, ist mein momentaner Ansatz schon die angeforderte Drehzahl zu übertragen. Im Motorregler werkelt dann noch ein PID Algorithmus um die Drehzahl einzustellen und zu halten. Ich glaube dass macht die ganze Reglestrecke komplizierter als nötig. Also wieder zurückgerudert und ich werde nun nur "Gas oder Gasweg" übergeben. Praktisch also den MDC (master duty cycle) im Wertebereich von 1200 (low RPM) bis 18000 (bei mir 80% DC). Mal sehen, ob ich die Strecke dann stabil bekomme. Frage: was erwarten käufliche Motorregler als Eingangsgröße?
Carsten M. schrieb: >>Ausserdem bezweifle ich, dass du konkret die Drehzahl stellst. Du gibst >>einfach Gas und was dann auch immer sich für eine Drehzahl einstellt, >>die stellt sich eben ein > > Da ich den Motorregler selber programmieren kann, ist mein momentaner > Ansatz schon die angeforderte Drehzahl zu übertragen. Im Motorregler > werkelt dann noch ein PID Algorithmus um die Drehzahl einzustellen und > zu halten. Also doch ein Regler und kein Steller. > Ich glaube dass macht die ganze Reglestrecke komplizierter > als nötig. Wieso? Ist doch gut so.
Carsten M. schrieb: >>Mit einer lineare Gleichung umrechnen geht nicht? > Geht sicher aber ist es auch der richtige Weg? > Es ist ja eine Art Skalierung hat das Einfluss auf die Reglung? Sicher ist das sowas wie eine Skalierung. Aber du musst dir im klaren sein, dass du im Grunde immer noch denselben Wert hast. Nur eben in einem anderen Zahlensystem. Ob du eine Regelung auf Meter oder auf Millimeter auslegst, ist im Prinzip auch eine Skalierung. Und trotzdem ist es derselbe Wert, nur eben mal 1000. Und bei dir ist es dann eben die Umrechnung deiner Stellgröße in eine Drehzahl. > Mal sehen, ob ich die Strecke dann stabil bekomme. Einen PID Regler kriegt man mit seinen P-Konstanten stabil.
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.