Testeur de moteur pas à pas

Testeur de moteur connecté par WiFi .

J’avais besoin d’un montage portable pour tester des moteurs pas à pas (stepper). Je voulais aussi une interface ergonomique pour modifier les paramètres de fonctionnement du moteur (qui n’en voudrait pas ?) et quoi de mieux qu’un navigateur web pour réaliser une interface portable ?

Constatant l’engouement actuel pour les modules wifi ESP8266 et ESP32 , je me suis dit que c’était une bonne occasion de m’y mettre. J’ai donc demandé conseil au forum makerspace56 et me voilà orienté vers l’ESP8266 sous IDE Arduino.

Le cahier des charges de ce testeur de moteur était le suivant :
– modification des paramètres moteur par une interface web (vitesse de rotation , nombre de micro-pas par pas , accélération, etc …)
– modification du courant de bobine.
– portabilité et fonctionnement sur batterie.

Le plus simple pour ne pas re-inventé la roue a été d’utiliser un driver moteur Stepstick prévu pour les imprimantes 3D Reprap. On les trouve pour quelques euros, avec des drivers différents (A4984 , A4988 , DRV8825) . J’ai choisi finalement un module DRV8825 , capable de générer jusqu’à 32 micro-pas par pas . Mes essais de ces différents drivers ont également montré moins de problèmes de vibration moteur sur le driver DRV8825 que sur les modules Allegro.

Le testeur est programmable par une interface web accessible depuis n’importe quel smartphone, tablettes ou PC équipé en Wifi. Pour l’utiliser , il faut simplement se connecter au réseau wifi « Testeur-moteur » (pas de mot de passe) de l’ESP8266 et taper l’adresse 1.1.1.1 dans le navigateur de votre choix.

Le script Arduino fait 3 choses :
– créer le point d’accès WiFi et la page d’interface, accessible depuis un navigateur web.
– répondre aux requêtes du navigateur .
– gérer le fonctionnement moteur et générer les micro-pas régulièrement . Pour cela , j’utilise la librairie AccelStepper , qui permet également de générer des phases d’accélération et de décélération. En fonctionnement, le moteur fait des allers-retours sur une distance paramétrable . Cette répétition cyclique des phases d’accélération est plus confortable pour évaluer la validité des différents réglages.

Un bouton poussoir sur la carte permet le démarrage ou l’arrêt du moteur , visualisé par une led . Il est possible de démarrer et d’arrêter le moteur par l’interface web , mais cela perturbe la génération des pas moteur lorsque l’on dépasse une certaine fréquence . En effet , répondre à une requête du navigateur demande environ 10ms de travail au module ESP8266 . On est donc assuré de louper un pas si on dépasse 100 pas/seconde , et on crée alors une petite secousse dans la rotation , ce n’est pas top …
L’ESP8266 pédalant plutôt rapidement, il est possible d’atteindre une vitesse de rotation élevée , 10000 pas/seconde n’est pas un problème.
Les valeurs de paramétrage peuvent être modifiées pendant la rotation mais elles ne deviennent effectives qu’à chaque changement de sens de rotation.

Le shéma du testeur:

Le script Arduino du testeur  (+shema)  : MoteurTesteur02

L’interface web obtenue:

Ce montage répond au cahier des charges initial , mais quelques points restent à améliorer :
– le courant de bobine est modifiable sur le module Stepstick par un potentiomère sub-miniature .  Ca marche … mais ce n’est pas pratique du tout du tout du tout ! Sans une loupe et le bon micro-tournevis, autant viser une mouche sur la lune avec un élastique.
– le démarrage et l’arrêt du moteur à partir du navigateur perturbe le fonctionnement moteur lorsque l’ESP8266 répond à la requête du navigateur . La solution serait peut-être de passer à l’ESP32 qui semble bénéficier d’un fonctionnement multitâche et d’une plus grande vitesse de traitement ?  Plus surement, je vais tenter d’ajouter à l’ESP8266 un Arduino mini-pro dont le seul travail sera le contrôle moteur. L’ESP8266 pourra alors être sollicité sans que cela perturbe le moteur.
– un regret : je n’ai pas réussi à utiliser la libraire Arduino mDNS , qui aurait permis d’appeler l’interface par une adresse du type « moteur.local » à la place de l’adresse IP 1.1.1.1 (ça marche bien mais ce n’est pas très glamour … )

Gildas

Laisser un commentaire