Bonjour à tous,
Je suis sur un projet ou je rembobine un file sur une bobine qui viens d'une bobine rempli de fil. Je monitor la tension de fil. Lorsque la tension réel du fil n'est pas égal à la consigne de tension que je lui est envoyé, je lance un moteur à courant continue qui vient débobiner le fil est qui permet d'augmenter ou de diminuer la tension du fil.
C'est un peu compliqué à expliquer ...
Bon j'utilise la librairie PID pour avoir la vitesse que je dois donner à mon moteur en fonction de la consigne tension fil et de la tension réel fil.
J'ai crée une fonction qui me permet de générer sur Arduino la tension du fil. La tension se déplace comme une sinusoïdale elle passe de 98 à 102 puis redescend a 98.
La logique est donc la suivante : lorsque la tension diminue, je diminue la vitesse de moteur et inversement quand la tension augmente, j'augmente la vitesse du moteur.
mon code :
include <PID_v1.h>
float x;
double poids, vitesseMoteur;
int consigPoids = 5;
double Kp = 0.8, Ki =11, Kd = 0.1;
double Setpoint, Input, Output;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, REVERSE);
void setup() {
// put your setup code here, to run once:
Setpoint = 100;
Input = 0;
Setpoint = 0;
x = 0;
//active le PID
myPID.SetSampleTime(300);
myPID.SetMode(AUTOMATIC);
myPID.SetOutputLimits(0, 255); // plage de valeur de l'output
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
Setpoint = 100;
x = x + 0.01;
poids = 100 + 2 * sin(x);
Serial.print("Poids actuel = ");
Serial.println(poids);
delay(100);
Input = poids;
myPID.Compute();
vitesseMoteur = Output;
//analogWrite(vitesseMoteur, Output);
Serial.print("--------------> vitesse Moteur = ");
Serial.println(vitesseMoteur);
}
Je suis face au problème suivant : j'ai bien une augmentation de la vitesse lorsque la tension augmente et j'ai bien une diminution lorsque la tension diminue, mais entre 102 et 101 et entre 101 et 100 il reste bloquer à 255 alors qu'il devrait diminuer la vitesse.
Je vous conseille de lancer le programme pour comprendre.