Hallo zusammen, Auf einen Arduino UNO würde ich gerne einen PID-Regler programmieren. Numerische Integrationsmethoden sind mir bekannt. Es geht mir mehr um eine Empfehlung zum Vorgehen. Mir schwebt eine ISR vor die durch einen Timer ausgelöst wird. Dadurch würde sich ein eingermassen "präzises" dT ergeben. Wird dies so realisiert oder bin ich völlig auf dem falschen Weg? Cheers, Sam
Hier ist ein einfaches Beispiel: https://en.wikipedia.org/wiki/PID_controller#Pseudocode den Code von "start:" bis "goto start" in der ISR ausführen. Das "wait(..)" brauchst du nicht, da du ja bestimmen kannst, wie oft die ISR aufgerufen wird. Gruß
Die Application Note AVR221 beschreibt die Implementierung eines 'ISR-losen' PID Reglers auf AVR MC. Interessante Lektüre ists auf jeden Fall: PDF: http://www.atmel.com/Images/doc2558.pdf Code: http://www.atmel.com/images/AVR221.zip
Hallo, bleibt höchstens anzumerken, dass die Algorithmen, die man normalerweise unter "numerische Integrationsmethoden" versteht (außer Euler) nur einsetzbar sind, wenn man den Zeitpunkt der Funktionsermittlung selber bestimmen kann (da in der Regel bei der Bestimmung Kenntnisse über einen möglichen "zukünftigen" Verlauf notwendig sind). Daher ist jede numerische Integration bei einer Echtzeitregelung eine einfache Summation in mehr oder weniger festen Zeitabständen (vergleichbar mit Euler). Reicht dies nicht aus, müssen Informationen über die Regelstrecke eingearbeitet werden (wie z.B. bei der modellbasierten Regelung). Schöne Grüße, Martin
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.