Pages d'index

Pages d'index

dimanche 21 juin 2020

Micro:bit et moteur pas à pas

Voyons comment ont peut contrôler un moteur pas à pas au moyen d'une carte micro:bit.



Comme le montre la vidéo ci-dessous, les deux boutons du micro:bit seront utilisés pour modifier le mouvement du moteur (le bouton A inverse le sens de rotation, alors que le bouton B modifie la vitesse de rotation du moteur).  De plus, un symbole illustrant le dernier changement demandé (horaire, antihoraire, plus vite ou moins vite) est affiché sur la matrice de LEDs du mirco:bit.




Moteur pas à pas

J'ai utilisé un moteur pas à pas bipolaire qui avait été retiré d'une vieille imprimante (les lecteurs de CD, de CD-ROMs et de DVD sont également d'excellentes sources de petits moteurs pas à pas). Le moteur est constitué de deux bobinages et comporte donc 4 connecteurs.  Il effectue une suite de petites rotations à la condition qu'on inverse périodiquement le sens du courant dans les bobines. Pour que le moteur puisse tourner, il faut donc que la tension de chaque fil puisse être périodiquement interrompue, puis rétablie.



Pilote de moteur: le L9110S

Même si c'est le micro:bit qui contrôlera le moteur, il est hors de question de brancher directement le moteur aux sorties du micro:bit, car le courant nécessaire pour faire tourner le moteur est beaucoup plus intense que ce que peut supporter une sortie du micro:bit.

Nous avons donc besoin d'un circuit spécialement conçu pour servir d'intermédiaire entre le micro:bit et le moteur: les signaux de 3,3 V générés par les sorties du micro:bit seront transformés en une tension mieux adaptée à votre moteur (peut-être 5 V, 9 V ou 12 V, ça dépend du moteur), et le courant circulant dans les sorties du micro:bit demeurera minuscule même si un courant beaucoup plus intense circulera dans les bobinages du moteur.

Pour cette expérience, j'ai utilisé comme pilote de moteur un module L9110S. Si vous avez déjà un autre modèle (comme par exemple un L293D ou un L295N), ça fera très bien l'affaire aussi (les connexions sont très similaires).

Connexions

Puisque quatre sorties programmables sont nécessaires pour faire tourner le moteur, vous devez avoir accès à au moins une des minuscules sorties ultra-étroites. La méthode conventionnelle consiste à utiliser un module d'extension, et j'ai déjà présenté ma méthode personnelle , moins orthodoxe. J'ai choisi les broches P0, P1, P2 et P8, en prenant soin d'éviter les broches associées à la matrice de LEDs.

Vous devez utiliser une alimentation continue pour le moteur: ça ne doit pas être la sortie 3,3 V de votre carte micro:bit. Une tension d'environ 5 V fait souvent l'affaire, mais ça dépend de votre moteur.
  • Broche B -IA du L9110S: broche P0 du micro:bit
  • Broche B -IB du L9110S: broche P1 du micro:bit
  • Broche GND du L9110S: broche GND du micro:bit et borne négative de l'alimentation du moteur
  • Broche VCC du L9110S: borne positive de l'alimentation du moteur
  • Broche A - IA du L9110S: broche P2 du micro:bit
  • Broche A - IB du L9110S: broche P8 du micro:bit
Les 4 fils du moteur sont branchés aux borniers à vis du module L9110S. Au moyen d'un multimètre, il est facile de repérer les connecteurs qui partagent la même bobine. Si le moteur vibre au lieu de tourner, inversez deux fils.

Programmation

J'ai fait le même programme dans MakeCode et dans l'éditeur Python en ligne.

La rotation du moteur est constituée d'une succession de 4 phases; chaque nouvelle phase consiste à inverser le sens du courant dans un des deux bobinages du moteur.
  • Phase 1: P0 à 1, P1 à 0, P2  à 1, P8 à 0
  • Phase 2: P0 à 0, P1 à 1, P2  à 1, P8 à 0 
  • Phase 3: P0 à 0, P1 à 1, P2  à 0, P8 à 1
  • Phase 4: P0 à 1, P1 à 0, P2  à 0, P8 à 1
Le bouton A contrôle le sens de rotation du moteur: en marche avant, les phases s'exécutent dans l'ordre phase 1 - phase 2 - phase 3 - phase 4, alors qu'en marche arrière c'est le contraire: phase 4 - phase 3 - phase 2 - phase 1.

Le bouton B contrôle la vitesse de rotation: pause de 10 ms entre chaque phase pour une rotation rapide, pause de 200 ms entre chaque phase pour une rotation lente.

Programme dans MakeCode



Programme Micropython

Et voici celui qui j'ai écrit en microPython.

-


-

Lire aussi:

Yves Pelletier (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire