Avant de commencer, passons en revue les composants que nous utiliserons dans ce tutoriel :
- Arduino Mega (Arduino Uno peut également être utilisé).
- LC-241.
- PA-14 avec moteur brushless.
- Alimentation PS-13-12.
L'actionneur linéaire est équipé de deux jeux de fils : un pour le moteur et l'autre pour les fins de course. Le schéma ci-dessus illustre le câblage des composants.
CODE DE CONFIGURATION PIN
int out_lim = 45; // broche de fin de course extérieure
int in_lim = 53; // broche de fin de course intérieure
int run_f = 25; // exécuter la broche sur le contrôleur
int run_r = 30; // inverser la broche sur le contrôleur
Cette partie du code gère l'initialisation des broches qui serviront à la réception et à l'envoi des données. Toutes les broches numériques ont été utilisées dans ce cas, mais des broches analogiques peuvent également être utilisées.
CODE DE BOUCLE DE CONFIGURATION
void configuration() {
Serial.begin(9600); // initialiser la communication série à 9600 bits par seconde
pinMode(out_lim, INPUT_PULLUP); // configure la broche 45 comme broche d'entrée
pinMode(in_lim, INPUT_PULLUP); // configure la broche 53 comme broche d'entrée
pinMode(run_f, OUTPUT); // configure la broche 25 comme broche de sortie
pinMode(run_r, OUTPUT); // configure la broche 30 comme broche de sortie
retract(); // rétracte le trait au démarrage
délai(500);
}
La boucle « setup » configure les broches utilisées pour la sortie et celles utilisées pour l'entrée. Comme le montre le code, les broches connectées aux interrupteurs de fin de course servent à lire les états des interrupteurs de fin de course, tandis que les broches connectées aux positions « RUN » et « REV » du LC-241 servent à l'écriture. Initialement, le code exécute également une fonction de rétraction pour une rétraction complète avant le démarrage.
CODE DE DÉFINITIONS DE FONCTION
void extend() // cette fonction permet au moteur de fonctionner
{
digitalWrite(run_f, BAS);
digitalWrite(run_r, HAUT);
}
void retract() // cette fonction inverse le sens du moteur
{
digitalWrite(run_f, BAS);
digitalWrite(run_r, BAS);
}
void run_stop() // cette fonction désactive le moteur
{
digitalWrite(run_f, HAUT);
digitalWrite(run_r, HAUT);
}
Cette partie explique les fonctions permettant de contrôler la puissance et le sens de rotation du moteur. Pour activer ou désactiver le moteur, il suffit d'écrire « 0 » ou « 1 » sur la broche « RUN », puis d'appliquer les mêmes commandes à la broche « REV » pour inverser le sens de rotation du moteur.
CODE DE LA BOUCLE PRINCIPALE
Boucle vide() {
int out_lim_state = digitalRead(out_lim); // lit les interrupteurs de fin de course et enregistre sa valeur
int in_lim_state = digitalRead(in_lim);
Serial.print("valeur du fin de course extérieur "), Serial.println(out_lim_state); // 0 -> le fin de course est enfoncé
Serial.print("valeur de fin de course interne "), Serial.println(in_lim_state); // 1 -> le fin de course n'est pas enfoncé
si (out_lim_state == 0 && in_lim_state == 1) // si l'interrupteur de fin de course extérieur est enfoncé et que l'intérieur ne l'est pas (étendue complètement)
{
retract(); // rétracte le trait
}
else if (out_lim_state == 1 && in_lim_state == 0) // si l'interrupteur de fin de course intérieur est enfoncé et que l'extérieur ne l'est pas (réagit complètement)
{
extend(); // étendre le trait
}
La boucle « loop » lit simplement les entrées des interrupteurs de fin de course pour vérifier si les interrupteurs sont enfoncés ou non, puis, en fonction de cela, elle change simplement la direction du moteur.
La plupart des actionneurs linéaires du marché sont équipés d'un moteur CC à balais. Le cycle de service de ce moteur rend donc le fonctionnement continu de l'unité quasiment impossible. Chez Progressive Automations, nous offrons à nos clients la possibilité d'opter pour un moteur CC sans balais pour notre modèle PA-14, leur offrant ainsi encore plus de possibilités pour leurs projets.