Proyecto 39 – Servomotor SG90

¿Alguna vez has querido darle movimiento a tus proyectos con Arduino? ¡Entonces estás en el lugar indicado! En este tutorial aprenderás a controlar un servomotor SG90, un pequeño pero poderoso actuador que se utiliza en robótica, automatización y juguetes electrónicos.

Usando una placa Arduino Uno, un SG90 y unas pocas líneas de código, lograrás que tu servomotor gire en diferentes ángulos de manera precisa. Además, entenderás cómo se conectan sus cables, cómo programarlo usando la librería Servo, y cómo observar su funcionamiento en tiempo real mediante el Monitor Serial.

Este proyecto es perfecto para quienes están comenzando con Arduino y quieren explorar el mundo del control de movimiento de forma sencilla, educativa ¡y divertida!

Servomotor SG90

¿Qué es un Servomotor?

Un servomotor es un tipo de actuador rotativo que permite controlar con precisión la posición angular de su eje. A diferencia de un motor convencional que gira libremente al recibir corriente, el servomotor está diseñado para alcanzar y mantener una posición específica.

Está compuesto por un pequeño motor de corriente continua (DC), un sistema de engranajes para aumentar el torque y un circuito de control que compara la posición actual con la posición deseada, corrigiéndola automáticamente si es necesario.

En proyectos con Arduino, el modelo más común es el SG90, un servomotor de 180 grados que puede moverse a una posición específica dentro de ese rango con una simple señal PWM (modulación por ancho de pulso). Esto lo hace ideal para tareas como mover brazos robóticos, controlar compuertas, o dirigir sensores móviles.

Componentes

  • Arduino UNO o placa compatible
  • Servomotor SG90
  • Cables o Jumpers
Diagrama de conexiones del Arduino con Servomotor SG90

En este proyecto las conexiones son bastante simples, para conectar el Arduino con Servomotor SG90, sólo debemos seguir estos sencillos pasos. El cable amarillo es el que lleva la señal de control desde el Arduino. En este caso, se conecta al pin digital 11, que es el mismo que usas en tu código. El rojo va al pin de 5V del Arduino, y el negro a GND. Esta configuración es adecuada para controlar un solo servomotor sin necesidad de fuente externa.

La siguiente tabla es la distribución de las conexiones el servo y nuestro Arduino:

Pin del ServoColor del cablePin Arduino
SeñalAmarillo11
VCC(5V)Rojo/naranja5V
GNDNegroGND
Tabla de conexiones entre el el Arduino y el Servomotor SG90

Código

Para inciar con el código del proyecto tenemos que incluir una biblioteca propia de Arduino llamada Servo.h, la cual será la encargada de controlar el servomotor.

Esta biblioteca tiene varios métodos para su uso, pero solamente vamos a utilizar atach() y write().

attach(pin): Asocia un objeto Servo a un pin digital del Arduino para comenzar a enviarle señales.

write(angulo): Mueve el servo a un ángulo específico entre 0 y 180 grados, por ejemplo si declaramos un bojeto Servo de nombre miServo y ponemos en el código miServo.write(90); el servo debería moverse a la posición de 90°.

#include <Servo.h>

Servo miServo;

void setup()
{
  miServo.attach(11);
  Serial.begin(9600); 
}

void loop()
{
  for(int i = 0;i <= 180;i = i+20)
  {
    miServo.write(i);
    Serial.println(i);
    delay(500);
  }
  for(int i = 180;i >= 0;i = i-20)
  {
    miServo.write(i);
    Serial.println(i);
    delay(500);
  }
}

Explicación del código

Vamos a comenzar a revisar el código y como es de costumbre vamos a ver primero la declaración de las variables y las librerías que vamos a utilizar en el proyecto:

#include <Servo.h>

Servo servito;

En la primera línea se incluye la librería Servo, que contiene funciones especiales para controlar servomotores de forma sencilla.

En la siguiente línea se declara un objeto llamado miServo del tipo Servo. Este objeto es el que utilizaremos para controlar el servomotor más adelante.

Función setup()

void setup()
{
  miServo.attach(11);
  Serial.begin(9600); 
}

Como hemos visto anteriormente en otros proyectos en el setup ponemos todo lo que debe ser inicializado o ejecutado una sola vez, en nuestro caso encontramos en la primera línea la función miServo.attach(11); que asocia el servomotor al pin digital 11 de Arduino, lo que permite enviarle señales PWM.

Luego vemos Serial.begin(9600); que inicia la comunicación serial entre el Arduino y la computadora a 9600 baudios. Es útil para ver los valores en el Monitor Serial.

Función loop()

for(int i = 0;i <= 180;i = i+20)
{
  miServo.write(i);
  Serial.println(i);
  delay(500);
}
for(int i = 180;i >= 0;i = i-20)
{
  miServo.write(i);
  Serial.println(i);
  delay(500);
}

Comenzaremos revisando el contenido de nuestra función loop, para esto vamos a irlo desglosando un poco, para que sea mas fácil de entender. Por lo que podemos ver el loop está compuesto por 2 for, vamos a ver el primero y explicarlo.

for(int i = 0;i <= 180;i = i+20)
{
  miServo.write(i);
  Serial.println(i);
  delay(500);
}

La función del primer for hace que el servo se mueva desde 0 hasta 180 grados en pasos de 20, luego. miServo.write(i); envía la orden al servomotor para que gire a ese ángulo, es decir aumente en 20. Inmediatamente con el Serial.println(i); muestra en el Monitor Serial el ángulo actual y por último el delay(500); espera 500 milisegundos para que se vea el movimiento antes de pasar al siguiente valor, este delay se puede cambiar a gusto para que haya una pausa más larga o el movimiento sea más fluido.

for(int i = 180;i >= 0;i = i-20)
{
  miServo.write(i);
  Serial.println(i);
  delay(500);
}

El segundo for hace el recorrido inverso desde 180 hasta 0 grados, también en pasos de 20, así el movimiento completo del servo va de un lado al otro de forma cíclica.

Resumen

¡Felicidades! Si llegaste hasta aquí, ya sabes cómo controlar un servomotor SG90 usando Arduino. Has aprendido a conectarlo correctamente, programarlo con la librería Servo y observar su comportamiento mediante la consola serial. Este es un gran primer paso hacia proyectos más complejos de robótica y automatización.


Deja un comentario

Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.