Genuino Day Taller: Movimiento Robot


Para Controlar el movimiento del robot, tenemos que controlar la rotacion de cada motor.

El primer paso es montar los motores:

montar motores

Despues de montar los motores debemos poner especial atencion en el modulo l298:

modulo l298

Este modulo tiene 4 salidas, 3 entradas para el voltaje y 6 pines de entrada, 3 para cada salida, 1 conectado al pin pwm y 2 a los pines que controlan el motor.

CONEXION

SALIDAS

out 1 out 2 Conectadas a un motor

out 3 y out 4 Conectadas al otro motor

ENTRADAS VOLTAJE

5v al arduino en el pin de 5v

gnd al arduino en su pin gnd

12v al arduino en su pin vin

PINES AL ARDUINO

Para el motor 1 debemos utiliza los pines 2,3 y 5 del arduino

Para el motor 2 debemos utilizar los pines 4,6 y 7 del arduino

Estos van conectados al shield asi:

2 al IN1

3 al IN2

5 al ENA

4 al IN3

6 al IN4

7 al ENB

 

Ahora cargaremos el siguiente codigo:

El codigo en la parte de loop hace que cada motor gire en el sentido que para nosotros sea hacia adelante.

analogWrite(speedPinB, vel);
analogWrite(speedPinA, vel);
//MOTOR 1 adelante
digitalWrite(dir1PinA, HIGH);
digitalWrite(dir2PinA, LOW);
//MOTOR 2 adelante
digitalWrite(dir1PinB, HIGH);
digitalWrite(dir2PinB, LOW);

analogWrite(speedPinB, vel) define la velocidad del motor, vel=255 antes declarado, lo mismo para el segundo motor.

digitalWrite(dir1PinA, HIGH); define el estado del pin, si uno esta en high y el otro en low de cada motor, este empezara a girar.

Si el motor no girara hay que revisar los pines, si el motor gira para el lado contrario hay que cambiar el HIGH por LOW en cada instruccion.

Deduciendo si queremos que el motor gire hacia atras escribimos:

analogWrite(speedPinB, vel);
analogWrite(speedPinA, vel);
//MOTOR 1 atras
digitalWrite(dir1PinA, LOW);
digitalWrite(dir2PinA, HIGH);
//MOTOR 2 atras
digitalWrite(dir1PinB, LOW);
digitalWrite(dir2PinB, HIGH);

Si necesitamos sacar todas las direcciones:

Como se pueden dar cuenta nombramos 5 funciones: adelante(), atras(), izquierda(), derecha() y alto() y las podemos invocar en la funcion loop con ciertos delays para notar el movimiento en funcion del tiempo.

En nuestra funcion loop colocamos:

adelante(vel);
delay(1000);
atras(vel);
delay(1000);
adelante(1000);
delay(2000);
alto();
delay(20000);

El robot lo que hace es ir hacia adelante 1 segundo, ir hacia atras 1 segundo, va hacia adelante 2 segundos y para por 20 segundos.

Donde vel=255 antes declarado y la funcion delay(1000) toma como parametro el 1000 o sea 1 segundo.

 

Con este codigo cada vez que lo carguemos podemos pedirle que vaya en diferentes direcciones dependiendo la funcion que invoquemos.

Lo que sigue es pedirle a traves de comunicacion serial que vaya hacia la direccion que nosotros tecleemos, tambien estará el tutorial para hacer esto de forma inhalambrica y los tutoriales para usar los sensores.


Acerca de darkaw_remse

Administrador de poca monta, mi interes principal dentro de la informatica es la programacion web, entusiasta de las nuevas tecnologias en hardware y software. Sueño con tener un sitio que cobre inteligencia propia =p

Deja un comentario