Controlar un servomotor con arduino
Que es y como funciona un servomotor
Un servomotor generalmente conocido como Servo es básicamente un motor de corriente continua sumado a un conjunto de engranajes y un circuito interno de control, todo esto le da la capacidad de posicionarse en ángulos determinados dependiendo su rango de operación. La gran utilidad que tenemos al utilizar servo motores es controlar movimientos de forma muy precisa.
Un servomotor esta formado a grandes rasgos por tres partes, un motor de continua, una carcasa y una circuiteria de control para darle estabilidad y la baja inercia que caracterizan a estos dispositivos.
Estos dispositivos son muy utilizados en la industria del aeromodelismo, generalmente en Autos, helicopteros, barcos, aviones y cualquier dispositivo que necesite controlar movimientos con prescicion.
Como controlo la posición?
La forma de controlarlo es muy Simple, se basa en la Modulación por ancho de pulsos PWM.
El ancho del pulso que le enviemos determinara el angulo de posicionamiento del servo motor, el circuito interno codifica el ancho de pulso que le ingresa y posiciona el servo en el angulo equivalente al ancho del puso emitido.
La mayoría de los servos de control digital (los que podemos conectar directamente a arduino) funcionan a una frecuencia de 50Hz, lo que nos da un periodo de 20ms. T = 1/F.
Ton es el tiempo en estado alto de la señal(es decir el tiempo en que enviamos un 1) y Toff es el tiempo en estado bajo de la señal(es decir el tiempo en que enviamos un 0)
Como mover a 0° mediante arduino
Para posicionarlo a cero grados, debemos enviar una señal con Ton=2,3ms - Toff=17,7ms
Una vez que el servo alcanzo la posición indicada, aunque sigamos enviando la señal el servo no se moverá de los cero grados.
Como mover a 180° mediante arduino
Para posicionar el servo a 180 grados, debemos enviar una señal con Ton=0,3ms - TOff=19,7ms
Cualquier señal enviada con un Ton entre 0,3 y 2,3 ms posicionara el servo entre 0 y 180 grados.
Si nuestra intensión es posicionar el servo en algún angulo mas especifico lo que tendríamos que hacer es realizar señales de prueba hasta que encontremos la señal adecuada.
Diagrama de conexión de un servo motor con arduino
Aca les dejo el código
#include <Servo.h> Servo MiServo; int Angulo; int Posicion; /* Autor: Veloso Cristian Web:ElectronTools.blogspot.com */ void setup() { MiServo.attach(8);//Pin de control } void setup() { Angulo = 90; Posicion = map(Angulo,0,1023,0,179);//Establecemos la relacion entre el angulo y el PWM, y le mandamos el map al servo MiServo.write(Posicion); delay(150); }
Deja un comentario