Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. micro:bit
  3. Moteurs et robots
Extrait - micro:bit Programmez la carte avec MakeCode et MicroPython
Extraits du livre
micro:bit Programmez la carte avec MakeCode et MicroPython
1 avis
Revenir à la page d'achat du livre

Moteurs et robots

Moteurs à courant continu

Ce type de moteur est très courant, vous pouvez facilement en récupérer sur un appareil hors d’usage. Il suffit simplement de savoir sous quelle tension il fonctionne. Souvent, c’est écrit dessus, sinon regardez sa source d’alimentation (piles ou batterie).

images/06-01.png

Exemple de moteur à courant continu

Le branchement est très simple : il n’a que deux fils, il suffit donc de brancher le (+) à une borne et le (-) à l’autre, pour qu’il tourne dans un sens. Si vous inversez les deux bornes, il tourne dans l’autre sens. Et si vous baissez la tension de l’alimentation, il tourne moins vite.

Attention, vous ne devez jamais connecter directement un moteur à un port du micro:bit, car la puissance de sortie est limitée et les moteurs génèrent des courants parasites qui risqueraient d’endommager la carte.

1. Utilisation d’un transistor

Pour protéger le micro:bit, utilisez un transistor de type NPN (comme le 2N222A, que nous avons déjà utilisé avec le buzzer) et une diode Schottky (de roue libre), pour protéger le transistor d’un retour de courant. Le port du micro:bit doit aussi être protégé, avec une résistance de 1 kΩ.

Le micro:bit et le moteur possèdent des alimentations séparées, le transistor sert seulement d’interrupteur. Ce branchement permet au micro:bit de contrôler sans risque un moteur d’une tension supérieure à 3,3 V. Cependant, le moteur ne peut tourner que dans un seul sens.

a. Branchement

images/06-02.png

Branchement d’un moteur avec un transistor

b. Programmation

En mode numérique, vous ne pourrez pas contrôler sa vitesse, car vous n’aurez que deux possibilités (0 ou 1), soit le moteur est à l’arrêt, soit il tourne à la vitesse maximum. Par contre, en mode analogique, vous avez le choix entre 1 024 vitesses différentes (de 0 à 1 023). La régulation de la vitesse du moteur fonctionne comme avec une LED (cf. chapitre Entrées et sorties - Actionneurs - LED (sortie analogique)).

Dans cet exemple, vous pouvez augmenter la vitesse avec le bouton B et la réduire avec le bouton A.

MakeCode

images/06-03.png

Contrôle de la vitesse du moteur

MicroPython

# MoteurTransistor ...

Servomoteur

Contrairement au moteur à courant continu, qui réagit simplement en fonction de son alimentation (vitesse et sens de rotation), le servomoteur est plus évolué. Il interprète les instructions envoyées par le micro:bit sous la forme d’impulsions électriques.

Le servomoteur tourne lentement, mais il est relativement puissant, car il contient un système d’engrenages qui démultiplie sa force.

Le servomoteur classique n’est pas capable d’effectuer une rotation de plus de 180° (nous verrons plus tard que ce n’est toujours pas le cas). Mais il est très précis ; il est en effet capable de se positionner exactement à l’angle choisi par l’utilisateur.

images/06-13.png

Servomoteur classique (SG90)

1. Branchement simple

Il n’y a pas de précautions particulières pour connecter le micro:bit au servomoteur mais il nécessite une alimentation séparée (environ 5 V).

Par convention, le fil rouge est toujours relié à la borne (+), le fil noir ou marron à la borne GND et le fil jaune aux ports du microcontrôleur (micro:bit).

a. Branchement

images/06-14.png

Branchement du servomoteur

b. Programmation

Pour faire tourner le servomoteur, il suffit d’indiquer la position souhaitée, en degrés (entre 0 et 180°). Vous pouvez augmenter ou réduire l’angle en utilisant les boutons A et B.

MakeCode

Utilisez le bloc régler la position servo broche ... à ... disponible dans le volet Broches (dans la catégorie Avancé).

images/06-15.png

Contrôle d’un servomoteur

MicroPython...

Moteurs et servomoteurs en même temps

Certaines cartes d’extension sont polyvalentes, elles peuvent contrôler à la fois les moteurs classiques et les servomoteurs.

1. Driver Expansion Board

La carte d’extension Driver Expansion Board permet de piloter jusqu’à quatre moteurs à courant continu et jusqu’à huit servomoteurs. Bien sûr, il faudra, dans ce cas, ajouter une alimentation suffisamment puissante.

