Servomoteur Standard vs Servomoteur à Rotation Continue avec Arduino

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)
Montage carte Arduino UNO et Servomoteur MG995, MG996

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 <Servo.h> // 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 <Servo.h> // 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.

Bonjour ! 🌟 Rejoignez notre newsletter pour ne rien manquer.

Recevez nos offres spéciales et les derniers articles directement dans votre boîte de réception

Nous ne faisons pas de spam, promis ! Consultez notre politique de confidentialité pour en savoir plus.

Panier
Retour en haut

Projet sur mesure