Aller au contenu principal

Animer avec un servomoteur

InformatiqueTechnologieSTM32 IoT NodeMakeCode
ProjetDuréeDifficultéÂge
Let's STEAM25 minutesIntermédiaire11-15 ans

Matériel

  • 1 carte programmable "STM32 IoT Node Board"
  • 1 câble USB Micro-B
  • 1 mini-servo SG-90 (1,6 kg)
  • Câbles de connexion

Prérequis

Télécharger en PDF
Servomoteurs

De quoi parle-t-on ?

Le servomoteur est un moteur pilotable en position. Il permet de conserver un angle précisément. Il convient pour contrôler un système dont l'angle peut changer au cours du fonctionnement et doit maintenir cette position.

Objectifs d'apprentissage

  • Mettre un objet en mouvement

Introduction

Un servomoteur est un moteur doté d'un ensemble de systèmes de contrôle automatique, qui se compose d'un moteur ordinaire à courant continu (moteur électrique rotatif qui convertit l'énergie électrique en énergie mécanique), d'un réducteur, d'un potentiomètre (diviseur de tension utilisé pour mesurer le potentiel ou la tension électrique) et d'un circuit de contrôle. Il peut définir l'angle de rotation de l'arbre de sortie en envoyant des signaux. En général, un servomoteur a un angle de rotation maximal (par exemple, 180 degrés).

Les servomoteurs sont commandés par l'intermédiaire d'un câble électrique à trois fils qui permet d'alimenter le moteur et de lui transmettre des consignes de position sous forme d'un signal codé en largeur d'impulsion, plus communément appelé PWM. Cela signifie que c'est la durée des impulsions qui détermine l'angle absolu de l'axe de sortie et donc la position du bras de commande du servomoteur. Le cycle d'un signal de référence servomoteur est de 20 ms. Sur le servomoteur proposé, la position du bras varie de 0 à 180°, pour des largeurs d'impulsion allant de 1 à 2 ms (respectivement).

Ressources : https://en.wikipedia.org/wiki/DC_motor, https://en.wikipedia.org/wiki/Potentiometer


Étape 1 - Construire

Schéma de câblage du servomoteur

1. Connecter le servomoteur à la carte

Il y a plusieurs façons de connecter un servomoteur à votre carte. Vous pouvez utiliser n'importe quelle broche de sortie analogique (broches PWM) pour connecter la broche de contrôle. Dans notre exemple, nous allons utiliser la broche D4. Le servomoteur sera connecté comme suit :

  • Noir pour GND
  • Rouge pour V+ (3V3)
  • Orange pour SIG (D4)

2. Connecter la carte à l'ordinateur

Avec votre câble USB, connectez la carte à votre ordinateur en utilisant le connecteur micro-USB ST-LINK (sur le coin en haut à droite de la carte). Si tout se passe bien, vous devriez voir apparaître sur votre ordinateur un nouveau lecteur appelé DIS_L4IOT. Ce lecteur est utilisé pour programmer la carte en copiant simplement un fichier binaire.

3. Ouvrir MakeCode

Allez dans l'éditeur MakeCode de Let's STEAM. Sur la page d'accueil, créez un nouveau projet en cliquant sur le bouton "Nouveau projet". Donnez à votre projet un nom plus expressif que "Sans titre" et lancez votre éditeur.

Ressource : makecode.lets-steam.eu

MakeCode Editor servomoteur

4. Programmer la carte

Dans l'éditeur JavaScript de MakeCode, copiez/collez le code disponible dans la section "Programmer" ci-dessous.

Avant d'essayer ce programme sur la carte, vous pouvez l'essayer directement dans le simulateur. Si vous changez les valeurs 0 et 180, vous verrez directement le résultat.

Si ce n'est pas déjà fait, pensez à donner un nom à votre projet et cliquez sur le bouton "Télécharger". Copiez le fichier binaire sur le lecteur DIS_L4IOT et attendez que la carte finisse de clignoter — votre servomoteur commencera à bouger !

ServomoteurDétails servomoteur

5. Exécuter, modifier, jouer

Votre programme s'exécutera automatiquement chaque fois que vous le sauvegarderez ou que vous réinitialiserez votre carte (appuyez sur le bouton intitulé RESET).

Si tout fonctionne bien, votre servomoteur va commencer à bouger. Essayez de comprendre l'exemple et commencez à le modifier en changeant la période entre les deux mouvements.


Étape 2 - Programmer

// aller de 0 à 180 degrés
forever(function () {
// dire au servomoteur d'aller à la position 180 degrés
pins.D4.servoWrite(180)
// attendre que le servomoteur atteigne la position
pause(1000)
// dire au servomoteur d'aller à la position 0 degré
pins.D4.servoWrite(0)
// attendre que le servomoteur atteigne la position
pause(1000)
})

Comment cela fonctionne-t-il ?

Cet exemple est assez simple puisqu'il s'agit du classique clignotement adapté à un servomoteur.

L'instruction principale est pins.D4.servoWrite(XXX). Cette instruction demande au servomoteur de tourner jusqu'à un angle de XXX degrés (comme défini par vos besoins spécifiques en fonction du projet que vous développez).

Pour passer d'une position à l'autre, le servomoteur prend un certain temps. Il faut donc toujours ajouter un délai avant de commencer un autre mouvement.

Ce programme ne fait que balayer de gauche à droite sans s'arrêter !

Servomoteur vs moteur à courant continu

Par rapport à un moteur à courant continu ordinaire, un servomoteur ne tourne que dans une certaine plage d'angles, alors qu'un moteur à courant continu ordinaire (CC) tourne sur un cercle complet.

Un servomoteur ne peut pas tourner sur un cercle. Un moteur CC ordinaire ne peut pas fournir de retour sur l'angle de rotation, mais un servomoteur peut le faire. Leurs utilisations sont donc différentes.

Les moteurs CC ordinaires s'utilisent comme source d'énergie rotative, tandis que les servomoteurs s'utilisent pour donner un certain angle à un objet qu'ils contrôlent, comme faire bouger une articulation de robot.


Étape 3 - Améliorer

  1. Essayez de réduire autant que possible la valeur de la pause pour supprimer tout arrêt dans le mouvement.
  2. Ajoutez des instructions pour faire un arrêt court en position médiane. Adaptez le délai de la pause pour être sûr que l'arrêt soit très court.
  3. Transformez ce programme pour réaliser une minuterie avec un servomoteur. À chaque pas, déplacez le servo de 3 degrés. Adaptez le délai de sorte que chaque étape prenne approximativement 1 s.
  4. Démarrer le mouvement de balayage uniquement lorsque le bouton USER a été enfoncé.

Aller plus loin


Cette fiche fait partie du projet Let's STEAM, financé par le programme Erasmus+. Contenu sous licence CC BY-SA 4.0.