Controlar un servomotor con un potenciómetro usando Arduino

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

FabricanteVarios
Número de piezaServomotor estándar
Voltaje lógico/E/S5 V
Tensión de alimentación4.8 - 6 V
Corriente de salida (por canal)Hasta 1 A
Corriente de pico (por canal)Hasta 2 A
Guía de frecuencia PWM50 Hz
Umbrales de la lógica de entrada0.8 V (baja) / 2.0 V (alta)
Caída de tensión / RDS(en conducción)/ saturación0.5 V
Límites térmicos85 °C
PaqueteTamaño estándar
Notas / variantesDisponible 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

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot

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.

Arduino Schemtic of wiring servo motor with pot

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.

Imágenes

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot
Arduino Schemtic of wiring servo motor with pot
Arduino Schemtic of wiring servo motor with pot
SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
96-Controlling a servo position using a potentiometer
Idioma: C++
¡Copiado!

Cosas que podrías necesitar

Recursos y referencias

Archivos📁

No hay archivos disponibles.