¿Qué tienen en común un joystick y un servomotor?
Mover un brazo robótico o controlar un personaje en un videojuego puede parecer magia… pero detrás hay sensores, motores y señales precisas.
Los servomotores y joysticks son elementos fundamentales para el movimiento controlado en la robótica. Son fáciles de usar, pero tienen mucho más de lo que parece a simple vista.
¿Qué es un servomotor?
Un servomotor es un actuador de posición. Se usa cuando necesitas que algo gire hasta cierto ángulo exacto y se mantenga ahí. A diferencia de un motor DC común, un servomotor tiene un sistema de control interno con retroalimentación. Este es un sistema de lazo cerrado. Es decir, el motor no solo “hace lo que se le dice”, sino que también “se escucha a sí mismo” para corregirse constantemente.
El torque es la fuerza que ejerce el servo para mover una carga en rotación. Si el voltaje es bajo, el motor dentro del servo no tiene suficiente energía para vencer la fricción o peso. Por eso:
A 3.3 V puede temblar o no moverse.
A 5 V (o más, según el modelo), trabaja con fuerza y estabilidad.
Un MG996R, por ejemplo, da hasta 11 kg/cm de torque a 6 V, suficiente para mover piezas metálicas.
Señal PWM
Un servo no entiende “palabras”, pero sí entiende una señal PWM (modulación por ancho de pulso). Esta señal le dice qué ángulo tomar, dependiendo de la duración de encendido.
La señal PWM que enviamos desde Arduino al servo no es potencia, es una orden codificada en el tiempo. Lo que importa no es si el pin está en HIGH o LOW, sino cuánto tiempo dura el pulso en HIGH dentro de un ciclo de 20 ms.
Aunque la señal es digital, su efecto es analógico gracias a la frecuencia fija. Lo que cambia es el duty cycle, y el circuito interno del servo lo interpreta como una referencia de posición.
💡 Dato curioso: En las placas Arduino, los pines que pueden generar señales PWM están marcados con un símbolo de virgulilla (~) al lado del número.
Una vez que el servo alcanza el ángulo deseado, deja de girar, pero no apaga el motor por completo. El sistema sigue comparando la señal PWM con la posición actual y aplica microajustes si detecta alguna diferencia (por ejemplo, si algo lo empuja).
Esto también significa que el servo consume energía incluso cuando está detenido. Si usas muchos servos, cuida tu fuente de alimentación.
Porque su potenciómetro interno solo puede girar ~270°, y está conectado al eje del motor. Si el engranaje girara más allá, el potenciómetro se dañaría. Por eso se incluye un tope físico o limitador de giro.
Hay servos modificados para girar 360° o más. Pero en ellos el potenciómetro ya no regula la posición, y en su lugar puedes controlar solo la velocidad y dirección de giro (como un motor DC con control de velocidad, pero más fácil de usar).
Actividad 1: Controlar un servo con Arduino
Hoy aprenderás a controlar un servomotor desde Arduino usando código.
Arduino UNO
Servomotor
Jumpers
Código de programación:
Conexiones:
#include <Servo.h>
Servo miServo;
void setup() {
miServo.attach(9);
}
void loop() {
miServo.write(90);
delay(1000);
miServo.write(50);
delay(1000);
}
#include <Servo.h>
Carga la librería que permite controlar servos fácilmente.
Servo miServo;
Crea un objeto llamado miServo, que representa al servo conectado.
miServo.attach(9);
Le indica al objeto miServo que el servo está conectado al pin digital 9.
miServo.write(90);
Envía al servo la orden de moverse a 90 grados.
delay(1000);
Hace una pausa de 1 segundo antes de continuar.
Video con explicación:
Joystick: cómo detecta movimiento y presión
Un joystick tiene dos potenciómetros internos que detectan posición en X y Y, y un botón que se activa al presionar.
Cuando mueves el joystick, los potenciómetros cambian su resistencia, y eso se traduce en valores analógicos entre 0 y 1023. Estos valores son detectados por el Arduino a través de los pines analógicos.
Actividad 2: Probar el joystick con un LED
Esta actividad nos ayuda a entender cómo leer el valor del joystick y traducirlo en una acción real (en este caso, brillo de un LED).
Arduino
Joystick
LED
Resistencia 220Ω
Jumpers
Protoboard
Código de programación:
Conexiones:
int x = 0;
void setup() {
pinMode(9, OUTPUT);
}
void loop() {
x = analogRead(A0);
int brillo = map(x, 0, 1023, 0, 255);
analogWrite(9, brillo);
}
int x = 0;
Declara una variable llamada x que almacenará el valor leído del eje X del joystick.
pinMode(9, OUTPUT);
Configura el pin 9 como salida para poder controlar el LED.
x = analogRead(A0);
Lee el valor del eje X del joystick (pin A0) y lo guarda en la variable x.
int brillo = map(x, 0, 1023, 0, 255);
Convierte el valor de x (que va de 0 a 1023) a un rango de brillo de 0 a 255.
analogWrite(9, brillo);
Envía el valor de brillo al pin 9, haciendo que el LED se encienda con más o menos intensidad según el movimiento del joystick.
Video con explicación
Actividad 3: Controlar el servo con un joystick
Ahora conectamos ambos componentes y usamos los valores del joystick para mover el servo.
Arduino
Joystick
Servomotor
Jumpers
Código de programación:
Conexiones:
#include <Servo.h>
Servo miservo;
int X = A0;
void setup() {
miservo.attach(2);
}
void loop() {
int position_X = analogRead(X);
int angulo = map(position_X, 0, 1023, 0, 180);
miservo.write(angulo);
delay(10);
}
#include <Servo.h>
Carga la librería que permite controlar servomotores fácilmente.
Servo miservo;
Crea un objeto llamado servo1, que representará al servomotor conectado.
int X = A0;
Declara una variable llamada X y le asigna el pin analógico A0, donde está conectado el eje X del joystick.
miservo.attach(2);
Indica que el servomotor está conectado al pin digital 2.
int position_X = analogRead(X);
Lee el valor del eje Y del joystick (de 0 a 1023) y lo guarda en position_Y.
int angulo = map(position_X, 0, 1023, 0, 180);
Convierte ese valor a un ángulo entre 0 y 180 grados.
miservo.write(angulo);
Mueve el servo al ángulo correspondiente.
delay(10);
Pausa breve para evitar movimientos bruscos (10 milisegundos).
¿Qué hace map()?
Video con explicación:
⭐️ Reto extra: Usa dos servos, uno para cada eje
Controla un servo con el eje X y otro con el eje Y del joystick.
Tips:
Necesitas dos servos.
Usa dos pines PWM (ej. 9 y 10).
Lee A0 y A1.
Usa map() para ambos.
Quiz de repaso
Presentación Clase 9: Control de Servomotores
1. ¿Qué pasa si quemo plástico con el cautín?
Al quemar plástico, liberas humos tóxicos que te hacen daño. ¡Evítalo! Si se pega plástico a la punta, limpia con una esponja húmeda o lana metálica.
2. ¿Qué hago si me quemo con el cautín?
Si eres menor de edad, avisa a un adulto.
Enfría la zona con agua corriente por 10 minutos.
Cubre con una gasa estéril.
Consulta al médico si es grave (ampollas grandes o mucho dolor).
3. ¿Por qué mi cautín cambia de color en la punta?
Oxidación: Límpialo con frecuencia y mantén la punta estañada.
Temperatura alta: No sobrecalientes. Ajusta entre 350-400 °C.
Residuos: Usa estaño de calidad con flux y limpia tras cada uso.
4. ¿Cómo saber si mi cautín es de buena calidad?
Un buen cautín:
Mantiene la temperatura estable.
Permite ajustar la temperatura (idealmente entre 200-450 °C).
Tiene puntas reemplazables y de buena conducción térmica.
7. ¿Cómo ajusto la temperatura de mi cautín?
350-400 °C: Ideal para soldaduras estándar.
300-350 °C: Para componentes sensibles.
Si tu cautín no tiene ajuste, considera uno que lo permita.
8. ¿Qué hacer si mi cautín no calienta bien?
Limpia la punta, puede estar oxidada.
Revisa el cable y las conexiones.
Si sigue fallando, reemplaza el elemento calefactor o el cautín.