Dans un projet j'utilise la librairie myPID, et tout fonctionne. Avant la boucle setup (), j'initialise le PID comme ceci, avec des valeurs pour P, I et D.
PID myPID(&PID_Input, &PID_Output, &PID_SetPoint,P_PARAM ,I_PARAM ,D_PARAM , DIRECT );
Question: comment, à un moment donné dans le programme, je peux changer ces valeurs de P, I et D ? Faut-il redémarrer le PID après ?
Il n'y a pas de librairie myPID. myPID est le nom de l'instance que tu as créée.
PID myPID(&PID_Input, &PID_Output, &PID_SetPoint,P_PARAM ,I_PARAM ,D_PARAM , DIRECT );
Par contre il y a une librairie PID_v1, si c'est bien celle-là que tu utilises.
Si tu lis le contenu du fichier PID_v1.h tu verras ça
void SetTunings(double, double, double);
// * While most users will set the tunings once in the
// constructor, this function gives the user the option
// of changing tunings during runtime for Adaptive control
qui permet de modifier les paramètres au vol
Et si tu regardes dans les exemples livrés avec la librairie tu trouveras PID_AdaptiveTunings.ino qui utilise SetTunings() et tu verras qu'il n'est pas nécessaire de redémarrer le PID.
En principe, on attend un certain comportement d'un système asservi. Temps de ralliement, overshhot, undershoot, ....
Il n'y a guère qu'en faisant des mesures que l'on peut vérifier si l'asservissement se comporte comme on le veut.
A minima, tu peux envoyer par la ligne série, la consigne, l'erreur, la commande et peut-être d'autres valeurs intermédiaires de ton choix pour les faire tracer dans un tableur ou dans le plotter de l'IDE.