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.
Control de motor servo Arduino usando un potenciómetro
En este tutorial, exploraremos cómo controlar un motor servo utilizando un potenciómetro con un Arduino. El objetivo es crear un circuito simple donde la posición del servo se ajusta en función de la rotación del potenciómetro. Al final de este proyecto, tendrás un modelo funcional que varía suavemente el ángulo del servo de 0 a 180 grados a medida que giras el potenciómetro. Esta es una excelente manera de entender los conceptos básicos de la entrada analógica y el control del servo en Arduino.
Para lograr esto, utilizaremos una placa Arduino, un motor servo y un potenciómetro. El potenciómetro actúa como una resistencia variable, proporcionando una entrada analógica al Arduino, que luego determinará la posición del motor servo en consecuencia. Este proyecto no solo es divertido, sino también educativo, ya que demuestra conceptos clave en electrónica y programación. Para una explicación más detallada, asegúrate de ver el video (en el video a las 00:00).
Hardware Explicado
En este proyecto, los componentes principales son la placa Arduino, el motor servo y el potenciómetro. El Arduino es el cerebro de la operación, procesando entradas y controlando salidas. El motor servo es lo que se moverá físicamente en función de los comandos que recibe del Arduino. El potenciómetro puede ser de 1k ohm a 1M ohm y permite a los usuarios proporcionar una entrada variable que se traduce en movimiento del servo.
El servomotor funciona al recibir una señal PWM (Modulación por Ancho de Pulso) que indica la posición deseada. El potenciómetro, al girarse, cambia su resistencia, que es leída por el Arduino como un voltaje analógico. El servomotor opera con 5V. No funciona con 3.3V. Este voltaje se mapea luego al rango de movimiento del servomotor, permitiendo un movimiento suave de 0 grados a 180 grados.
Detalles de la hoja de datos para el motor servo SG90
| Fabricante | Paralaje |
|---|---|
| Número de parte | SG90 |
| Voltaje de lógica/IO | 5 V |
| Tensión de alimentación | 4.8-6 V |
| Corriente de salida (por canal) | ~500 mA |
| Corriente de pico (por canal) | 1 A |
| Orientación sobre la frecuencia PWM | 50 Hz |
| Umbrales de lógica de entrada | 0.5 V (bajo), 2.5 V (alto) |
| Caída de tensión / RDS(on)/ saturación | 0.5 V a 500 mA |
| Límites térmicos | 0°C a 60°C |
| Paquete | Servo estándar de 9g |
| Notas / variantes | Comúnmente utilizado en aplicaciones de RC |
- Asegúrese de que el servo no exceda su límite máximo de corriente.
- Utiliza un disipador de calor si el servo opera continuamente a altas cargas.
- Conecta el potenciómetro a un pin analógico para lecturas precisas.
- Ten cuidado con el tiempo de señal PWM para el control del servo.
- Verifica el rango de movimiento del servo para evitar obstrucciones físicas.
Instrucciones de cableado


Para esta configuración, necesitarás conectar los componentes de la siguiente manera:
Conecta el pin del medio del potenciómetro (cursor) al pin analógico del Arduino.A0. Los otros dos pines del potenciómetro deben estar conectados a5VyGNDen el Arduino. Para el motor servo, conecta el cable rojo a5V, el cable negro aGNDy el cable amarillo o blanco al pin digital9en el Arduino. Este arreglo permite que el potenciómetro proporcione una entrada analógica al Arduino, que controlará la posición del servo motor en función de esa entrada.
Asegúrate de verificar todas las conexiones y de que el servo no esté obstruido en su rango de movimiento. Si utilizas un modelo de Arduino diferente, confirma que las asignaciones de pines para la entrada analógica y la salida del servo sean compatibles.
Ejemplos de código y guía paso a paso
A continuación se muestra un extracto del código que inicializa el servo y lee el valor del potenciómetro:
#include
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
En este código, incluimos la biblioteca Servo y creamos un objeto servo llamadomyservoEl servo está conectado al pin9, lo que nos permite controlarlo utilizando este pin.
void loop() {
int sensorValue = analogRead(A0); // read the potentiometer
pos = map(sensorValue, 0, 1023, 0, 180); // map to servo position
myservo.write(pos); // move servo to position
delay(15); // waits 15ms for the servo to reach the position
}
En la función del bucle, leemos el valor del potenciómetro del pinA0y mapealo de su rango (0-1023) al rango del servo (0-180 grados). Elmyservo.write(pos)el comando luego mueve el servo a la posición deseada según la rotación del potenciómetro.
Demostración / Qué Esperar
Cuando ejecutes este programa, deberías ver el motor servo moverse suavemente de 0 a 180 grados a medida que giras el potenciómetro. Si el servo no se mueve como se esperaba, verifica el cableado y asegúrate de que el potenciómetro esté funcionando correctamente. Además, asegúrate de que el Arduino esté correctamente alimentado y que el código se haya subido sin errores. Puedes esperar ver el servo reflejando la posición del potenciómetro en tiempo real (en el video a las 02:00).
Marcas de tiempo del video
- 00:00- Introducción al proyecto
- 01:30- Explicación de la configuración del hardware
- 03:45- Instrucciones de cableado
- 05:00- Revisión de código
- 07:30- Demostración del proyecto completado
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 un potenciómetro usando Arduino
- Controlar un servomotor con potenciómetro y LCD1602 usando Arduino
- Controlando motores servo utilizando un control remoto por infrarrojos con Arduino
- 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
/*
* Fuente original: Arduino IDE
* Proyecto de Arduino: Controlando la posición del servo
* Este código se utiliza con un tutorial en video de Robojax.com
* Publicado el 24 de abril de 2017, desde Ajax, ON, Canadá.
* Escrito/Editado por Ahmad Shamshiri
* Mira el video en YouTube: https://youtu.be/kZ9b31gVemc
* Ver página del tutorial para este código https://robojax.com/RJT8
* Controlando la posición de un servo usando un potenciómetro (resistor variable)
*/
#include <Servo.h>
Servo myservo; // crear objeto servo para controlar un servo
// se pueden crear doce objetos servo en la mayoría de las placas
int pos = 0; // variable para almacenar la posición del servo
void setup() {
myservo.attach(9); // adjunta el servomotor en el pin 9 al objeto servomotor
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // va de 0 grados a 180 grados
// en incrementos de 1 grado
myservo.write(pos); // di a servo que vaya a la posición en la variable 'pos'
delay(15); // espera 15 ms para que el servo alcance la posición
}
for (pos = 180; pos >= 0; pos -= 1) { // va de 180 grados a 0 grados
myservo.write(pos); // di a servo que vaya a la posición en la variable 'pos'
delay(15); // espera 15 ms para que el servo alcance la posición
}
}
Recursos y referencias
Aún no hay recursos.
Archivos📁
No hay archivos disponibles.