Hallo ! Möchte einen Servomotor über Takt u. Richtungssignal (wie bei den üblichen Schrittmotorsteuerungen) mittels eines AVR steuern . Positionsrückmeldung wird über Drehencoder gemacht. Signalauswertung , also Takt - u. Richtungssignal sowie die Auswertung des Drehencoders hab ich schon gelöst. Auch die Berechnung des Sollwertes und die Ausgabe des Signals als PWM an die Mosfets der H-Bridge sind soweit OK. Der Programmteil der mir noch fehlt , ist ein PID-Regler zum definierten Einstellen des Regelkreises. Hat einer von Euch schon mal sowas programmiert , bzw. kann mir da jemand weiterhelfen. Ach ja , programmiert hab ich das ganze in BASCOM. Danke im voraus. Gruss Gerhard
Hallo Hab mir die Formeln schon vorher mal angesehen. P-Anteil ist klar. Hab aber eine Frage zum I-Anteil. I-Anteil: (Istwert-Sollwert)*Zeitdifferenz Wenn ich nun die Regelung starte (zeiz =0), dann erhöhe ich den Wert der Zeitdifferenz bei jedem Schleifendurchlauf um eins. (Regelung muss äusserst rasch geschehen) Diesen Wert muss ich aber doch wieder auf null zurückstellen (IF ist = soll THEN Delta_T =0 END IF) wenn Istwet = Sollwert. Ist das soweit richtig ???. Bitte um Hilfe. Gruss Gerhard
Hallo, für den Regler hast Du dir ja bestimmt eine Zeitbasis festgelegt (z.B. 1ms). Zu Beginn des Regleraufrufes berechnest Du dann die Regelabweichung. Diese multiplizierst Du dann mit Kp für den P-Anteil und Ki für den I-Anteil. Beim Integralteil ist es dann noch notwendig eine zusätzliche Variable für die Vergangenheit zu führen, wo dann das jeweils aktuelle Ergebnis von Ki*Regelabweichung aufaddiert und abgespeichert wird. Dann ist es noch zu empfehlen, dass man den Integralteil und die gesamte Stellgröße auf einen maximalen Wert begrenzt, damit der Regler nicht ins Unermessliche läuft und beim Überlauf der Variablen (bei 16bit also 0xFFFF) eine falsche Stellgröße produziert. Gruß, Ralf
Hallo Ralf ! Danke für deine Erklärung. Ist mir soweit fast alles klar. Nur eine Frage. Wenn ich das Ergebnis von Ki*Regelabweichung immer wieder zu der Variablen der Vergangenheit addiere wächst doch dieser Wert ständig an , und zwar bis zu meiner Begrenzung. Der Wert muss doch bei "Regelabweichung = 0" auf null sein, oder ?????. Gruss Gerhard
Hallo Gerhard, der Wert wächst nicht immer weiter, da die Regelabweichung nicht immer positiv ist (je nach dem ob der Sollwert über oder unterschritten wird). Wächst der I-Anteil trotzdem immer weiter, so reicht die mögliche Stellgröße nicht aus, um den Sollwert zu erreichen. Weiterhin könnten die Reglerparameter falsch eingestellt sein (Verstärkung zu groß, sodass eine kleine Änderung gleich eine sehr große Wirkung hat). Der Wert der Stellgröße muß bei einem I-Regler nicht immer gleich Null sein, da er, wie der Name schon sagt, integriert oder aufaddiert. D.h. die aktuelle Stellgröße hangt nicht nur von der momentanen, sondern auch von der vergangenen Regelabweichung ab. Der Regler hat so zu sagen ein Gedächtnis. Bei P-Reglern ist der Fall gegen, dass die Stellgröße gleich Null ist, wenn die Regelabweichung gleich Null íst, da dieser Regler nur die momentane Regelabweichung auswertet. Ich hoffe, ich konnte alles erklären. Gruß, Ralf
Hallo Ralf ! Danke für deine Hilfe. Werd mal versuchen das ganze in mein bestehendes Programm einzubauen. Ich denke ich fang erstmal nur mit P- u. I-Anteil (PI-Regler) an. Sollte das funzen kann ich immer noch den D-Anteil zur Optimierung dazuprogrammieren. Nochmals, vielen Dank ! Gruß Gerhard Bin schon gespannt auf das Ergebnis.
Hallo Gerhard, könntest Du, wenn Du mit der Code fertig bist, den Teil mit den PD hier posten? Noch ein paar Links zum Thema: http://rclsgi.eng.ohio-state.edu/matlab/PID/PID.html http://www.stanford.edu/class/ee281/projects/aut2001/depthcontroller/MyProject.html http://info.bib.fh-giessen.de/digdok/Diplomarbeiten/EI/Jockel.pdf http://rclsgi.eng.ohio-state.edu/matlab/examples/pend/invPID.html http://www.fh-landshut.de/~gschied/dvt/slide0299.html http://www.softelan.de/deutsch/PAGE24.HTM http://newton.ex.ac.uk/teaching/CDHW/Feedback/ Grüße Zoltan
Hi Zoltan , werd ich machen , hab aber im moment kaum Zeit dazu was zu testen. Danke für die Links. Gruss Gerhard
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.