Bienvenue dans la deuxième partie de notre guide sur la surveillance du retour de charge d'un actionneur linéaire . Dans la première partie, nous avons abordé le câblage et le codage de base nécessaires à l'exemple. Dans le guide d'aujourd'hui, nous détaillerons les différentes sections du code, ainsi que les différentes manières de le modifier à votre convenance. Nous commencerons par examiner la section latchButtons() du code.
La première chose que nous souhaitons observer est le temps d'anti-rebond du bouton. Ainsi, lorsque le bouton gauche est enfoncé, le temps écoulé depuis l'appui précédent doit être calculé. Pour ce faire, nous devons utiliser la dernière valeur stockée dans le code, puis utiliser la fonction millis() pour vérifier le temps. Lorsque le temps est supérieur au temps d'anti-rebond, la fonction vérifie si l'actionneur est capable de s'étendre. Une fois les deux conditions remplies, la fonction peut continuer.
si (digitalRead(buttonLeft)==LOW)//gauche est en avant
{
currentTimedebounce = millis() - lastButtonpress;// vérifier le temps écoulé depuis la dernière pression
si (currentTimedebounce > debounceTime && dontExtend == false)//une fois que vous avez déclenché dontExtend, ignorez toutes les pressions vers l'avant
{
leftlatch = !leftlatch;// si le moteur est en mouvement, arrêtez-vous, s'il est arrêté, commencez à bouger
firstRun = true;// définir l'indicateur firstRun pour ignorer le pic actuel
fullyRetracted = false; // une fois que vous avancez, vous n'êtes pas complètement rétracté
lastButtonpress = millis();//enregistre l'heure de la dernière pression sur le bouton
retour;
}//fin si
}//fin btnLEFT
La section suivante présente la boucle de la fonction motorForward(), et plus précisément les deux délais. La boucle commence par activer le contrôleur de moteur, ce qui déclenche le moteur de l'actionneur linéaire. S'il est le premier à passer dans la boucle, le délai sera plus long. Ce délai ignore le pic de courant qui se produit lors de l'activation du moteur. Veillez à ne pas définir un délai trop élevé, car vous n'aurez aucun contrôle sur celui-ci une fois le moteur démarré. Lorsque le moteur démarre, la section getFeedback() permet de vérifier le capteur de courant.
while (dontExtend == false && leftlatch == HIGH) {
digitalWrite(EnablePin, HAUT);
analogWrite(PWMPinA, vitesse);
analogWrite(PWMPinB, 0);//déplacer le moteur
si (firstRun == true) delay(firstfeedbacktimedelay);
else delay(feedbacktimedelay); //petit délai pour atteindre la vitesse
obtenir un retour d'information();
firstRun = faux;
latchButtons();
}//fin pendant que

Nous allons maintenant passer en revue les sections de la routine get feedback(), qui commence par lire la broche analogique connectée au capteur. Elle vérifie d'abord si le moteur est à ses limites, et le code détecte ce moment lorsque le courant atteint 0. Malheureusement, des erreurs de mesure peuvent parfois survenir, il est donc important de définir un compteur. Ce compteur doit compter jusqu'à hitLimitsmax avant l'arrêt du moteur ; s'il compte moins, il se réinitialise.
si (CRaw == 0 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1;
else hitLimits = 0; // vérifier si le moteur est aux limites et si le courant s'est arrêté
Ensuite, il y a les limites d'impact. Lorsque le moteur de l'actionneur linéaire avance et atteint la limite, il désactive le loquet droit. S'il recule, il désactive le loquet gauche. Le code ci-dessous ne montre que le loquet droit, mais celui du loquet gauche est identique.
si (hitLimits == hitLimitsmax && rightlatch == HAUT) {
rightlatch = BAS ;
hitLimits = 0;
}//fin si
La limite de courant est vérifiée à sa limite maximale. Si elle est dépassée, le loquet gauche est désactivé et le moteur ne peut plus s'étendre. Pour démarrer l'extension, le moteur doit être inversé.
si (CRaw > maxAmps) {
dontExtend = vrai;
leftlatch = LOW; // arrêt si le retour est supérieur au maximum
}//fin si
Ceci nous amène à la fin de la partie 2 sur la surveillance du retour de charge d'un actionneur linéaire. Nous avons détaillé des sections spécifiques du code et expliqué leur fonctionnement. Si vous souhaitez commander les unités utilisées dans cet exemple, vous pouvez commander en ligne ou nous contacter par téléphone. Pour toute question ou préoccupation concernant nos produits, nous sommes également à votre disposition.