El control preciso de movimiento es fundamental en robótica y automatización. Este proyecto detalla cómo construir un sistema básico de control de posición analógica utilizando una placa Arduino, un potenciómetro y un servomotor estándar de 180∘ y 5V. El objetivo es simple: la rotación manual del potenciómetro determinará directamente el ángulo del eje del servomotor, cubriendo el rango completo de 0∘ a 180∘. Este ejercicio es crucial para comprender la lectura de entradas analógicas y la generación de señales PWM para control de actuadores.
🔩Funcionamiento
En este proyecto se demostrará cómo controlar la posición de un servo motor utilizando un potenciómetro y una placa de Arduino. Los servo motores son ampliamente utilizados en aplicaciones que requieren un control preciso de la posición, como en robótica, modelos a escala y automatización. El uso de un potenciómetro permitirá ajustar la posición del servo motor de manera manual y en tiempo real.
El Servomotor (El Actuador)
Un servomotor es un dispositivo compuesto por un motor de corriente continua (DC), una caja reductora, un circuito de control y un potenciómetro de retroalimentación.
- Tipos y Rangos: El modelo más común para aficionados (como el SG90 o MG996R) opera típicamente con 5V y tiene un rango de giro limitado de 180∘ (a diferencia de un motor DC que gira continuamente).
- Principio de Control (PWM): El control de posición se logra mediante una señal de Modulación por Ancho de Pulso (PWM) enviada por el Arduino, generalmente a una frecuencia de 50 Hz (un pulso cada 20 ms).
- Ángulo Mínimo (0∘): Requiere un pulso estrecho, aproximadamente de 1 ms.
- Ángulo Central (90∘): Requiere un pulso de duración media, aproximadamente de 1.5 ms.
- Ángulo Máximo (180∘): Requiere un pulso ancho, aproximadamente de 2 ms.
- Conexión:
- Cable Marrón/Negro: Tierra (GND).
- Cable Rojo: Alimentación (generalmente 5V).
- Cable Naranja/Amarillo: Señal (PWM).
El Potenciómetro (El Sensor de Entrada)
El potenciómetro es una resistencia variable de tres terminales que funciona como un divisor de voltaje.
- Operación: Al conectar los extremos a 5V y GND, el terminal central (wiper) produce un voltaje de salida que varía linealmente entre 0V y 5V a medida que se gira el eje.
- Lectura Analógica en Arduino: Los pines analógicos (A0 a A5) del Arduino UNO poseen un Convertidor Analógico-Digital (ADC) de 10 bits.
- El ADC transforma el voltaje de entrada (0V a 5V) en un valor digital entero en el rango de 0 a 1023.
- 0 V→0 (Valor digital)
- 5 V→1023 (Valor digital)
🔨Componentes
| Componente | Cantidad | Especificación | Función |
|---|---|---|---|
| Placa Arduino | 1 | Arduino Uno, Nano, etc | Control de componentes(cerebro) |
| Servomotor | 1 | SG90 o MG996R | Genera la rotación |
| Potenciómetro | 1 | 5k-10k | Indicará el ángulo de rotación |
| Cables de conexión | n | Unir los componentes | |
| Fuente de Alimentación | 1 | 5v | Suministro de energía |
🔌Conexiones
- Conectar el pin de señal del servo motor al pin digital 9 del Arduino.
- Conectar el pin de alimentación del servo motor (rojo) a 5V de la fuente de alimentación.
- Conectar el pin de GND del servo motor (negro) a negativo de la fuente de alimentación.
- Conectar las terminales del potenciómetro a 5V, GND de la fuente de alimentación.
- Conectar la terminal central del potenciómetro al pin analógico A0 del Arduino.
0️⃣Código
Este sketch emplea la función map() de Arduino, que es la esencia del proyecto, ya que traduce directamente la entrada del potenciómetro a la salida del servo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <Servo.h> Servo miServo; // Crear objeto Servo int potPin = A0; // Pin analógico al que está conectado el potenciómetro int valorPot; // Valor leído del potenciómetro int angulo; // Ángulo para mover el servo motor void setup() { miServo.attach(9); // Asignar el pin 9 al objeto Servo } void loop() { valorPot = analogRead(potPin); // Leer valor del potenciómetro angulo = map(valorPot, 0, 1023, 0, 180); // Convertir el valor a un ángulo de 0 a 180 grados miServo.write(angulo); // Mover el servo al ángulo correspondiente delay(15); // Esperar 15 ms para que el servo complete el movimiento } |
🖌️Diseños

🎬Videos
📑Conclusión
El proyecto de Control de Servo Motor de 180∘ con Potenciómetro y Arduino demuestra exitosamente la integración fundamental entre una entrada analógica y una salida de movimiento digital.
Hemos logrado establecer un sistema de control de posición intuitivo y lineal, donde la rotación física del potenciómetro, leída como un voltaje variable (0V a 5V), se traduce con precisión a una lectura digital (0 a 1023). Gracias a la función clave map(), esta lectura se escala directamente al rango de ángulos del servomotor (0∘ a 180∘).
La eficacia de la librería Servo de Arduino para generar la señal PWM necesaria a partir de un simple comando de ángulo (myServo.write(angulo)) simplifica enormemente el proceso. Este proyecto no solo confirma la capacidad del Arduino como un potente controlador de actuadores, sino que también sienta una base sólida para aplicaciones más avanzadas en robótica y automatización, donde la entrada de sensores analógicos debe traducirse con precisión en movimientos mecánicos controlados. Es un ejercicio esencial en la comprensión de la conversión analógico-digital y la modulación por ancho de pulso.