images/06-20.png

Driver Expansion Board (www.dfrobot.com)

a. Branchement

Branchez, par exemple, un moteur à courant continu aux bornes M1 et un servomoteur aux bornes S1.

images/06-21.png

Branchement des moteurs

b. Programmation

MakeCode

Le plus simple est d’installer la bibliothèque DF-Driver. Pour cela, sélectionnez Avancé puis Extensions et tapez https://github.com/DFRobot/pxt-motor dans la barre de recherche. Cliquez ensuite sur la nouvelle bibliothèque pour l’installer.

images/06-22.png

Sélection de la bibliothèque DF-Driver

Le programme suivant permet de modifier la vitesse et le sens de rotation du moteur en appuyant sur les boutons A et B.

images/06-23.png

Contrôle d’un moteur à courant continu

Pour contrôler le servomoteur, indiquez simplement l’angle souhaité dans le bloc Servo... degree... 

images/06-24.png

Contrôle d’un servomoteur

MicroPython

Malheureusement, DFrobot n’a pas encore développé de bibliothèque pour contrôler en MicroPython la carte d’extension. N’hésitez pas à consulter de temps en temps le wiki de DFrobot, pour savoir si la situation a évolué : https://wiki.dfrobot.com/Micro_bit_Driver_Expansion_Board_SKU_DFR0548

2. Crickit

Le Crickit est une carte d’extension très complète (fabriquée par Adafruit). Elle permet de piloter les moteurs à courant continu, mais également les servomoteurs. Elle offre aussi d’autres fonctions, comme la gestion de haut-parleur, de LED Neopixel, huit entrées/sorties, quatre entrées tactiles et quatre sorties pour relais ou solénoïdes. Elle est disponible pour les cartes Circuit Playground Express, Feather, micro:bit et Raspberry Pi (sous forme de Hat). Chaque version possède un connecteur adapté à la carte.

images/06-25.png

Crickit, version micro:bit...

Robots

1. MeArm

Le bras robot MeArm existe en plusieurs versions, dont une spécialement adaptée au micro:bit.

images/06-35.png

Le bras robot MeArm (www.kitronik.co.uk)

Vous pouvez imprimer vous-même la structure du robot, puisque les fichiers nécessaires sont sur Thingiverse : www.thingiverse.com/thing:1550041

Mais le kit proposé par Kitronik comprend :

  • 4 servomoteurs MG90S (engrenages métalliques),

  • la carte de contrôle des moteurs,

  • le module de pilotage (avec 2 joysticks), où s’insère le micro:bit,

  • le boîtier d’alimentation du robot (pour 4 piles AA),

  • la visserie nécessaire (et même une petite clé Allen).

images/06-36.png

Les pièces du kit MeArm

a. Montage

Les instructions de montage sont disponibles en PDF : https://learn.mime.co.uk/assets/mearm.pdf

ou en vidéo, sur YouTube : www.youtube.com/watch?v=sPdbs9b5udQ&feature=emb_logo

Prenez le temps de bien repérer les pièces et le sens de montage, cela évite ensuite d’avoir à démonter et remonter une partie du robot en cas d’erreur. Repérez également les cornes (petits trucs en plastique qui se fixent sur l’axe) utilisées, ainsi que le sens de branchement des moteurs.

images/06-37.png

Sens de branchement des servomoteurs

b. Alimentation

Le robot est alimenté depuis la carte de contrôle (et non depuis le micro:bit). Vous avez le choix entre la prise micro-USB (5 V) ou la prise jack (6 V). L’alimentation doit être suffisamment puissante. Utilisez des piles neuves ou un bon transformateur, comme, par exemple, un chargeur de téléphone de 2 A (2 ampères). Sinon vous risquez de rencontrer des coupures et des redémarrages intempestifs (rendant le robot imprévisible).

images/06-38.png

Alimentation du robot

c. Fonctionnement

Chaque joystick possède deux axes (x et y). Ils se comportent comme des potentiomètres. Leurs résistances varient suivant la position de la manette. Il suffit donc d’alimenter une borne du joystick et de mesurer la valeur (analogique) retournée à l’autre borne pour en déduire la position du "champignon". Voilà ce que cela donne :

Port micro:bit

Valeurs mini/maxi

Valeurs au repos

Joystick 1 Axe x

P0

de 0 à 1024

de 510 à 515

Joystick 1 Axe y

P1

de 0 à 1024

de 510 à 515

Joystick 2 Axe x

P2

de 0 à 1024...