Código de búsqueda

Control de motor servo Arduino usando un potenciómetro

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

FabricanteParalaje
Número de parteSG90
Voltaje de lógica/IO5 V
Tensión de alimentación4.8-6 V
Corriente de salida (por canal)~500 mA
Corriente de pico (por canal)1 A
Orientación sobre la frecuencia PWM50 Hz
Umbrales de lógica de entrada0.5 V (bajo), 2.5 V (alto)
Caída de tensión / RDS(on)/ saturación0.5 V a 500 mA
Límites térmicos0°C a 60°C
PaqueteServo estándar de 9g
Notas / variantesComú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

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor

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

Imágenes

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor
11-Controlling a servo position using a potentiometer using Arduino
Idioma: C++
/*
 * 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.