Arduino - MG996R

Dans ce tutoriel, nous allons apprendre à utiliser le servo moteur à couple élevé MG996R avec Arduino.

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×MG996R 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.

MG996R Servo Motor

Le moteur servo MG996R est un moteur servo à couple élevé capable de soulever jusqu'à 15 kg de poids. Le moteur peut faire tourner sa poignée de 0° à 180°, offrant un contrôle précis de la position angulaire. Pour des informations de base sur les moteurs servo, veuillez consulter le tutoriel Arduino - Moteur Servo.

Brochage

Le moteur servo MG996R utilisé dans cet exemple comprend trois broches :

  • Broche VCC : (généralement rouge) doit être connectée à VCC (4,8V – 7,2V)
  • 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 d'Arduino.
Brochage du servomoteur MG996R

Diagramme de câblage

Étant donné que le MG996R est un moteur servo à couple élevé, il consomme beaucoup de puissance. Nous ne devons pas alimenter ce moteur via la broche 5v de l'Arduino. Au lieu de cela, nous devons utiliser une alimentation externe pour le moteur servo MG996R.

Schéma de câblage du servo moteur Arduino MG996R

This image is created using Fritzing. Click to enlarge image

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-mg996r */ #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 à l'objet servo servo.write(0); // fait tourner doucement le servo à 0 degrés immédiatement } void loop() { for (int angle = 0; angle <= 180; angle += 1) { // fait tourner doucement de 0 degrés à 180 degrés, un degré à la fois // par pas de 1 degré servo.write(angle); // commande au servo d'aller à la position dans la variable 'angle' delay(10); // attend 10ms pour que le servo atteigne la position } for (int angle = 180; angle >= 0; angle -= 1) { // tourne de 180 degrés à 0 degrés, un degré à la fois servo.write(angle); // commande au servo d'aller à la position dans la variable 'angle' 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'IDE Arduino, sélectionnez la bonne carte et le bon port
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur l'Arduino
IDE Arduino - Comment télécharger du code
  • Voyez le résultat : le servo-moteur tourne lentement de 0 à 180° puis retourne 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-mg996r */ #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 à bouger // 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

※ 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!