Questions sur librairie myPID

Bonjour à tous,

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 ?

Est-ce avec la fonction SetTunings ?

Merci à vous

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.

Merci de ton retour Fdufnews !
En en effet, je comprends mieux maintenant. Est-ce que tu as un lien qui explique comment fonctionne le PID ?

Dans mon cas j'ai uniquement 2 entrées analogiques 0-5V (consigne et retour capteur) et je sors un PWM.

Existe t-il une méthode qui permet de vérifier simplement le fonctionnement d'un PID ? (j'ai un scope numérique)

Bonne journée

Quelques explications ici

https://playground.arduino.cc/Code/PIDLibrary/

Sinon il y a des tonnes de tutos ou vidéos sur ce thème

Brett Beauregard, l'auteur de la librairie, a fait un tuto détaillé sur la librairie
http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/
Voir dans le bas de la page les liens vers les différents chapitres.

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.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.