-
hi,
ich würde den regler nicht in den interrup packen, da diese routinen möglichst kurz gehalten werden sollen. ich denke eine totzeit von 50ms sollte noch problemlos für den regler möglich sein, du kannst also die impulse zählen die in 50ms auftreten, und darüber auf die geschwindigkeit schließen, wenn ta nicht konstant ist, sondern sich in geringem rahmen ändert ist das für die regelung auch egal.
mfg jeffrey
-
HeHo,
ich sitzte auch nen bissl dran komme aber kein meter vorran...
Hat da jem. vieleicht nen bissl qellcode für einen armen schüler? *fg*
-
Es gibt da ein älteres Programm von waste, das die Vorgehensweise beim PID-Regler gut zeigt:
https://www.roboternetz.de/phpBB2/ze...&highlight=pid
https://www.roboternetz.de/phpBB2/vi...=285825#285825
Den entscheidenden Teil des Programms, der den PID-Regelalgorithmus abbildet, ziehe ich heraus:
Code:
x = don - doff; // Abweichung
yp = x * kp; // P-Anteil berechnen
isum += x;
// Begrenzung um Überlauf zu vermeiden
if (isum > 16000) isum = 16000;
if (isum < -16000) isum = -16000;
yi = isum / 625 * ki; // I-Anteil berechnen
yd = (x - xalt) * kd + drest; // D-Anteil berechnen
if (yd > 255) drest = yd - 255;
else if (yd < -255) drest = yd + 255;
else drest = 0;
y = yp + yi + yd; //Stellgröße des PID-Reglers