Funcionamiento de servomotor con Arduino
En este tutorial veremos como conectar y hacer funcionar un servomotor Tower pro MG90S de modelismo.
Antes de empezar con este tutorial veremos que es un servomotor de modelismo.
Un servo motor de modelismo o mas conocido como servo, es un dispositivo actuador que tiene la capacidad de ubicarse en cualquier posicion. Esta formado por un motor de corriente continua, una caja reductora de varios engranajes (en este caso la caja reductora es de engranajes de metal), y un circuito de control, y su margen de funcionamiento generalmente es de menos de una vuelta completa.
Este servo (MG90S) puede rotar aproximadamente 180 grados (90 en cada dirección), y funciona igual que
tipos estándar pero más chico.
Las especificaciones técnicas del MG90S son las siguientes:
• Voltaje de operación: 4,8 a 6V
• Torque: 1.8kg/cm (4.8v) – 2.2kg/cm (6v)
• velocidad de giro: 0.1 seg/60º (4,8v) – 0.08 seg/60º (6v)
• Rango rotacional: 180º
• Tren de engranajes: Metalico
• Longitud de cable de alimentación y datos: 25cm aprox.
Conexión de servomotor con arduino UNO.
para empezar veremos como conectar el servomotor MG90S con arduino UNO.
En la siguiente imagen mostraremos que cable corresponde a la alimentación y cual a la señal PWM.
Conectaremos el cable naranja que es el de la señal PWM al pin 10 de nuestra arduino UNO.
El cable Rojo que es el de la alimentación (Vcc) lo conectaremos al pin de 5V de nuestra ardunimo UNO.
Y por ultimo el cable marrón que es GND lo conectaremos en el pin GND de nuestra arduino UNO.
Ahora veremos como escribir el código para programar nuestra arduino para hacer funcionar un servomotor en este caso sera el MG90S.
Escribiremos un código para que el servomotor avance de 0º a 10º y de 10º a 20º (de 10 en 10 grados) y asi hasta llegar a 180º.
// Incluiremos la librería para poder controlar el servomotor #include <Servo.h> // Declaramos la variable para controlar el servomotor Servo servoMotor; void setup() { // Iniciamos el monitor serie para mostrar el resultado Serial.begin(9600); // Iniciamos el servo para que empiece a trabajar con el pin 10 servoMotor.attach(10); } void loop() { // Desplazamos a la posición 0º servoMotor.write(0); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 10º servoMotor.write(10); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 20º servoMotor.write(20); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 30º servoMotor.write(30); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 40º servoMotor.write(40); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 50º servoMotor.write(50); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 60º servoMotor.write(60); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 70º servoMotor.write(70); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 80º servoMotor.write(80); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 90º servoMotor.write(90); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 100º servoMotor.write(100); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 110º servoMotor.write(110); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 120º servoMotor.write(120); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 130º servoMotor.write(130); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 140º servoMotor.write(140); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 150º servoMotor.write(150); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 160º servoMotor.write(160); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 170º servoMotor.write(170); // Esperamos 1 segundo delay(1000); // Desplazamos a la posición 180º servoMotor.write(180); // Esperamos 1 segundo delay(1000); }
Escribiremos otro código en donde el servomotor se moverá de grado a grado, desde 0º hasta los 180º, y al llegar a los 180º volverá de grado en grado hasta llegar a 0º.
// Incluímos la librería para el servomotor #include <Servo.h> // Declaramos la variable para controlar el servomotor Servo servoMotor; void setup() { // Iniciamos el monitor serie para mostrar el resultado Serial.begin(9600); // Iniciamos el servomotor para trabajar con el pin 10 servoMotor.attach(10); // Inicializamos al ángulo 0 el servomotor servoMotor.write(0); } void loop() { // tendremos dos bucles uno para mover en sentido positivo y otro en sentido negativo // sentido positivo for (int i = 0; i <= 180; i++) { // Desplazamos al ángulo correspondiente servoMotor.write(i); // Hacemos una pausa de 25ms delay(25); } // sentido negativo for (int i = 179; i > 0; i--) { // Desplazamos al ángulo correspondiente servoMotor.write(i); // Hacemos una pausa de 25ms delay(25); } }
Así es como queda funcionando nuestro servomotor con arduino UNO.
Hasta la próxima! y no olviden compartir en las redes sociales…