Manolo el robot equilibrista. Part.1

Pues esto es con lo que he estado entretenido esta ultima temporada. Se llama Manolo y es un robot equilibrista. Basicamente lo que hace es mantener el equilibrio sobre dos ruedas. Viene a ser como un pequeño Segway , esos vehiculos de dos ruedas tan chulos que casi siempre llevan a encima a un policia. Aqui va un video de Manolo para que entendais de lo que hablo.

Manolo esta echo de plastico , parte impreso con la impresora 3D y parte cortado de una tabla de cortar carne de los chinos  con la CNC. La estructura esta inspirada en el B-Robot de JJulio. Para moverlo he usado dos motores paso a paso NEMA17 porque era lo que tenia , pero tambien se podria haber echo con unos motores DC normales lo suficientemente potentes y igual hubiera sido mas facil el codigo. Eso si , para ir bien estos tendrian que tener encoders para saber si el robot se esta moviendo y a que velocidad , aunque se puede mantener el equilibrio sin estos tambien pero con algo mas de movimiento.

En cuanto a la electronica ,el cerebro es un Arduino Uno , aunque si lo hubiera tenido a mano hubiera sido mejor un Arduino leonardo porque este tiene dos timers de 16 bits y el arduino solo uno y asi hubiera podido usar uno por rueda. Con el arduino Uno me he visto obligado a usar los de 8 bits perdiendo algo de precision en su control. Aunque no se hasta que punto se hubiera notado.

Despues hay una placa que me hice que contiene los dos drivers de los motores Pap ,unos Pololu drv8825 ,junto a sus condensadores de desacoplo y sus jumperes para configurar los micropasos. Yo los he usado a 1/16 , obteniendo 3200 pasos por vuelta y asi hacer que su movimiento sea muy suave.

Conexion del driver.

En mi caso el microcontrolador es el arduino y por el pin Step se le mandan los pulsos de los pasos. En Dir segun este en HIGH o en LOW el motor girara en un sentido o en otro. Enable conecta o desconecta el motor y mediante los pines M0,M1 y M2 se configuran los micropasos.

En esta placa tambien hay un divisor de tension con el que mido la tension de la bateria en todo momento y cuando esta baja del umbral que yo le marco ,me avise mediante un led parpadeando y desconecte los motores.  Esto es necesario porque uso una bateria LiPo y estas baterias si se descargan mucho nos las cargamos. Como la bateria es de 11,1 voltios no se puede conecar directamente a una entrada de arduino y por eso es necesario el divisor de tension ,con este divisor reducimos el voltaje a 1/3 y asi me aseguro que siempre este por debajo de 5 voltios.Despues en el arduino multiplico la entrada por tres y ese es el voltaje real de la bateria.La conexion es muy facil y seria asi.

 

Voltimetro con arduino.
Voltimetro con arduino.

Y la funcion que lee el voltaje es esta:

void compVoltaje(){
float voltaje = analogRead(VOLTAJE);
voltaje = voltaje * (5.0 / 1023.0)*3;
if (voltaje<VOL_MIN)
{
while(1)
{
delay(1000);
digitalWrite(LED,HIGH);
delay(100);
digitalWrite(LED,LOW);
delay(100);
digitalWrite(LED,HIGH);
delay(100);
digitalWrite(LED,LOW);
}
}
}

 

Si el voltaje esta por encima del voltaje indicado en VOL__MIN sigue el programa normalmente , si esta por debajo parpadea el led y se queda ahi.

Despues tengo un modulo bluetooth para poder configurar el robot desde el telefono y para poder dirgirlo. Es un HC-05 y es muy facil de conectar tambien. Se puede alimentar a 5 voltios , pero la señal que reciva por el puerto serie RX tiene que ser de 3,3 voltios. Como el arduino funciona a 5V hay que colocar ahi otro divisor de tension. Yo no lo conecto a los pines RX y TX del arduino para poder seguir usando ese puerto serie para depurar el programa. Lo conecto a los pines 10 y 11 , pero para leerlo tengo que crear un puerto serie virtual mediante software serial. Para usar el modulo por primera vez hay que configurarlo mandandole unos comandos especiales atraves de un programa. No voy a explicarlo de momento que si no esto se va a hacer muy largo. Si a alguien le interesa es facil de encontrar en la red.

HC-05 en arduino

 

Y por ultimo lleva un MPU6050 que contiene un acelerometro y un giroscopio. Se comunican mediante i2c , es decir los pines A4 y A5 del arduino. Su conexion es muy sencilla ,pero tambien funciona a 3,3V, cuidado con esto.

mpu-6050

Hasta aqui los componentes de Manolo , en el siguiente post veremos como funciona todo esto.

 

Anuncios

2 thoughts on “Manolo el robot equilibrista. Part.1

  1. Ozzie septiembre 15, 2015 / 9:27 pm

    Hi Elchals,
    nice project and thank you for sharing your project. I have a question, what is the spec of your stepper motor? The ones I have is unipolar 5v, 0.5A, 3.75°. Do you mind posting the specification of your stepper motor? Thank you very much!

    Me gusta

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