Contrôler des Servomoteurs avec Arduino : Tutoriel Complet

Introduction

Les servomoteurs sont des composants essentiels dans les projets robotiques, permettant un contrôle précis de la position et du mouvement. Que ce soit pour déplacer des bras robotiques, ajuster la direction d’une caméra, ou manipuler des volets, les servomoteurs offrent une grande précision et flexibilité. Dans ce tutoriel, nous allons explorer comment contrôler des servomoteurs avec Arduino, en utilisant à la fois du matériel de base et des exemples de code.

Matériel Nécessaire

  • Carte Arduino (par exemple, Arduino Uno)
  • Servomoteur (par exemple, SG90)
  • Câbles de connexion et breadboard
  • Source d’alimentation externe (optionnelle, pour les servomoteurs plus puissants)

Qu’est-ce qu’un Servomoteur ?

Un servomoteur est un moteur électrique avec un mécanisme de rétroaction qui permet de contrôler précisément la position de son axe. Contrairement aux moteurs DC classiques qui tournent en continu, un servomoteur peut être commandé pour atteindre et maintenir une position spécifique. Ils sont souvent utilisés dans les applications nécessitant un mouvement précis, comme les bras robotiques, les systèmes de contrôle de vol, ou les appareils photo.

Fonctionnement du Servomoteur

Les servomoteurs utilisent un signal de commande appelé PWM (Pulse Width Modulation) pour déterminer la position de leur axe. Ce signal est envoyé périodiquement par Arduino, et la largeur de l’impulsion détermine l’angle de rotation. Par exemple, une impulsion de 1 ms peut positionner le servomoteur à 0°, une impulsion de 1,5 ms à 90°, et une impulsion de 2 ms à 180°.

Connexion du Servomoteur à Arduino

Les servomoteurs ont généralement trois fils :

  1. VCC (Rouge) : Connectez à la broche 5V de l’Arduino.
  2. GND (Noir ou Marron) : Connectez à la broche GND de l’Arduino.
  3. Signal (Orange ou Jaune) : Connectez à une broche PWM de l’Arduino (par exemple, D9).

Code Arduino pour Contrôler un Servomoteur

Arduino offre une bibliothèque intégrée pour contrôler les servomoteurs, appelée Servo.h. Voici un exemple de code pour contrôler un servomoteur simple :

#include <Servo.h>

Servo myServo; // Crée un objet Servo

void setup() {
myServo.attach(9); // Attache le servomoteur à la broche D9
}

void loop() {
myServo.write(0); // Déplace le servomoteur à 0°
delay(1000); // Attend 1 seconde

myServo.write(90); // Déplace le servomoteur à 90°
delay(1000); // Attend 1 seconde

myServo.write(180); // Déplace le servomoteur à 180°
delay(1000); // Attend 1 seconde
}

Explication du Code

  • Servo myServo; : Crée un objet Servo qui permettra de contrôler le servomoteur.
  • myServo.attach(9); : Attache le servomoteur à la broche numérique 9 de l’Arduino.
  • myServo.write(angle); : Commande le servomoteur pour qu’il se déplace à l’angle spécifié (entre 0° et 180°).
  • delay(1000); : Attend 1 seconde avant de passer à la prochaine commande, permettant au servomoteur d’atteindre la position.

Contrôler Plusieurs Servomoteurs

Si vous avez besoin de contrôler plusieurs servomoteurs, vous pouvez créer plusieurs objets Servo et les attacher à différentes broches. Voici un exemple de code pour contrôler deux servomoteurs :

#include <Servo.h>

Servo servo1;
Servo servo2;

void setup() {
servo1.attach(9); // Attache le premier servomoteur à la broche D9
servo2.attach(10); // Attache le deuxième servomoteur à la broche D10
}

void loop() {
servo1.write(45); // Déplace le premier servomoteur à 45°
servo2.write(135); // Déplace le deuxième servomoteur à 135°
delay(1000); // Attend 1 seconde

servo1.write(90); // Déplace le premier servomoteur à 90°
servo2.write(90); // Déplace le deuxième servomoteur à 90°
delay(1000); // Attend 1 seconde
}

Utilisation d’un Potentiomètre pour Contrôler un Servomoteur

Vous pouvez ajouter un contrôle manuel à votre projet en utilisant un potentiomètre pour ajuster l’angle du servomoteur en temps réel. Voici comment :

Connexion du Potentiomètre

  1. Broche 1 : Connectez à 5V.
  2. Broche 2 (curseur) : Connectez à l’entrée analogique A0 de l’Arduino.
  3. Broche 3 : Connectez à GND.

Exemple de Code avec Potentiomètre

#include <Servo.h>

Servo myServo;
int potPin = A0; // Broche de connexion du potentiomètre

void setup() {
myServo.attach(9); // Attache le servomoteur à la broche D9
}

void loop() {
int potValue = analogRead(potPin); // Lit la valeur du potentiomètre
int angle = map(potValue, 0, 1023, 0, 180); // Mappe la valeur à un angle entre 0° et 180°
myServo.write(angle); // Déplace le servomoteur à l'angle calculé
delay(15); // Petit délai pour stabiliser le mouvement
}

Précautions à Prendre

  • Alimentation Externe : Si vous utilisez plusieurs servomoteurs ou des servomoteurs de forte puissance, il est recommandé d’utiliser une alimentation externe pour éviter de surcharger l’Arduino.
  • Limitation des Angles : Certains servomoteurs ne peuvent pas atteindre toute la plage d’angles (0° à 180°). Consultez la documentation de votre servomoteur pour connaître les limites.

Conclusion

Le contrôle des servomoteurs avec Arduino est une compétence fondamentale pour de nombreux projets robotiques et d’automatisation. Grâce à la simplicité de la bibliothèque Servo et aux nombreuses possibilités de connexion et de programmation, vous pouvez facilement intégrer des servomoteurs dans vos projets pour obtenir un contrôle précis du mouvement. Que ce soit pour des applications simples ou complexes, maîtriser le contrôle des servomoteurs vous ouvre la porte à un large éventail de créations.

N’hésitez pas à expérimenter avec différents types de servomoteurs et configurations pour personnaliser vos projets. Si vous avez des questions ou besoin de conseils supplémentaires, je suis là pour vous aider dans votre apprentissage.


Abonnez-vous à notre Newsletter !

Restez à jour avec les dernières tendances, articles et actualités directement dans votre boîte de réception. En vous abonnant à la newsletter de Wordly Fusion, vous recevrez des contenus exclusifs, des recommandations personnalisées, et les nouveautés les plus passionnantes de notre site. Ne manquez aucune mise à jour et soyez toujours informé des sujets qui vous intéressent. Inscrivez-vous dès maintenant pour rejoindre notre communauté !

×