Pilotage d'un vérin double effet

Bonjour à tous,

Voila j’essaie de gérer la tension d’un fil dyneema grâce à un vérin double effet et une jauge de contrainte et d’un HX711 qui permettent de capter la tension actuel du fil (en grammes).
J’ai déjà écrit un bout de code :

void loop() {

LoadCell.update(); // fonction qui permet d’acquérir la tension en grammes (avec librairie HX711_ADC)

Charge = LoadCell.getData();

while (abs(commandLoad - Charge)>hyst){ //commandLoad : commande de charge (ex : je veux que la tension du fil soit de 2kg donc commandLoad = 2000)

if (Charge < commandLoad) {
digitalWrite(relaisD1,LOW);
}
else {
digitalWrite(relaisD1,HIGH);
}

digitalWrite(relaisAlim, HIGH);

}
digitalWrite(relaisAlim, LOW);

}

La valeur de hyst est de 200 (cela agis comme une hystérésis).

Pour l’instant les résultats sont les suivants :
quand je téléverse le programme le vérin sort mais il sort jusqu’en butée donc cela ne marche pas. Je n’arrive pas à comprendre le problème donc si quelqu’un à une idée …

Bonne journée :slight_smile:

Bonjour,

Le problème vient du fait que dans ta boucle while tu ne mets pas Charge à jour.
Il faudrait ajouter un Charge = LoadCell.getData(); avant l’accolade qui ferme le while.
Je pense aussi que la réponse de ton actionneur n’étant pas instantané tu devrais avoir une petite temporisation avant de faire cette nouvelle acquisition sinon ton asservissement va dépasser la consigne.
D’ailleurs, pour compléter, je ne me rends pas bien compte du contexte mais j’ai l’impression que la commande en tout ou rien du vérin c’est peut-être un peu bourrin.

Et il faut placer ton code entre balises code (le bouton </> dans la fenêtre d’édition) sinon il est mal formaté lorsqu’on lit les messages.