Controlar servomotor con Arduino creatividad codificada

Controlar servomotor con Arduino

Arduino

Controlar un servomotor es muy sencillo, con la ayuda de Arduino, ya que este posee una librería llamada <Servo.h>, con la cual podemos realizar proyectos como brazos robóticos, domótica, sistemas automatizados, etc.

¿Qué es un servomotor?

Es un motor de corriente continua que en su interior tiene una caja reductora y su respectivo controlador electrónico que nos permite trabajar con una precisión en grados, su rango en grados puede ser de 180 ó 360, esto depende del servomotor que usemos.

¿Cómo funciona un servomotor?

Estos servomotores funcionan con señales PWM, y así variar la posición del eje del servomotor modificando el duty.

Su ciclo de trabajo de estos servomotores es de 0.5 ms a 2.5 ms, si configuramos el servomotor a 0.5 ms se posicionara a 0 grados y 2.5 ms estará a 180 grados, y la división de la diferencia entre estos números representara el restos de los valores en grados que el servomotor puede trabajar, estos datos no es el mismo para todos, suele variar según el fabricante.

servomotor

Conexión de un servomotor

Un servomotor presenta tres cables, la principal es para recibir la señal PWM, los colores de los cables cambian según el fabricante, pero normalmente el cable de la señal PWM es de color amarillo, naranja o blanco, los otros dos cables son de alimentación.

Librería servo de Arduino

Esta libreria de Arduino puede controlar 12 servomotores en Arduino Uno

Arduino Mega puede controlar hasta 48 servomotores, pero debemos contar con una fuente de alimentación externa para los servomotores.

La libreria <servo.h> hace uso del timer 2 de 16 bits lo que quiere decir que no podemos realizar ninguna operación con este Timer.

Para usar esta librería debemos incluir la siguiente instrucción

#include <Servo.h>

Cuando añadimos la librería “servo” de Arduino, recién haremos uso de todas las funciones disponibles en esta librería.

Funciones de la librería servo

Para utilizar estas funciones previamente debemos declarar un objeto del tipo servo.

Servo servo1;

Con estas funciones podremos realizar prácticamente cualquier proyecto con Arduino que incluya el manejo de servomotores.

servo1.attach()

Esta función nos permite declarar el pin que vamos a utilizar para hacer la conexión del servomotor,en muchos casos es necesario calibrar el siclo de trabajo esta función nos permite opcionalmente hacerlo como un parámetro.

Esta función puede tener uno o tres parámetros, el primer parámetro se usa para declarar el pin que vamos a usar, el segundo y tercer parámetro es el duty mínimo y máximo soportado por el servomotor.

Estos datos se la mide en microsegundos y la podemos obtener en la hoja de datos de nuestro servomotor, estos datos son necesarios para calibrar de manera correcta nuestro servomotor, si no se declara el ancho de pulso mínimo sera 544 que será usada para obtener 0 grados y 2400  como ancho de pulso máximo para obtener los 180 grados.

servo1.attach(pin, mínimo, máximo);
servo1.attach(9, 600, 2300);

servo1.write()

Esta función solo tiene un parámetro y se la usa para declarar el ángulo al cual queremos posicionar el eje del servomotor en Arduino.

servo1.write(90);

servo1.writeMicroseconds()

Esta función trabaja con los microsegundos para determinar los grados del servomotor, estos datos se obtiene de la hoja de datos del servomotor, por ejemplo si el servomotor trabaja de 1000 a 2000 microsegundos, 1000 representara a 0 grados, 1500 representara a 90 grados y 2000 representara a 180 grados.

servo1.writeMicroseconds(1500);

servo1.read()

Como dice su nombre nos permite leer el ángulo actual del eje del servomotor.

servo1.read();

servo1. attached()

Gracias a esta función podemos verificar si el pin está declarado para enviar la señal al servomotor, y así podemos realizar alguna tarea extra en caso de que no esté declarado el pin, nos retorna dato booleana, donde “true” quiere decir que está declarado el pin y “false” en caso de no estar declarado.

servo1.attached();

servo1.detach()

Desvincula el pin asignado para enviar la señal al servomotor.

servo1.detach();

1 comentario sobre “Controlar servomotor con Arduino

¿Qué te pareció el artículo?

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  * He leído y acepto la política de privacidad

¿Qué hacemos con tus datos?

Creatividad Codificada como responsable tratará tus datos con la finalidad de gestionar tu participación en nuestro blog informativo. Puedes acceder, rectificar y suprimir tus datos, así como ejercer otros derechos consultando la información adicional y detallada sobre protección de datos en nuestra Política de Privacidad