Cómo controlar un servomotor con Arduino

Como Controlar Un Servomotor Con Arduino



Servomotores es un tipo de dispositivo eléctrico que puede cambiar o girar la posición de un objeto con gran precisión. Al principio, se utilizaron para controlar las alas de los aviones RC, momentos después, se abrieron paso a la robótica, los robots humanoides y muchos proyectos de automatización. A diferencia de los motores paso a paso, su movimiento está limitado entre 0o y 180o.

Por lo general, los servomotores tienen brazos que se pueden controlar con Arduino. Los servomotores constan de un sistema de control que proporciona retroalimentación sobre la posición actual del eje del motor esta retroalimentación permite moverse con gran precisión.

Asignación de pines del servomotor

Por lo general, la mayoría de los servomotores tienen tres pines:







  • Pin Vcc (normalmente rojo 5V)
  • Pin GND (normalmente negro 0V)
  • Pin de señal de entrada (recepción de señal PWM de Arduino)



Trabajo de servomotor

Podemos controlar el servomotor conectando el pin Vcc a 5V y el pin GND a 0V. En el terminal de color amarillo, proporcionamos un PWM señal que controla el ángulo de rotación del servomotor. El ancho de la señal PWM nos da el ángulo en el que el motor girará su brazo.



Si observamos la hoja de datos de los servomotores, obtenemos los siguientes parámetros:





  • Período de tiempo de la señal PWM
  • Ancho mínimo para PWM
  • Ancho máximo para PWM

Todos estos parámetros están predefinidos en la biblioteca Arduino Servo.

Servomotores con Arduino

Los servomotores son súper fáciles de controlar con Arduino, gracias a la Biblioteca de servos lo que nos ayuda a personalizar nuestro código según las necesidades y nos permite girar el brazo del servo en el ángulo deseado.



Los tres parámetros mencionados anteriormente están fijos en la biblioteca Servo. Al usar estos parámetros, podemos controlar el ángulo del servomotor de la siguiente manera:

  • Si el ancho de la señal PWM = WIDTH_MAX, el servo girará a 180o
  • Si el ancho de la señal PWM = WIDTH_MIIN, el servo girará a 0o
  • Si el ancho de la señal PWM se encuentra entre WIDTH_MAX y WIDTH_MIN , el servomotor girará entre 0o y 180o

Podemos generar una señal PWM deseada en algunos de los pines de Arduino. La señal PWM se dará en el pin de señal de entrada del servomotor. Conectando los dos pines restantes del servo a 5v y GND de Arduino.

Cómo controlar un servomotor con Arduino

Aquí explicaré cómo podemos conectar y programar nuestro servomotor usando Arduino. Todo lo que necesitas es:

  • Arduino UNO
  • Cable USB B
  • Servo motor
  • Cables puente

Cómo programar un servo con Arduino

Los siguientes son algunos pasos simples:

Paso 1: Incluir biblioteca servo predefinida:

# incluir < Servo.h >

Paso 2: Crear objeto servo:

Servo miservo;

Sugerencia: en caso de que esté controlando más de un servomotor, debe crear más objetos servo:

Servo myservo1;
Servo myservo2;

Paso 3: Configure el pin de control (9) en Arduino Uno que envía la señal PWM al puerto de señal de entrada del servo:

myservo.attach ( 9 ) ;

Paso 4: Gire el ángulo del servomotor al valor deseado, por ejemplo 90o:

myservo.escribir ( posición ) ;

código arduino

Abra el programa de ejemplo de servomotor de Archivo>Ejemplo>Servo>Barrido , se abrirá una nueva ventana mostrándonos nuestro bosquejo del servo:

#include

Servo miservo; // se crea el objeto servo por servomotor de control
pos int = 0 ;     // para almacenar la posición del servo se crea una nueva variable
configuración nula ( ) {
myservo.attach ( 9 ) ;   // esta voluntad establecer pin arduino 9 por Salida PWM
}
bucle vacío ( ) {
  por ( posición = 0 ; posición = 0 ; posición -= 1 ) { // viene de 180 a 0 grados
myservo.escribir ( posición ) ;               // Dile al servo que vaya a la posición 'pos'
demora ( 5 ) ;                       // murga por 5 ms para que el servo pueda llegar a la posición
  }
}

