Arduino. Servomotor

Un servomotor (también llamado servo) es un dispositivo similar a un motor de corriente continua que tiene la capacidad de ubicarse en cualquier posición dentro de su rango de operación en lugar de rotar continuamente, son ideales para hacer cualquier cosa girar en un rango de 0 a 180 grados, son fáciles de conectar  y controlar porque el controlador (puente-H) está integrado en el servo.

Los servos contiene un pequeño motor conectado a través de engranajes a un eje de salida. El eje de salida acciona un brazo del servo y también está conectado a un potenciómetro para indicar la posición. Aunque la duración del pulso es controlado (modulado) dentro del servomotor, los servos requieren pulsos que son diferentes de la modulación por ancho de pulso (PWM) que utilizan los motores cc. Puedes dañar al servo por conectarlo a la salida de analogWrite, es preferible utilizar la biblioteca de servo #include <servo.h>, la coneccion puede ser algo asi:

De igual forma se puede modificar un servomotor para tener una rotación en ambas direcciones (clockwise y counterclockwise)  desconectando la realimentacion del potencimetro de esa manera se puede indicar al servo que de la rotación de forma continua teniendo solo algún control sobre la velocidad. La característica principal en la selección de un motor es el torque. El torque determina la cantidad de trabajo que el motor puede hacer. Generalmente, entre mas grande y pesado  sea un motor mayor torque va a tener.

Controlando la direccion con un Servo

En este ejemplo utilizamos un servomotor para determinar la direccion del vehiculo. Escribi este codigo en Arduino, es simple y muy eficiente para asignar la direccion deacuerdo a su valor de ancho de pulso, in microsegundos, usando la funcion map (int posic = map (p, ‘0’, ‘2’, 544,2400);) asignando 0 a 544 microsegundos (que corresponderian a 0 grados), 1 a  1200 ms (90 grados) y 2 a 2400 ms (180).

#include <Servo.h>

Servo myservo; //objeto tipo servo

void setup(){

Serial.begin(9600);

Serial.println(“Set direction ‘0 – Gira Izq’ ‘1 – Frente’ ‘2 – Gira Dch'”);

myservo.attach(9); //conecta el objeto servo al pin 9

}

void loop(){

if ( Serial.available()) { //Si el puerto serie esta disponible?

char p = Serial.read(); //variable tipo char desde puerto serial

if(p >= ‘0’ && p <= ‘2’) { //Si ch es un numero?

int posic = map(p, ‘0’, ‘2’, 544,2400); //Re-mapea un numero desde un rango a otro

myservo.write(posic);} //escribe el valor de la posicion deacuerdo a la entrada

} //del puero serie

}

Veamos lo que va del prototipo hasta ahora:

y un video! :: 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s