Arduino - Moteur Servo

Dans ce tutoriel, nous allons apprendre à utiliser le moteur servo avec Arduino. En détail, nous apprendrons :

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×Servo Motor
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du servomoteur

Le servo-moteur est un composant capable de faire tourner sa manette (généralement entre 0° et 180°). Il est utilisé pour contrôler la position angulaire de l'objet.

Brochage

Le servomoteur utilisé dans cet exemple comprend trois broches :

  • Broche VCC : (généralement rouge) doit être connectée à VCC (5V)
  • Broche GND : (généralement noire ou marron) doit être connectée à GND (0V)
  • Broche de signal : (généralement jaune ou orange) reçoit le signal de commande PWM d'une broche Arduino.
Brochage du moteur servo

Comment ça fonctionne

Cette section est consacrée à des connaissances approfondies. NE vous inquiétez pas si vous ne comprenez pas. Ignorez cette section si elle vous surcharge, et revenez un autre jour. Continuez à lire les sections suivantes.

Après avoir connecté la broche VCC et la broche GND à 5V et 0V, respectivement, nous pouvons contrôler le moteur servo en générant un signal PWM approprié sur la broche de signal.

L'angle est déterminé par la largeur du signal PWM.

La fiche technique du servo-moteur nous fournit les paramètres suivants :

  • Période de MLI (PÉRIODE)
  • Largeur minimale de MLI (LARGEUR_MAX)
  • Largeur maximale de MLI (LARGEUR_MIN)

Ces paramètres sont fixés dans la bibliothèque Servo d'Arduino. Nous n'avons PAS besoin de connaître la valeur des paramètres.

L'angle est déterminé comme suit :

  • Si la largeur du PWM = WIDTH_MIN, le moteur servo tourne à 0°.
  • Si la largeur du PWM = WIDTH_MAX, le moteur servo tourne à 180°.
  • Si la largeur du PWM est entre WIDTH_MIN et WIDTH_MAX, le moteur servo tourne à un angle compris entre 0° et 180° proportionnellement.
Comment fonctionne un moteur servo

Arduino - Moteur Servo

Certains pins d'Arduino peuvent être programmés pour générer un signal PWM. Nous pouvons contrôler le moteur servo en connectant la broche de signal du moteur servo à une broche d'Arduino, et en programmant pour générer du PWM sur la broche d'Arduino.

Grâce à la bibliothèque Servo Arduino, contrôler un moteur servo est un jeu d'enfant. Nous n'avons même pas besoin de savoir comment fonctionne un moteur servo. Nous n'avons pas non plus besoin de savoir comment générer un signal PWM. Nous devons juste apprendre à utiliser la bibliothèque.

Diagramme de câblage

Vous pouvez trouver en ligne des schémas de câblage représentant une connexion du pin VCC d'un moteur servo directement au pin 5V de la carte Arduino, comme illustré ci-dessous. Bien que cette méthode puisse fonctionner, elle est fortement déconseillée en raison du risque potentiel d'endommager la carte Arduino.

Schéma de câblage du moteur servo Arduino

This image is created using Fritzing. Click to enlarge image

Au lieu de cela, pour protéger votre carte Arduino, nous recommandons fortement d'utiliser une alimentation externe pour le moteur servo. Le schéma de câblage ci-dessous illustre comment connecter le moteur servo à une source d'alimentation externe.

Schéma de câblage de l'alimentation externe du moteur servo Arduino

This image is created using Fritzing. Click to enlarge image

Veuillez vous assurer de connecter le GND de l'alimentation externe au GND de la carte Arduino. Ne négligez pas cette étape cruciale pour un fonctionnement correct.

Comment programmer un moteur servo

  • Inclure la bibliothèque :
#include <Servo.h>
  • Déclarez un objet Servo :
Servo myServo;

Si vous contrôlez plus d'un moteur servo, vous devez simplement déclarer plusieurs objets Servo :

Servo myServo1; Servo myServo2;
  • Configurez la broche de contrôle de l'Arduino, qui se connecte à la broche de signal du moteur servo. Par exemple, la broche 9 :
myServo.attach(9);
  • Enfin, tournez l'angle du servo-moteur à l'angle désiré. Par exemple, 90° :
myServo.write(90);

Code Arduino

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-servo-motor */ #include <Servo.h> Servo servo; // crée un objet servo pour contrôler un servo void setup() { servo.attach(9); // attache le servo au pin 9 sur l'objet servo servo.write(0); // tourne lentement le servo à 0 degrés immédiatement } void loop() { for (int pos = 0; pos <= 180; pos += 1) { // tourne lentement de 0 degrés à 180 degrés, un degré à la fois // par incréments de 1 degré servo.write(pos); // contrôle le servo pour aller à la position indiquée par la variable 'pos' delay(10); // attend 10ms pour que le servo atteigne la position } for (int pos = 180; pos >= 0; pos -= 1) { // tourne de 180 degrés à 0 degrés, un degré à la fois servo.write(pos); // contrôle le servo pour aller à la position indiquée par la variable 'pos' delay(10); // attend 10ms pour que le servo atteigne la position } }

Étapes rapides

  • Connectez l'Arduino au PC via le câble USB
  • Ouvrez l'Arduino IDE, sélectionnez la carte et le port appropriés
  • Copiez le code ci-dessus et ouvrez-le avec l'Arduino IDE
  • Cliquez sur le bouton Upload dans l'Arduino IDE pour téléverser le code sur l'Arduino
IDE Arduino - Comment télécharger du code
  • Voyez le résultat : le moteur servo tourne lentement de 0 à 180° puis revient lentement de 180 à 0°.

Explication du code

Vous pouvez trouver l'explication dans la ligne de commentaires du code Arduino ci-dessus.

Comment contrôler la vitesse du moteur servo

En utilisant les fonctions map() et millis(), nous pouvons contrôler la vitesse du moteur servo de manière fluide sans bloquer d'autres codes.

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-servo-motor */ #include <Servo.h> Servo myServo; unsigned long MOVING_TIME = 3000; // le temps de déplacement est de 3 secondes unsigned long moveStartTime; int startAngle = 30; // 30° int stopAngle = 90; // 90° void setup() { myServo.attach(9); moveStartTime = millis(); // commencer le déplacement // TODO: autre code } void loop() { unsigned long progress = millis() - moveStartTime; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, startAngle, stopAngle); myServo.write(angle); } // TODO: autre code }

Vidéo

Défiez-vous

Utilisez le servomoteur pour réaliser l'un des projets suivants :

Connaissances supplémentaires

  • La bibliothèque Servo prend en charge jusqu'à 12 moteurs sur Arduino UNO et 48 sur l'Arduino Mega.
  • L'alimentation de la broche 5V de l'Arduino peut ne pas être suffisante pour le moteur servo dans l'un des cas suivants :
    • Utilisation d'un moteur servo à couple élevé, capable de porter un objet lourd.
    • Utilisation de nombreux moteurs servo.

    Dans ces cas, nous pourrions avoir besoin de fournir une source d'alimentation supplémentaire pour les moteurs servo.

    Moteur Servo Arduino à Puissance Supplémentaire

    This image is created using Fritzing. Click to enlarge image

    Comme nous pouvons le voir dans le schéma ci-dessus, la broche VCC du moteur servo ne se connecte PAS à la broche 5V de l'Arduino. Elle se connecte à la broche positive d'une source d'alimentation externe.

    Veuillez noter que :

    • Ne connectez pas la broche positive de la source d'alimentation supplémentaire à la broche 5V de l'Arduino.
    • Vous devez connecter la broche négative de la source d'alimentation supplémentaire à la broche GND de l'Arduino.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!