Servo: cómo usar el servomotor con Arduino

servo, servomotor

Si quieres usar un servomotor, o servo, con Arduino, en este artículo podrás aprender lo necesario para comenzar. Ya vimos en otros artículos lo necesario para usar motores eléctricos, motores paso a paso, y también otros conceptos necesarios para comprender el funcionamiento de este tipo de dispositivos, como es el artículo sobre PWM.

Ahora, podrás añadir otro nuevo componente electrónico a la lista de dispositivos analizados y que puedes ir integrando a tus proyectos DIY para agregar nuevas funcionalidades.

¿Qué es un servo?

servo

Un servomotor, o simplemente servo, es un motor electrónico con similitudes con los motores de CC convencionales, pero con algunos elementos que los hacen especiales. En este caso, tiene la capacidad de mantener una posición que se indique, algo que los motores eléctricos no permiten.

Por otro lado, el servo también puede controlar de forma precisa la velocidad de giro, gracias a una serie de engranajes internos y sistema que posibilita un control mucho mejor de lo que podría hacerse en otros tipos de motores.

Esas prestaciones lo hacen especialmente interesante para aplicaciones de robótica, o para otros dispositivos donde se necesite controlar el movimiento y posición, como podría ser una impresora, o un coche teledirigido. En este tipo de coches radiocontrol hay un motor convencional para impulsar al coche, y un servo para la dirección, con la que controlar el giro de forma precisa.

Diferencia entre motor paso a paso y servomotor

Nema 17

Si te preguntas la diferencia entre un servomotor y un motor paso a paso, la verdad es que se pueden confundir, ya que en el motor paso a paso, o stepper, también se puede controlar el giro de forma bastante precisa, y las aplicaciones son muy similares al servo. En cambio, existen algunas diferencias.

Y es que los servomotores usan típicamente imanes de tierras raras, mientras que los motores paso a paso usan imanes más baratos y convencionales. Por tanto, en un servo se puede conseguir un desarrollo de par de torsión mayor, a pesar de seguir siendo compacto. Por tanto, la fuerza de giro será muy elevada.

Características técnicas

Siempre que adquieras un servo, deberías consultar su ficha técnica o datasheet. De esa manera, te asegurarás de las características técnicas que tiene, pero también de los límites a los que lo puedes someter, como el voltaje, intensidad, carga máxima, par, etc. Recuerda que cada modelo puede ser bastante diferente.

Por ejemplo, si se analiza uno de los más populares, el Micro Servo 9G SG90 de la conocida firma Tower Pro, entonces tendrás unas características muy peculiares, aunque la programación y conexionado de los modelos sean más o menos la misma y todo lo dicho aquí sirve para cualquiera.

En el caso de este modelo, es un motor de gran calidad, con un ángulo de giro que permite un barrido entre -90 y 90º, es decir, un giro total de 180º. La resolución que puede alcanzar es muy elevada, por lo que podrá avanzar muy poco a poco. Por ejemplo, con las limitaciones de la señal PWM de Arduino UNO, se podría conseguir incluso un avance de grado en grado.

Así mismo, la señal PWM también impondrá otro límite, y es la cantidad de veces que podrá cambiar de posición cada por unidad de tiempo. Por ejemplo, como los pulsos se trabaja con entre 1 y 2 ms y con periodos de 20 ms (50Hz), entonces el servo se podrá mover una vez cada 20 ms.

Además, se tendrá un peso de 9 gramos y, pese a ese peso y tamaño compacto, puede desarrollar un torque o par de 1.8 kg/cm con 4.8v. Eso gracias a su conjunto de engranajes POM.

Por último, ya sabes que, dependiendo de lo que quieras conseguir, deberás elegir uno un otro modelo, para que tenga las características necesarias para tu proyecto. Es decir, no es lo mismo que quieras un motor para mover una carga X, que uno para XX…

Dónde comprar un servo

servomotor

Si quieres comenzar a usar este tipo de servomotor, puedes encontrarlo barato en multitud de tiendas especializadas, y también lo puedes conseguir online en Amazon. Por ejemplo, aquí tienes algunos ejemplos de productos recomendados que te pueden interesar:

Todos ellos tienen un ángulo de giro bastante bueno, pero se diferencia básicamente en el par que toleran cada uno. He incluido tres modelos diferentes. El primero, y más barato, puede ser suficiente para la mayoría de las aplicaciones. Pero si necesitas alguno con mayor fuerza para otras aplicaciones, tienes el de 25 y 35, que son ya bastante destacables…

Integración con Arduino

servo Arduino

Como puedes ver en la imagen superior, el servo se conecta de forma muy sencilla a Arduino. Tan solo tiene tres cables, que podrás conectar de esta forma:

  • Rojo con 5V
  • Negro con GND
  • Amarillo con un pin PWM de Arduino, en este caso con -9.

Para poder programar un sketch para comenzar a usar este tipo de motores, tienes varias opciones. Pero, antes de nada, para comenzar, tienes que agregar la biblioteca de Arduino IDE para manejar este tipo de servomotores:

  1. Abrir Arduino IDE.
  2. Ir a Programa.
  3. Luego Include Library.
  4. Servo

En cuanto al código del sketch, podría ser así de sencillo en el que el servo irá recorriendo sus posiciones deteniéndose en 0º, 90º y 180º:


//Incluir la biblioteca del servo
#include <Servo.h>
 
//Declarar la variable para el servo
Servo servoMotor;
 
void setup() {
  // Iniciar el monitor serie
  Serial.begin(9600);
 
  // Iniciar el servo para que use el pin 9 al que conectamos
  servoMotor.attach(9);
}
 
void loop() {
  
  // Desplazar a la posición 0º
  servoMotor.write(0);
  // Esperar 1 segundo
  delay(1000);
  
  // Desplazar a la posición 90º
  servoMotor.write(90);
  // Esperar 1 segundo
  delay(1000);
  
  // Desplazamos a la posición 180º
  servoMotor.write(180);
  // Esperar 1 segundo
  delay(1000);
}

Ahora bien, si quieres moverlo de grado en grado, entonces sería así:


// Incluir la biblioteca servo
#include <Servo.h>
 
// Declarar la variable para el servo
Servo servoMotor;
 
void setup() {
  // Iniciar la velocidad de serie
  Serial.begin(9600);
 
  // Poner el servo en el pin 9
  servoMotor.attach(9);
 
  // Iniciar el servo en 0º
  servoMotor.write(0);
}
 
void loop() {
 
  // Los bucles serán positivos o negativos, en función el sentido del giro
  // Positivo
  for (int i = 0; i <= 180; i++)
  {
    // Desplazar ángulo correspondiente
    servoMotor.write(i);
    // Pausa de 25 ms
    delay(25);
  }
 
  // Negativo
  for (int i = 179; i > 0; i--)
  {
    // Desplazar el ángulo correspondiente
    servoMotor.write(i);
    // Pausa e 25 ms
    delay(25);
  }
}


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.