Sommaire
Dans cet article, nous allons explorer la gestion d’un servomoteur classique et d’un servomoteur à rotation continue à l’aide d’une carte Arduino UNO. Que vous utilisiez un MG995, MG996R ou un SG90, ce tutoriel vous guidera à travers leurs différences, leurs applications et leur programmation.
Présentation des servomoteurs
Servomoteur Classique
Les servomoteurs comme le MG995, MG996R et le SG90 sont des moteurs contrôlables en position angulaire. Ils sont pilotés par un signal PWM (modulation de largeur d’impulsion), qui régule leur position sur un angle compris entre 0 et 180 degrés. Certains modèles peuvent même atteindre 270 degrés.
Applications du servomoteur classique :
- Bras robotisé
- Contrôle de volets
- Systèmes mécaniques nécessitant un contrôle angulaire précis
Nous entrerons dans les détails de leur programmation dans la section dédiée.
Servomoteur à Rotation Continue
Le servomoteur à rotation continue, également appelé servomoteur 360 degrés, se distingue par sa capacité à effectuer des rotations illimitées dans les deux sens. Contrairement aux servomoteurs classiques, ce modèle contrôle non pas sa position, mais sa vitesse et sa direction via un signal PWM. Le modèle MG996R existe également dans cette version.
Applications du servomoteur à rotation continue :
- Roues motrices pour robots
- Mécanismes de rotation constante (ex. : convoyeurs, systèmes d’entraînement)
Le fonctionnement est simple :
- 0 à 89 : rotation dans le sens inverse des aiguilles d’une montre
- 91 à 180 : rotation dans le sens des aiguilles d’une montre
- 90 : arrêt du moteur Plus la valeur est proche de 180 ou 0, plus la vitesse est élevée.
Nous verrons cela dans la partie programmation.
La connectique d’un servomoteur
Tous les servomoteurs sont munis de trois fils :
- Noir ou Marron : GND
- Rouge : VCC
- Orange ou Blanc : Signal PWM
Ce signal PWM est essentiel, car il permet de réguler la position ou la rotation du moteur.
Le Montage
Le montage avec une Arduino UNO est simple. Voici une vue rapide du câblage pour un MG995 ou MG996R :
- Reliez le GND au GND de l’Arduino
- Connectez le fil VCC au +5V
- Le fil Signal doit être connecté à une broche PWM (par exemple, la broche 3)
La Programmation Arduino
Voyons maintenant comment programmer l’Arduino pour contrôler à la fois un servomoteur classique et un servomoteur à rotation continue. Nous partirons de la position centrale 90 degrés (servomoteur classique) ou arrêt complet (servomoteur à rotation continue).
Servomoteur MG996R ou MG995 Classique
Voici un exemple de programme pour contrôler un servomoteur classique :
/* Programme: Test d'un servomoteur classique 180 degrés
* Auteur: Christian Joseph
* Date: 17/09/2024
* Help: contact@atelierdelarobotique.fr
*/
#include // Librairie de gestion des servomoteurs
Servo monServo; // Nom du servomoteur
void setup(){
monServo.attach(3); // Broche de contrôle du servomoteur
delay(1000);
monServo.write(90); // Position centrale à 90 degrés
delay(4000); // Délai de 4 secondes
}
void loop(){
monServo.write(150); // Rotation à 150 degrés
delay(4000); // Délai de 4 secondes
monServo.write(90); // Retour à 90 degrés
delay(4000); // Délai de 4 secondes
monServo.write(50); // Rotation à 50 degrés
delay(4000); // Délai de 4 secondes
monServo.write(90); // Retour à 90 degrés
delay(3000); // Délai de 3 secondes
monServo.write(120); // Rotation à 120 degrés
delay(2000); // Délai de 2 secondes
monServo.write(90); // Retour à 90 degrés
delay(3000); // Délai de 3 secondes
monServo.write(30); // Rotation à 30 degrés
delay(3500); // Délai de 3,5 secondes
}
Ce programme permet de contrôler la position angulaire du servomoteur, variant entre 0 et 180 degrés. Lors de la modification de la position d’un servomoteur, il est essentiel d’observer un délai entre les déplacements pour assurer un bon mouvement mécanique.
Note pour un servomoteur 270° :
Pour un servomoteur 270°, il faut adapter la valeur dans le code, car il ne comprend que des données comprises entre 0 et 180. Par exemple, pour un angle de 60 degrés, il faut utiliser cette formule :
Angle = (180 * 60) / 270 = 40.
Ainsi, dans le code, il faut écrire monServo.write(40)
pour positionner le moteur à 60 degrés.
Servomoteur MG996R à Rotation Continue
Le programme pour un servomoteur à rotation continue est similaire. Cependant, au lieu de contrôler la position, nous gérons la vitesse et la direction.
/* Programme: Test d'un servomoteur à rotation continue 360 degrés
* Auteur: Christian Joseph
* Date: 17/09/2024
* Help: contact@atelierdelarobotique.fr
*/
#include // Librairie de gestion des servomoteurs
Servo mot360; // Nom du servomoteur à rotation continue
void setup() {
mot360.attach(3); // Broche de contrôle du servomoteur
delay(1000);
mot360.write(90); // Moteur à l'arrêt
delay(4000); // Délai de 4 secondes
}
void loop() {
mot360.write(150); // Rotation dans le sens des aiguilles d'une montre
delay(4000); // Délai de 4 secondes
mot360.write(90); // Moteur à l'arrêt
delay(4000); // Délai de 4 secondes
mot360.write(50); // Rotation dans le sens inverse
delay(4000); // Délai de 4 secondes
mot360.write(90); // Moteur à l'arrêt
delay(4000); // Délai de 4 secondes
mot360.write(120); // Rotation dans le sens des aiguilles d'une montre
delay(2000); // Délai de 2 secondes
mot360.write(90); // Moteur à l'arrêt
delay(3000); // Délai de 3 secondes
mot360.write(30); // Rotation dans le sens inverse
delay(3500); // Délai de 3,5 secondes
}
Dans ce code, la valeur 90 correspond à un arrêt complet, tandis que 150 entraîne une rotation dans le sens des aiguilles d’une montre, et 50 dans le sens contraire.
Vidéo Démonstrative
Une vidéo accompagnant ce tutoriel vous montrera la mise en pratique de ces programmes avec une carte Arduino et différents servomoteurs.
Cet article vous permet de comprendre les différences entre un servomoteur classique et un servomoteur à rotation continue, ainsi que leur programmation sous Arduino. Si vous souhaitez approfondir un point ou avez besoin d’aide supplémentaire, n’hésitez pas à nous contacter à contact@atelierdelarobotique.fr.