dimanche 26 août 2018

Moteur pas à pas contrôlé par WiFi (ESP8266)

Il y a quelques semaines, nous nous sommes amusés à contrôler un moteur à courant continu par WiFi grâce à un module ESP8266.

L'expérience d'aujourd'hui est dans le même ordre d'idées, sauf  que nous contrôlerons cette fois-ci un moteur pas à pas.

Une page web nous permettra de choisir le nombre de pas effectués par le moteur, la direction de sa rotation (horaire ou antihoraire) ainsi que le temps écoulé entre deux pas consécutifs (ce qui influencera évidemment la vitesse de rotation du moteur).

Matériel nécessaire

Un moteur pas à pas (j'ai utilisé un moteur bipolaire provenant d'une vieille imprimante), un module ESP8266 comportant un grand nombre de broches GPIO (j'ai utilisé le modèle ESP-12), un double pont en H (j'ai utilisé un module L298N), un convertisseur USB-TTL pour programmer votre ESP8266 (à moins que votre ESP8266 ne se trouve déjà sur une carte de développement complète), et un accès à un réseau WiFi.

Préparation de l'IDE Arduino

L'IDE Arduino ne dispose pas par défaut des fichiers nécessaires pour programmer un module ESP8266: si ce n'est pas déjà fait, il faut d'abord les installer.

Le circuit

Sans trop de surprise, le circuit est très similaire à celui que nous avions utilisé pour le contrôle d'un moteur électrique conventionnel, sauf que le moteur pas à pas accapare toutes les sorties du module L298N (cliquez sur le schéma pour l'agrandir).


L'ESP8266 nécessite une alimentation de 3,3 V, ce qui est trop faible pour la plupart des moteurs pas à pas, d'où les deux alimentations distinctes.

  • 3 broches de l'ESP8266 sont connectées à 3,3 V:  VCC, RST et CH_PD (aussi appelée "EN" sur certains modèles).
  • 2 broches de l'ESP8266 sont connectées à la masse:  GND et GPIO0.
  • La broche RXD de l'ESP8266 est reliée à la broche TX du convertisseur USB-TTL, et la broche TXD de l'ESP8266 est reliée à la broche RX du convertisseur USB-TTL.
  • Les broches GPIO4, GPIO5, GPIO14 et GPIO16 de l'ESP8266 sont branchées à IN1, IN2, IN3 et IN4 du module 298N, puisqu'elles sont responsables de contrôler le moteur.
  • Toutes les masses sont reliées ensemble (GND de l'ESP8266, du convertisseur USB-TTL et du module L298N).
Avant de procéder au téléchargement du sketch, branchez la broche RST à la masse pendant quelques secondes, avant de la rebrancher à 3,3 V.


Le sketch

La fonction "construitPage()" retourne une chaîne de caractères contenant la totalité de la page web, en langage html.  Cette page web contient un champ qui permettra à l'utilisateur de déterminer de combien de pas il veut faire tourner le moteur, une paire de boutons radio permettant de choisir le sens de rotation, un champ permettant de choisir le délai en millisecondes entre deux pas consécutifs, et finalement un bouton "appliquer" qu'on clique pour que les nouveaux paramètres soient pris en compte par le microcontrôleur.

La fonction "gestionPage()" est appelée lors d'un clic sur le bouton "Appliquer".  Elle met à jour quelques variables globales en fonction des choix faits par l'utilisateur de la page web, et indique les paramètres choisis dans le moniteur série (ce qui sera surtout utile pour le débogage).

prochainStep() et gestionMoteur() sont responsable de faire tourner le moteur avec les paramètres spécifiés (j'ai choisi de ne pas utiliser la bibliothèque Stepper).


Le résultat

Au démarrage du programme, l'adresse de la page web construite par l'ESP8266 est affichée dans le moniteur série.  Il suffit de coller cette adresse dans un navigateur web pour accéder à la page.


La page web vous permet de choisir le nombre de pas de la prochaine rotation du moteur, le sens de cette rotation, et le délai en millisecondes entre chaque pas.  Le moteur devrait se mettre à tourner lorsque vous cliquez sur le bouton "Appliquer".


Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...