Una vez que se compila y carga el programa, el servomotor comenzará a girar lentamente desde la posición inicial de 0 grados a 180 grados, un grado a la vez, como si fueran pasos. Cuando el motor haya completado la rotación de 180 grados, comenzará su rotación en la dirección opuesta hacia su punto de partida, es decir, 0 grados.

esquemas

Cómo controlar un servomotor usando un potenciómetro

También podemos controlar la posición del servomotor a mano. Para hacer esto necesitamos un Potenciómetro . El potenciómetro tiene tres pines. Conecte los dos pines exteriores a 5V Vcc y GND de Arduino y el del medio al pin A0 en la placa Arduino.

Cómo programar un servo con potenciómetro

La mayor parte del esquema del potenciómetro es el mismo que el del ejemplo anterior. La única diferencia es una nueva variable. valor y subpin se define antes de la sección de configuración y bucle del código.

int potpin = A0;
valor int;

En la sección de bucle, el pin analógico A0 se usa para leer valores para potenciómetro con función lectura analógica () . Las placas Arduino contienen ADC (convertidor analógico a digital) de 10 bits que nos dan valores entre 0 y 1023 dependiendo de en qué posición se encuentre el potenciómetro:

val = lectura analógica ( subpin ) ;

Por último, hemos utilizado mapa() función para reasignar números de 0 a 1023 de acuerdo con el ángulo del servo como sabemos, los servomotores solo pueden girar entre 00 y 1800.

valor = mapa ( valor, 0 , 1023 , 0 , 180 ) ;

código arduino

Bosquejo de perilla abierta disponible en Arduino IDE, vaya a Archivos>Ejemplos>Servo>Perilla . Se abrirá una nueva ventana que nos muestra nuestro boceto de perilla para servo:

#include
Servo miservo; // Creando un nombre de objeto servo myservo
int potpin = A0; // definición de pin analógico por potenciómetro
valor int; // variable cual voluntad leer valores de los pines analógicos por potenciómetro

configuración nula ( ) {
myservo.attach ( 9 ) ;   // pasador definido 9 por Señal de entrada PWM de servo en Arduino
}
bucle vacío ( ) {
val = lectura analógica ( subpin ) ;             // lee el valor del potenciómetro ( valor entre 0 y 1023 )
valor = mapa ( valor, 0 , 1023 , 0 , 180 ) ;     // escalar el valor a usar con el servo ( valor entre 0 y 180 )
myservo.escribir ( valor ) ;                   // establece la posición del servo con valor escalado
demora ( 15 ) ;                           // murga por el servo para llegar a la posición
}

El código anterior nos ayudará a controlar el eje del servomotor usando un potenciómetro, el eje girará entre 0 y 180 grados. También podemos mantener la velocidad junto con la dirección del servo usándolo.

Diagrama de circuito

¿Cuántos servomotores puedo conectar con Arduino?

El número máximo de servomotores que Arduino UNO puede manejar es de hasta 12 con la biblioteca Arduino para servo, y un máximo de 48 servos Se puede conectar con placas como Mega.

Consejo: Podemos ejecutar el servo directamente usando la corriente de Arduino, pero recuerde que si los motores de los servos consumen más de 500mA entonces su placa Arduino puede reiniciarse automáticamente y perder energía. Se recomienda utilizar siempre una fuente de alimentación dedicada para servomotores.

Conclusión

En este tutorial, hemos cubierto el mecanismo de control de servomotores con Arduino. Cubrimos los conceptos básicos del control de la posición y la velocidad del servo mediante un potenciómetro. Ahora tiene una idea sobre servo y las posibilidades para sus proyectos de robótica, RC y automatización usando servo son infinitas.