Por lo general, los servomotores tienen brazos que se pueden controlar con Arduino. Los servomotores consisten en un sistema de control que proporciona comentario sobre la posición actual del eje del motor Esta retroalimentación permite moverse a gran precisión.
Servo Motor Pinout
Por lo general, la mayoría de los servomotores tienen tres alfileres:
Funcionamiento de servomotor
Podemos controlar el servomotor conectando el pin VCC a un pin de 5V y 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 analizamos la hoja de datos de Servo Motors, obtenemos los siguientes parámetros:
Todos estos parámetros están predefinidos en la biblioteca Arduino Servo.
Servo Motors con Arduino
Los servomotores son súper fáciles de controlar con Arduino, gracias a la Biblioteca de servo lo que nos ayuda a personalizar nuestro código de acuerdo con la necesidad y nos permite rotar el servo brazo en nuestro ángulo deseado.
Los tres parámetros mencionados anteriormente se fijan en la biblioteca de servo. Al usar estos parámetros, podemos controlar el ángulo del servomotor de la siguiente manera:
Podemos generar una señal PWM deseada en algunos de los pines Arduino. La señal PWM se administrará en el pin de señal de entrada del servomotor. Conectando dos alfileres restantes de servo a 5V y GND de Arduino.
Cómo controlar el motor de servomotor usando Arduino
Aquí explicaré cómo podemos conectarnos y programar nuestro servomotor usando Arduino. Todo lo que necesitas es:
Cómo programar servo con Arduino
Los siguientes son algunos pasos simples:
Paso 1: Incluya la biblioteca de servo predefinida:
#incluir
Paso 2: Crear objeto servo:
Servo myservo;
Consejo: En caso de que si controla más de un servomotores, debe crear más objetos de servo:
Servo myservo1;
Servo myservo2;
Paso 3: Establezca 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.adjuntar (9);
Etapa 4: Gire el ángulo del motor del servo al valor deseado, por ejemplo, 90O:
Myservo.escribir (pos);
Código Arduino
Abrir programa de ejemplo de Servo Motor desde Archivo> Ejemplo> Servo> barrido, Se abrirá una nueva ventana que nos muestra nuestro Servo Sketch:
#incluir
Servo myservo; // se crea el objeto de servo para controlar el servomotor
int pos = 0; // Para almacenar la posición de servo se crea una nueva variable
setup () void
Myservo.adjuntar (9); // Esto establecerá el pin 9 de Arduino para la salida PWM
bucle void ()
para (pos = 0; pos = 0; pos -= 1) // va de 180 a 0 grados
Myservo.escribir (pos); // dígale a servo que vaya a la posición 'pos'
retraso (5); // espera 5 ms para que el servo pueda llegar a la posición
Una vez que el programa se compila y cargue, el servomotor comenzará a girar lentamente desde la posición inicial de 0 grados a 180 grados, un grado a la vez como pasos. Cuando el motor ha completado la rotación de 180 grados, comenzará su rotación en la dirección opuesta hacia su punto de partida I.mi., 0 grados.
Esquema
Cómo controlar el servomotor usando 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 externos a 5V VCC y GND de Arduino y Middle One a A0 Pin en el tablero Arduino.
Cómo programar servo con potenciómetro
La mayor parte del boceto para el potenciómetro es el mismo que el ejemplo anterior. La única diferencia es una nueva variable Val y enchufe se define antes de la sección de configuración y bucle del código.
int potpin = a0;
int val;
En la sección de bucle, el pin A0 se usa para leer valores para el potenciómetro con función Analogread (). Los tableros Arduino contienen ADC de 10 bits (convertidor analógico a digital) que nos dan valores entre 0 y 1023 dependiendo de la posición del potenciómetro:
val = anicoGread (popin);
Por último, hemos usado mapa() función para volver a mapas de números de 0 a 1023 de acuerdo con el ángulo del servo, ya que sabemos que los servomotores solo pueden girar entre 00 y 1800.
val = map (val, 0, 1023, 0, 180);
Código Arduino
Boceto de perillas abiertas disponibles en Arduino IDE, vaya a Archivos> ejemplos> servo> perilla. Se abrirá una nueva ventana que nos muestra nuestro boceto de perillas para servo:
#incluir
Servo myservo; // Creación de un nombre de servo Nombre MyServo
int potpin = a0; // Definición del pasador analógico para el potenciómetro
int val; // variable que leerá valores de pin analógicos para el potenciómetro
setup () void
Myservo.adjuntar (9); // Pin 9 definido para la señal de entrada PWM de servo en Arduino
bucle void ()
val = anicoGread (popin); // lee valor del potenciómetro (valor entre 0 y 1023)
val = map (val, 0, 1023, 0, 180); // Escala el valor a usar con el servo (valor entre 0 y 180)
Myservo.escribir (val); // establece la posición de servo con valor escalado
retraso (15); // espera a que el servo llegue a la posición
El código anterior nos ayudará a controlar el eje del servomotor usando el potenciómetro, el eje girará entre 0 y 180 grados. También podemos mantener la velocidad junto con la dirección del servo usando.
Diagrama de circuito
¿Cuántos servomotores puedo conectarme 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 máximo de 48 servos se puede conectar con tableros como mega.
Consejo: Podemos ejecutar directamente servo usando la corriente de Arduino, pero recuerde si los motores de servos dibujan más de 500mA Entonces su placa Arduino puede restablecer automáticamente y perder energía. Se recomienda usar siempre una fuente de alimentación dedicada para servomotores.
Conclusión
En este tutorial, hemos cubierto el mecanismo de control de los servomotores con Arduino. Cubrimos los conceptos básicos de controlar la posición del servo y la velocidad utilizando el potenciómetro. Ahora tiene una idea sobre servo y posibilidades para su robótica, proyectos de RC y automatización con servo son infinitas.