Photo of a control box inside

Partie II : comment surveiller la rétroaction de charge d’un vérin linéaire ?

Guest Writer
Guest Writer
PA Engineer

Bienvenue dans la partie II de notre guide sur la façon de surveiller la rétroaction de charge d’un vérin linéaire. Dans la Partie I, nous avons passé en revue le processus de câblage et le codage de base nécessaire pour l’exemple. Dans le guide d’aujourd’hui, nous examinerons en détail les différentes sections du code ainsi que quelques façons de le modifier. Pour commencer, nous regarderons la section de code latchButtons().

La première chose à aborder est l’anti-rebond des boutons : lorsque le bouton gauche est pressé, il faut calculer le temps écoulé depuis l’appui précédent. Pour ce faire, nous utiliserons la dernière valeur stockée dans le code, puis la fonction millis() pour vérifier le temps. Lorsque ce temps est supérieur au délai d’anti-rebond, la fonction vérifie ensuite si le vérin peut s’étendre. Une fois ces deux conditions remplies, la fonction peut continuer.

if (digitalRead(buttonLeft)==LOW)//left is forwards

{
currentTimedebounce = millis() - lastButtonpress;// check time since last press
if (currentTimedebounce > debounceTime && dontExtend == false)//once you've tripped dontExtend, ignore all forwards presses
{
leftlatch = !leftlatch;// if motor is moving, stop, if stopped, start moving
firstRun = true;// set firstRun flag to ignore current spike
fullyRetracted = false; // once you move forwards, you are not fully retracted
lastButtonpress = millis();//store time of last button press
return;
}//end if
}//end btnLEFT


La section suivante est la boucle dans la fonction motorForward(), plus précisément les deux temporisations. La boucle commence par activer le contrôleur de moteur, ce qui met en marche le moteur du vérin linéaire. S’il s’agit du premier passage dans la boucle, il y aura un délai plus long. Ce délai permet d’ignorer le pic de courant qui se produit lorsque le moteur est activé. Veillez à ne pas régler un délai trop grand, car vous n’aurez plus de contrôle une fois lancé. Au démarrage du moteur, la section getFeedback() est utilisée pour vérifier le capteur de courant.

while (dontExtend == false && leftlatch == HIGH)  {

digitalWrite(EnablePin, HIGH);
analogWrite(PWMPinA, speeed);
analogWrite(PWMPinB, 0);//move motor
if (firstRun == true) delay(firstfeedbacktimedelay);
else delay(feedbacktimedelay); //small delay to get to speed
getFeedback();
firstRun = false;
latchButtons();
}//end while

Photo d’un boîtier de commande à l’intérieur

Ensuite, nous passerons en revue les sections de la routine getFeedback(), qui commence par lire la broche analogique reliée au capteur. Elle commence par vérifier si le moteur est en butée, et le code connaît ses limites lorsque le courant indique 0.

Malheureusement, des lectures erronées peuvent parfois se produire ; il est donc important de mettre en place un compteur. Ce code de compteur doit compter jusqu’à hitLimitsmax avant que le moteur ne s’arrête et, s’il compte moins, il se réinitialise.

 

if (CRaw == 0 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1;  

else hitLimits = 0; // check to see if the motor is at the limits and the current has stopped


Après cela, on traite les butées. Lorsque le vérin linéaire avance et atteint la limite, il coupe le loquet droit. S’il recule, il coupe le loquet gauche. Le code ci-dessous ne montre que le loquet droit, mais celui du loquet gauche est identique.

if (hitLimits == hitLimitsmax && rightlatch == HIGH)  {

rightlatch = LOW;
hitLimits = 0;
}//end if

La limite de courant est vérifiée et la valeur maximale est définie. Si la limite est dépassée, le loquet gauche sera coupé et le moteur ne s’étendra plus. Pour relancer l’extension, il faut inverser le moteur.
if (CRaw > maxAmps)  {

dontExtend = true;
leftlatch = LOW; //stop if feedback is over maximum
}//end if

Nous arrivons ainsi à la fin de la partie II de la surveillance de la rétroaction de charge d’un vérin linéaire. Nous avons détaillé cette fois des sections précises du code et expliqué leur fonctionnement. Si vous souhaitez commander l’une des unités utilisées dans cet exemple, vous pouvez commander en ligne ou nous contacter pour passer commande par téléphone. Si vous avez des questions ou des préoccupations concernant nos produits, nous sommes toujours prêts à vous aider.