samedi 23 février 2013

Contrôler la vitesse d'un moteur pas à pas au moyen d'un potentiomètre (Arduino)

L'objectif:  utiliser un Arduino pour contrôler la vitesse de rotation d'un moteur pas à pas au moyen d'un potentiomètre (ou d'un joystick):  lorsque le potentiomètre se trouve à sa position centrale, le moteur ne tourne pas.  Il tourne de plus en plus rapidement dans le sens horaire à mesure qu'on tourne le potentiomètre dans une direction, et tourne de plus en plus rapidement dans le sens antihoiraire à mesure qu'on tourne le potentiomètre dans l'autre direction.

La Stepper Library est accompagnée d'un exemple intitulé "stepper_speedControl" qui accomplit à peu près cette tâche, sauf que le moteur tourne toujours dans la même direction (la vitesse est nulle à une position extrême du potentiomètre, et maximale à l'autre position extrême).  Au départ, j'ai supposé que ma tâche consistait à apporter quelques modifications mineures à ce sketch pour obtenir le comportement souhaité.
Malheureusement, cette première approche n'a pas très bien fonctionné.  L'exemple "stepper_speedControl" règle la vitesse au moyen de la routine "setSpeed" de la Stepper Library.   Malheureusement, tel qu'indiqué dans l'entête de l'exemple, l'Arduino est lent à répondre aux commandes du potentiomètre lorsque setSpeed est réglé à une faible valeur.  Le pire, c'est lorsque qu'on règle setSpeed à zéro:  l'Arduino se met alors à attendre pendant un délai qui semble sans fin.  Inutile de modifier la position du potentiomètre:  l'Arduino ne la vérifiera même pas.

À la place, j'ai donc choisi de régler la vitesse de rotation sans utiliser setSpeed:  le moteur tourne d'un step à la fois, et la position du potentiomètre contrôle la durée du délai qui s'écoule entre deux rotations successives.  Le moteur se comporte exactement de la façon souhaitée.

Voici mon sketch

Pour les branchements, du moteur au Arduino, vous suivez les instructions fournies ici pour un L293D ou ici pour un ULN2003.  Il ne reste plus qu'à ajouter un potentiomètre à l'entrée A0.

Yves Pelletier (Twitter: @ElectroAmateur)

Aucun commentaire:

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...