Funcionamiento de un servo motor con Arduino

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…

 

 

 

Bookmark the permalink.

Deja un comentario