dimanche 5 novembre 2017

Robot à base de moteurs pas à pas (Arduino)

Pour le roboticien amateur, la plate-forme robotique la plus répandue est constituée de deux (ou quatre) moteurs à courant continu.  Je propose ici une version similaire, facile à construire soit-même, mais constituée de deux moteurs pas à pas.

La raison?  Après avoir démonté quelques vieilles imprimantes, je me retrouve avec un impressionnant stock de moteurs pas à pas:  il faut bien que je les utilise pour quelque chose! De plus, un moteur pas à pas peut être contrôlé avec une meilleure précision qu'un moteur à courant continu muni d'une boîte d'engrenages.

Des inconvénients?  Vous aurez besoin de deux L293D ou L298N plutôt qu'un seul, ce qui accaparera 8 sorties de votre microcontrôleur (une carte Arduino, en l'occurence) et la programmation est peut-être légèrement plus complexe qu'avec des moteurs à courant continu.

Choix des moteurs

Le premier défi, si vous utilisez comme moi du matériel de récupération, c'est de trouver deux moteurs identiques.  Ce qui est surtout important, pour des raisons de symétrie, c'est que vos deux moteurs comportent le même nombre de pas par tour. Dans mon cas, mes deux moteurs n'avaient pas le même numéro de modèle, mais ils comportaient tous les deux 200 pas par tour.

Il faut aussi prendre garde de choisir des moteurs qui offrent un couple suffisant pour faire avancer le véhicule.  Mon premier prototype utilisait une paire de moteurs beaucoup plus petits, qui fonctionnaient à merveille en absence de charge, mais qui étaient tout simplement incapables de faire avancer le véhicule!

Roues

Puisque mon but était d'utiliser autant que possible du matériel récupéré, j'ai utilisé deux couvercles (ils avaient servi à fermer des bocaux d'arachides). Leur diamètre doit être plus grand que celui du moteur (j'avais choisi mes roues en fonction de moteurs plus petits que ceux que j'ai finalement utilisés.  Résultat:  la plate-forme est vraiment très proche de la surface du plancher.)  J'ai ajouté une bande élastique autour de chaque roue afin d'améliorer l'adhérence.

J'ai fixé chaque roue à son moteur en utilisant un peu de colle epoxy.



Plateforme

Là aussi, pas de dépense inutile:  un bout de planche de bois, une plaque de plastique... Pourvu que ce soit rigide, avec une surface suffisante pour supporter l'Arduino, les piles, les pilotes de moteur et les capteurs...  J'ai utilisé un petit panneau d'aggloméré issu d'une caisse de clémentines du Maroc.

Chaque moteur-roue est fixé à l'arrière de la plate-forme au moyen de colliers de serrage en plastique, et on ajoute une petite roue à l'avant (la mienne vient d'une imprimante, probablement).

Dessous de la plate-forme

Dessus de la plate-forme


Le circuit

Module L298N
Ce premier prototype ne comporte pas de capteurs:  nous nous contenterons de le faire bouger selon une routine pré-établie.

Le circuit est constitué d'une carte Arduino, de deux modules L298N (des L293D auraient fait l'affaire aussi) et de 8 piles AA (12 V au total).

La présence d'un interrupteur est particulièrement pratique pour éviter que votre robot ne se mette en mouvement pendant que vous reprogrammez l'Arduino...

L'Arduino est alimenté au moyen de la sortie 5 V d'un des modules L298.

Des cavalier (jumpers) sont en places pour que les pins "enable" des modules L298N soient à 5 V (en absence de cavaliers, il faut brancher les 4 pins enable à 5 V).



L298N de gauche:

+12V:  12 V
GND:  GND de l'Arduino et borne négative de l'alimentation 12 V
5 V:  VIN de l'Arduino (pour alimenter ce dernier)
ENA:  5 V
IN1:  Arduino 4
IN2: Arduino 5
IN3: Arduino 6
IN4: Arduino 7
ENB: 5 V

L298N de droite:

+12V:  12 V
GND:  GND de l'Arduino et borne négative de l'alimentation 12 V
ENA:  5 V
IN1:  Arduino 8
IN2: Arduino 9
IN3: Arduino 10
IN4: Arduino 11
ENB: 5 V

Prenez soin de relier ensemble toutes les masses:  borne négative de la source de tension, GND de l'Arduino et GND de chaque module L298 N.

Exemple de sketch

Grâce au sketch ci-dessous, le robot avance en ligne droite pendant 2 secondes, tourne sur lui-même pendant 2 secondes, puis recule en ligne droite pendant 2 secondes.

Notez que la fonction "setSpeed" de la bibliothèque "Stepper" ne permet pas de régler les deux moteurs à des vitesses différentes l'un de l'autre.  C'est pourquoi je ne l'ai pas utilisée.



Vidéo du robot en action



Nous devrions pourvoir y ajouter des capteurs pour en faire un véhicule téléguidé, un suiveur de ligne, un éviteur d'obstacles, un chercheur de lumière, un longeur de mur, etc.

Yves Pelletier   (TwitterFacebook)

1 commentaire:

  1. Bonjour j'ai juste une question si vous savez répondre ça m'aidera beaucoup. Pensez vous qu'il est possible de réaliser un robot autonome avec des moteurs pas à pas en utilisant un automate schneider?

    RépondreSupprimer