Le besoin
Faire courir une cible, et pouvoir l'arrêter à tout moment
Le tir sur sanglier courant entraîne à viser un animal en mouvement :
une cible traverse le pas de tir d'un bout à l'autre d'un rail, à vitesse variable.
Pour un stand de tir privé, j'ai conçu toute la partie électronique et logicielle
qui fait avancer cette cible et permet de la piloter depuis le poste de tir,
à une quarantaine de mètres, sans aucun câble.
La difficulté ne tient pas dans le mouvement, mais dans l'environnement : un moteur
de 2 000 W alimenté en 48 V à côté de microcontrôleurs 5 V, des capteurs
reliés par 20 m de câble, un usage en plein air, et des utilisateurs qui ne sont pas
techniciens. Chaque choix a été fait pour qu'une panne, quelle qu'elle soit,
se termine par une cible arrêtée.
Deux unités, un seul cerveau
Le système se compose d'une télécommande (ESP32-S3 avec écran tactile
7 pouces) et d'un contrôleur installé près du rail (Arduino Uno), qui
pilote le variateur du moteur par un convertisseur numérique-analogique et quatre
relais : frein, marche arrière et gammes de vitesse.
Dans la troisième version, j'ai inversé la répartition des rôles. Le contrôleur
détient désormais les paramètres en EEPROM, la logique de cycle, les rampes de
vitesse, le décompte de départ et toutes les sécurités. La télécommande devient
un terminal : elle affiche l'état reçu et transmet les ordres.
- Un redémarrage de la télécommande n'interrompt plus un cycle en cours.
- Changer de télécommande ne fait perdre aucun réglage.
- Les décisions critiques se prennent au plus près des actionneurs, sans dépendre de la radio.
Ce que ça m'a appris
C'est la règle qu'on applique entre un automate et son IHM en usine : l'écran
affiche et commande, l'automate décide. Tant que la télécommande calculait les
cycles, le moindre redémarrage de l'affichage interrompait l'exercice en cours.
Déplacer la logique vers le contrôleur a rendu la machine indépendante de son écran.
La sécurité
Par défaut, tout s'arrête
Le frein est serré dès que le moteur s'arrête. Le contrôleur coupe l'accélérateur
et serre le frein dans quatre situations, sans attendre d'ordre de personne :
- Perte de liaison pendant plus de 2 secondes : si la télécommande s'éteint ou sort de portée, la cible s'immobilise d'elle-même.
- Arrêt d'urgence : le bouton reste accessible en permanence à l'écran, y compris quand une fenêtre de dialogue est ouverte.
- Fin de course atteinte dans le sens du mouvement : seul le déplacement qui éloigne la cible de la butée reste autorisé.
- Programme figé : un chien de garde matériel redémarre le contrôleur si sa boucle se bloque plus de 2 secondes.
En mode automatique, la cible n'enchaîne jamais d'allers-retours seule. Elle s'arrête
en entrant dans la zone de ralentissement, puis au bout du rail, et ne repart qu'avec
l'accord de l'opérateur. Chaque accord doit être relâché avant d'être pris en compte
à nouveau : une commande répétée par la radio ne peut pas déclencher un trajet de trop.
Avant le moindre essai moteur, j'ai simulé les capteurs à la main, levier par levier.
Neuf défauts de logique sont apparus, dont deux qui auraient pu faire repartir la cible
sans l'accord de l'opérateur. Aucun n'était visible à la simple relecture du code.