Hallo, ich habe heute vergeblich versucht, den PID-Regler in der Atmel App Note 221 zum Laufen zu bringen. Ich habe den Code, der ja eigentlich für den IAR-Compiler gedacht ist, angepasst für's Atmel Studio. Der Code läuft jetzt. Ich glaube aber, ich habe ein grundsätzliches regelungstechnisches Problem: Es soll eine Stromregelung werden: An einem Pin des Controllers sitzt ein RC-Glied, das wiederum auf die Basis eines BC574 geht. Am Pin wird als Stellgröße PWM ausgegeben, das durch das RC-Glied "verschliffen" wird. Zwischen Kollektor und Vcc sitzt eine LED. In Reihe zum Emitter sitzt ein 100 Ohm-Widerstand. Die Spannung, die daran abfällt, wird vom ADC gemessen und ist meine Rückführgröße. Die Regelung muss nicht besonders schnell sein, sie soll vor allem genau sein. Ich muss dazu sagen, ich habe zum ersten mal mit praktischer Regelungtechnik zu tun. Regeleungstechnik auf der Technikerschule kann man in der Pfeife rauchen. Wir hatten nur gerechnet und gerechnet und Bode-Diagramme und Ortskurven gemalt. Ziemlich sinnlos in meinen Augen. Da wäre ein Prüfstand mit z.B. einem Motor und einem PID-Regler mit einem P-, K- und D-Poti viel sinnvoller. Wenn man da an den Potis drehen würde und wirklich den Einfluss der Faktoren live erlebt. Da wir keinerlei Praxis hatten, habe ich für die Parameter kein "Gefühl". Aber ich schweife ab. Zurück zum Thema: Ich wollte das Verfahren nach Ziegler/Nichols anwenden: Kp-Faktor solange aufdrehen, bis sich eine ungedämpfte Dauerschwingung einstellt. Dann kann man Kp ausrechnen und mit der Zeitkonstante der Schwingung Tn und Tv berechnen. Soweit, so gut. Naiv wie ich war, dachte ich, das kann ja so schlimm nicht sein. Ich wurde allerdings eines besseren belehrt. Da ich keinen Timer mehr übrig habe, erfolgt der Aufruf der PID-Funktion nur alle 16ms. Wenn ich dann Kp laufend erhöhe, ist meine Regelgröße entweder konstant null oder ich habe sozusagen einen Zweipunktregler, der meine Stellgröße bei jedem Aufruf auf 0% und einem sehr hohen Wert stellt. Für mich heißt das, dass die Zeitspanne 16ms für die Regelstrecke viel zu lang ist. Laut Simulation der Sprungantwort in LTSpice sind 63% nach ca. 100µs erreicht. Gibt es da eine Faustformel, wie oft mindestens die Reglerfunktion in Abhängigkeit der Zeitkonstante der Regelstrecke aufgerufen werden sollte? Ich könnte die Strecke langsamer machen, indem ich den Kondensator des RC-Glieds vergrößere. Aber gefühlsmäßig mache ich doch dann alles noch schlimmer, oder? Wie gesagt auf Geschwindigkeit kommt es mir nicht an. Wenn keine Störgröße vorhanden ist, soll sich die Stellgröße einfach auf einen konstanten Wert einpegeln. Danke Third Eye
@ Third Eye (third-eye) >Es soll eine Stromregelung werden: Hmm, die sind meistens rech flink. >An einem Pin des Controllers sitzt ein RC-Glied, das wiederum auf die >Basis eines BC574 geht. Erster Fehler. Das wird nie und nimmer linear. Besser so. http://www.mikrocontroller.net/articles/Pulsweitenmodulation#DA-Wandlung_mit_PWM Ein OPV ist das Mittel der Wahl. > Am Pin wird als Stellgröße PWM ausgegeben, das >durch das RC-Glied "verschliffen" wird. Gefiltert. >Zwischen Kollektor und Vcc sitzt eine LED. >In Reihe zum Emitter sitzt ein 100 Ohm-Widerstand. Die Spannung, die >daran abfällt, wird vom ADC gemessen und ist meine Rückführgröße. Nicht sonderlich sinnvoll. Eine LED kann man direkt mit PWM ansteuern, die braucht nicht unbedingt Gleichstrom. Ausserdem kann man davon ausgehen, dass der Transistor als Stromquelle funktioniert, da muss man nicht messen. >Die Regelung muss nicht besonders schnell sein, sie soll vor allem genau >sein. Was willst du da groß regeln? Wenn man diese Schaltung RICHTIG mit einem OPV aufbaut, ist sie ziemlich genau, auch ohnne Regelung. >Bode-Diagramme und Ortskurven gemalt. Ziemlich sinnlos in meinen Augen. Naja, es fehlte der Bezug zur Praxis. >Da wäre ein Prüfstand mit z.B. einem Motor und einem PID-Regler mit >einem P-, K- und D-Poti viel sinnvoller. Wenn man da an den Potis drehen >würde und wirklich den Einfluss der Faktoren live erlebt. Ja. Kann man aber auch am Simulator gur sehen. >Für mich heißt das, dass die Zeitspanne 16ms für die Regelstrecke viel >zu lang ist. >Gibt es da eine Faustformel, wie oft mindestens die Reglerfunktion in >Abhängigkeit der Zeitkonstante der Regelstrecke aufgerufen werden >sollte? Genau. Ein digitaler Regler muss deutlich schneller abtasten als die kleinste Zeitkonstante in der Regleschleife. Faktor 2-10 oder mehr.
> Da ich keinen Timer mehr übrig habe
Was heißt, du hast keinen Timer mehr übrig?
Platz ist in der kleinsten Hütte und es gibt kein Naturgesetz, dass ein
Timer nur 1 Sache machen darf.
:
Wiederhergestellt durch User
Es geht um einen ATTiny85, beide Timer werden für je eine PWM-Erzeugung verwendet. Evtl. könnte ich einen der Timer sowohl zur PWM-Ausgabe als auch für Timer Interrupt verwenden. Das wäre vermutlich das Naheliegendste. Ich wollte nur, dass mich jemand in meiner Vermutung bestätigt, dass ich zu selten abtaste. Eine analoge Lösung mit einem OP wäre besser und einfacher gewesen, aber die Platine ist leider schon fertig so. Ich dachte halt, das wäre eine gute Gelegenheit für mich, etwas mit Regelungstechnik zu beschäftigen. Und das habe ich. Habe zumindest schon mal den Zusammenhang zwischen Zeitkonstante der Regelstrecke und Abtastung erfahren. ;-)
:
Bearbeitet durch User
Hi Third-Eye, ich stand vor genau dem selben Problem wie du. Gelöst habe ich es durch ein kleines Kp und ein noch kleineres kI. Probier's aus.
Hm, das hatte ich ja auch vermutet, aber bei mir ist das Problem, dass ich Kp soweit verringern müsste, dass als Stellgröße nichts mehr übrig bleibt (ich arbeite mit uint_16-Variablen). Ich versuche morgen mal, die Abtastung zu erhöhen. Ich werde dann berichten.
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.