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.
servo motor arduino

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.

servo motor arduino
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

servo motor arduino

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

servo motor 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);
}

Bibliográfica consultada

www.forosdeelectronica.com
www.electroensaimada.com/

ARTICULOS RELACIONADOS

Deja un comentario

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