Este tutorial es parte de: Servomotores
Todos los videos relacionados con servomotores se listan aquí. Los enlaces a otros videos se encuentran debajo de este artículo.
Controlar un servomotor con un potenciómetro usando Arduino
En este tutorial, aprenderemos cómo controlar un servomotor usando un potenciómetro con un Arduino. El potenciómetro nos permite ajustar el ángulo del servomotor de forma suave, dándonos control en tiempo real sobre su posición. Al final de este proyecto, tendrás una configuración funcional que muestra el valor del potenciómetro y el ángulo correspondiente del servo.

A medida que se gira el potenciómetro, el ángulo del servomotor cambia de 0 a 180 grados. Usaremos la entrada analógica del Arduino para leer el valor del potenciómetro y luego mapear este valor al rango del servo usando una fórmula sencilla. Este proyecto es una excelente manera de entender cómo funcionan las entradas analógicas y cómo controlar motores con ellas (en el video en 01:45).
Hardware explicado
Para este proyecto, necesitamos una placa Arduino, un servomotor y un potenciómetro. El potenciómetro actúa como una resistencia variable, proporcionando una salida de voltaje que corresponde a su posición. Esta salida es leída por la entrada analógica del Arduino, lo que nos permite determinar cuánto girar el servomotor.
El servomotor es un tipo de motor que puede colocarse en un ángulo específico. Recibe una señal de control que le indica la posición deseada. El servomotor girará hasta ese ángulo en función de la entrada que recibe del Arduino, lo que lo hace útil para diversas aplicaciones como la robótica y los dispositivos de control remoto.
Detalles de la hoja de datos
| Fabricante | Varios |
|---|---|
| Número de pieza | Servomotor estándar |
| Voltaje lógico/E/S | 5 V |
| Tensión de alimentación | 4.8 - 6 V |
| Corriente de salida (por canal) | Hasta 1 A |
| Corriente de pico (por canal) | Hasta 2 A |
| Guía de frecuencia PWM | 50 Hz |
| Umbrales de la lógica de entrada | 0.8 V (baja) / 2.0 V (alta) |
| Caída de tensión / RDS(en conducción)/ saturación | 0.5 V |
| Límites térmicos | 85 °C |
| Paquete | Tamaño estándar |
| Notas / variantes | Disponible en diferentes tamaños y niveles de par |
- Asegúrese de que la fuente de alimentación esté dentro de los límites (4.8 - 6 V).
- Utilice un valor de resistencia adecuado para el potenciómetro (se recomienda 10 kΩ).
- Compruebe la polaridad de las conexiones para evitar un funcionamiento invertido.
- Tenga cuidado con el calor; asegúrese de que el servo no esté sobrecargado.
- Mantenga el cableado corto para reducir las interferencias.
- Utilice condensadores de desacoplo entre las entradas de alimentación si es necesario.
- Verifique que el potenciómetro esté correctamente conectado al pin analógico A0.
Instrucciones de cableado

Para cablear los componentes, primero conecta el potenciómetro. El pin central del potenciómetro debe conectarse al pin analógicoA0en el Arduino. El pin izquierdo debe ir al pin de 5V en el Arduino, y el pin derecho debe conectarse a tierra (GND).
A continuación, conecta el servomotor. El cable de tierra (típicamente negro o marrón) del servo debe conectarse al GND del Arduino. El cable de alimentación (usualmente rojo) debe conectarse al pin de 5V en el Arduino. Finalmente, el cable de control (a menudo amarillo o blanco) debe conectarse al pin digital9en el Arduino. Esta configuración permitirá que el Arduino controle el servo en función de la posición del potenciómetro.

Ejemplos de código y guía paso a paso
Echemos un vistazo a las partes clave del código. Primero, incluimos la biblioteca Servo y creamos un objeto Servo:
#include
Servo myservo; // create servo object to control a servo
Este código inicializa el servomotor y lo prepara para su control. El siguiente paso consiste en leer el valor del potenciómetro:
int val = analogRead(potpin); // reads the value of the potentiometer
Aquí, el valor leído del potenciómetro se almacena en la variableval. El valor estará entre 0 y 1023, correspondiente a la posición del potenciómetro. Luego mapeamos este valor al rango del servo:
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo
Esta línea convierte el valor del potenciómetro a un rango adecuado para el servomotor. Finalmente, ajustamos el servomotor a la posición calculada:
myservo.write(val); // sets the servo position according to the scaled value
Este comando le indica al servo que se mueva al ángulo especificado según la posición del potenciómetro. Puedes encontrar el código completo cargado debajo del artículo.
Demostración / Qué esperar
Al ejecutar el programa, girar el potenciómetro ajustará suavemente el ángulo del servomotor. Deberías ver los valores de ángulo impresos en el monitor serial mientras giras la perilla. Si el servo se comporta de forma inesperada, revisa tu cableado, especialmente las conexiones al potenciómetro y al servo (en el video en 04:30).
El servo debería responder de inmediato a los cambios en la posición del potenciómetro. Si notas latencia o movimientos bruscos, considera reducir el retraso en el código para mejorar la capacidad de respuesta.
Este tutorial es parte de: Servomotores
- Controlar un servomotor con pulsadores usando Arduino
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Controlar un servomotor con potenciómetro y LCD1602 usando Arduino
- Controlando motores servo utilizando un control remoto por infrarrojos con Arduino
- Control de motor servo Arduino usando un potenciómetro
- Controlando la posición del servo con gestos de la mano para Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- How to Use Continuous 360° Servo with Arduino
- Código y vídeo de Arduino para el controlador de servos PCA9685 de 16 canales y 12 bits V1
- Build an Arduino Servo Toggle Switch with a Push Button
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 November 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
Update by Ahmad Shamshiri for Robojax.com in Ajax, Ontario, Canada
Watch video for this code at https://youtu.be/X_drE5tLbz0
This code is taken from http://robojax.com/learn/arduino
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = A0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
// Servo knob demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
// Servo knob demo by Robojax.com
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
Serial.print(val);
Serial.print(" ");
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
// Servo knob demo by Robojax.com
Serial.print(val);
Serial.println();
delay(200); // waits for the servo to get there
}
Cosas que podrías necesitar
-
AmazonasMotor servo en Amazonamzn.to
-
AliExpressCompra el servo motor SG90 de 180 o 360 en AliExpress.s.click.aliexpress.com
Recursos y referencias
-
Externoservos SG90amzn.to
Archivos📁
No hay archivos disponibles.