Arduino - MG996R

En este tutorial, vamos a aprender a usar el servomotor de alto torque MG996R con Arduino.

Hardware Requerido

1×Arduino Uno R3
1×Cable USB 2.0 tipo A/B (para PC USB-A)
1×Cable USB 2.0 tipo C/B (para PC USB-C)
1×Servomotor MG996R
1×Cables Puente
1×(Recomendado) Shield de Bloque de Terminales de Tornillo para Arduino Uno
1×(Recomendado) Shield de Protoboard para Arduino Uno
1×(Recomendado) Carcasa para Arduino Uno
1×(Recomendado) Placa Base de Prototipado y Kit de Protoboard para Arduino Uno

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del servomotor

El MG996R es un servomotor de alto par capaz de levantar hasta 15 kg de peso. El motor puede girar su eje de 0° a 180°, proporcionando un control preciso de la posición angular. Para obtener información básica sobre servomotores, consulte el tutorial Arduino - Servo Motor.

Diagrama de pines

El servomotor MG996R utilizado en este ejemplo incluye tres pines:

  • Pin VCC: (típicamente rojo) debe conectarse a VCC (4.8 V – 7.2 V)
  • Pin GND: (típicamente negro o marrón) debe conectarse a GND (0 V)
  • Pin de señal: (típicamente amarillo o naranja) recibe la señal de control PWM desde un pin de Arduino.
Pinout del servomotor MG996R

Diagrama de Cableado

Dado que el MG996R es un servomotor de alto par, consume mucha potencia. No debemos alimentar este motor a través del pin de 5 V del Arduino. En su lugar, debemos usar una fuente de alimentación externa para el servomotor MG996R.

Diagrama de cableado del servo MG996R para Arduino

This image is created using Fritzing. Click to enlarge image

Código de Arduino

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-mg996r */ #include <Servo.h> Servo servo; // create servo object to control a servo void setup() { servo.attach(9); // attaches the servo on pin 9 to the servo objectư servo.write(0); // rotate slowly servo to 0 degrees immediately } void loop() { for (int angle = 0; angle <= 180; angle += 1) { // rotate slowly from 0 degrees to 180 degrees, one by one degree // in steps of 1 degree servo.write(angle); // control servo to go to position in variable 'angle' delay(10); // waits 10ms for the servo to reach the position } for (int angle = 180; angle >= 0; angle -= 1) { // rotate from 180 degrees to 0 degrees, one by one degree servo.write(angle); // control servo to go to position in variable 'angle' delay(10); // waits 10ms for the servo to reach the position } }

Pasos R\u00e1pidos

  • Conecta Arduino al PC mediante un cable USB
  • Abre Arduino IDE, selecciona la placa adecuada y el puerto adecuado
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir en Arduino IDE para subir el código al Arduino
Arduino IDE - Cómo subir código
  • Ver el resultado: el servomotor gira lentamente de 0° a 180° y luego vuelve a girar lentamente de 180° a 0°

Explicación del código

Puede encontrar la explicación en la línea de comentarios del código Arduino anterior.

Cómo controlar la velocidad de un servomotor

Al utilizar las funciones map() y millis(), podemos controlar la velocidad del servomotor de forma suave sin bloquear el resto del código.

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-mg996r */ #include <Servo.h> Servo myServo; unsigned long MOVING_TIME = 3000; // moving time is 3 seconds unsigned long moveStartTime; int startAngle = 30; // 30° int stopAngle = 90; // 90° void setup() { myServo.attach(9); moveStartTime = millis(); // start moving // TODO: other 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: other code }

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!