Servomotores Arduino

Los servomotores son excelentes dispositivos que pueden girar a una posición específica.

Por lo general, tienen un brazo servo que puede girar 180 grados. Usando el Arduino, podemos decirle a un servo que vaya a una posición específica e irá allí. ¡Tan sencillo como eso!

Los servomotores se utilizaron por primera vez en el mundo del control remoto (RC), generalmente para controlar la dirección de los automóviles RC o las aletas en un avión RC. Con el tiempo, encontraron sus usos en robótica, automatización y, por supuesto, en el mundo Arduino.

Aquí veremos cómo conectar un servomotor y luego cómo girarlo a diferentes posiciones.

El primer motor que conecté a un Arduino, hace siete años, fue un servomotor. ¡Momento nostálgico terminado, de vuelta al trabajo!

Necesitaremos lo siguiente:

  1. Una placa Arduino conectada a una computadora a través de USB
  2. Un servomotor
  3. Cables de puente

Hay pocos grandes nombres en el mundo de los servomotores. Hitec y Futaba son los principales fabricantes de servos RC. Los buenos lugares para comprarlos son Servocity, Sparkfun y Hobbyking.

Este instructivo y muchos más se pueden encontrar en mi libro de cocina de desarrollo Arduino disponible aquí. :RE

Paso 1: Cómo conectarlos

Un servomotor tiene todo incorporado: un motor, un circuito de retroalimentación y, lo más importante, un controlador de motor. Solo necesita una línea de alimentación, una conexión a tierra y un pin de control.

Los siguientes son los pasos para conectar un servomotor al Arduino:

  1. El servomotor tiene un conector hembra con tres pines. El más oscuro o incluso negro suele ser el suelo. Conéctelo a Arduino GND.
  2. Conecte el cable de alimentación que en todos los estándares debe ser rojo a 5V en el Arduino.
  3. Conecte la línea restante en el conector del servo a un pin digital en el Arduino.

Verifique la imagen para ver el servo conectado al Arduino.

Paso 2: Código

El siguiente código hará que un servomotor gire a 0 grados, espere 1 segundo, luego gírelo a 90, espere un segundo más, gírelo a 180 y luego vuelva.

 // Incluye la biblioteca de servos 
#include // Declara el pin del servo int servoPin = 3; // Crear un servo objeto Servo Servo1; void setup () {// Necesitamos adjuntar el servo al número de pin usado Servo1.attach (servoPin); } void loop () {// Hacer que el servo vaya a 0 grados Servo1.write (0); retraso (1000); // Hacer que el servo vaya a 90 grados Servo1.write (90); retraso (1000); // Hacer que el servo vaya a 180 grados Servo1.write (180); retraso (1000); }
Si el servomotor está conectado a otro pin digital, simplemente cambie el valor de servoPin al valor del pin digital que se ha utilizado.

Archivos adjuntos

  • Servo_motor.ino Descargar

Paso 3: cómo funciona

Los servos son dispositivos inteligentes. Usando solo un pin de entrada, reciben la posición del Arduino y van allí. Internamente, tienen un controlador de motor y un circuito de retroalimentación que asegura que el brazo del servo alcance la posición deseada. Pero, ¿qué tipo de señal reciben en el pin de entrada?

Es una onda cuadrada similar a PWM. Cada ciclo en la señal dura 20 milisegundos y la mayor parte del tiempo, el valor es BAJO. Al comienzo de cada ciclo, la señal es ALTA por un tiempo entre 1 y 2 milisegundos. A 1 milisegundo representa 0 grados y a 2 milisegundos representa 180 grados. En el medio, representa el valor de 0-180. Este es un método muy bueno y confiable. El gráfico lo hace un poco más fácil de entender.

Recuerde que el uso de la biblioteca Servo deshabilita automáticamente la funcionalidad PWM en los pines 9 y 10 de PWM en Arduino UNO y placas similares.

Desglose de código

El código simplemente declara el servo objeto y luego lo inicializa utilizando la función servo.attach () . No debemos olvidar incluir la servo biblioteca. En el bucle (), configuramos el servo a 0 grados, esperamos, luego lo configuramos a 90 y luego a 180 grados.

Paso 4: Más cosas sobre los servos

Controlar los servos es fácil, y aquí hay algunos trucos más que podemos usar:

Controlar el tiempo exacto del pulso

Arduino tiene una función incorporada servo.write (grados) que simplifica el control de los servos. Sin embargo, no todos los servos respetan los mismos tiempos para todas las posiciones. Por lo general, 1 milisegundo significa 0 grados, 1.5 milisegundos significa 90 grados y, por supuesto, 2 milisegundos significa 180 grados. Algunos servos tienen rangos más pequeños o más grandes.

Para un mejor control, podemos usar la función servo.writeMicroseconds (us), que toma el número exacto de microsegundos como parámetro. Recuerde, 1 milisegundo equivale a 1, 000 microsegundos.

Más servos

Para usar más de un servo, necesitamos declarar múltiples objetos de servo, adjuntar diferentes pines a cada uno y abordar cada servo individualmente. Primero, necesitamos declarar los servo objetos, tantos como necesitemos:

 // Crear servo objetos Servo Servo1, Servo2, Servo3; 

Luego necesitamos unir cada objeto a un servomotor. Recuerde, cada servomotor utiliza un pin individual:

 Servo1.attach (servoPin1); Servo2.attach (servoPin2); Servo3.attach (servoPin3); 

Al final, solo tenemos que abordar cada objeto servo individualmente:

 Servo1.write (0); // Establecer Servo 1 a 0 grados Servo2.write (90); // Establecer Servo 2 a 90 grados 

En cuanto a la conexión, la conexión a tierra de los servos va a GND en el Arduino, la potencia del servo a 5 V o VIN (dependiendo de la entrada de alimentación) y, al final, cada línea de señal debe conectarse a un pin digital diferente. Contrariamente a la creencia popular, los servos no necesitan ser controlados por pines PWM: cualquier pin digital funcionará.

Servos de rotación continua

Hay una raza especial de servos etiquetados como servos de rotación continua . Mientras que un servo normal va a una posición específica dependiendo de la señal de entrada, un servo de rotación continua gira en sentido horario o antihorario a una velocidad proporcional a la señal. Por ejemplo, la función Servo1.write (0) hará que el servomotor gire en sentido antihorario a toda velocidad. La función Servo1.write (90) detendrá el motor y Servo1.write (180) girará el motor en sentido horario a toda velocidad.

Hay múltiples usos para tales servos; Sin embargo, son realmente lentos. Si está construyendo un microondas y necesita un motor para encender la comida, esta es su elección. Pero ten cuidado, ¡las microondas son peligrosas!

Paso 5: Mira más

Puede encontrar más temas relacionados con motores como motores sin escobillas, controladores de transistores o control de velocidad del motor en mi libro de cocina de desarrollo Arduino disponible aquí. :RE

Artículos Relacionados