lunes, 6 de abril de 2015

Robot Toma decisiones con servo y sensor de ultrasonidos

El siguiente proyecto consiste en la construcción de un Robot que avanza y al encontrarse un obstáculo se para, entonces mediante un sensor de infrarrojos acoplado a un servo-motor, valora la mejor opción de giro, midiendo hacia que lado la distancia a un obstáculo es mayor y tomando la decisión de giro hacia dicho lado.

El Robot está compuesto por:
- 1 Placa Picaxe CHI 035 con chip 18M2+ y driver L293D.
- 1 Servo-Motor.
- 1 Sensor de Infrarrojos SHARP analógico.
- 2 Motorreductores.
- 1 Batería LiPo 7.4v
- 1 Regulador de tensión (Salida 5v).

Detalle del servo con el sensor acoplado


servo y sensor Sharp


Detalle del motorreductor.



Detalle de la placa Picaxe.


Placa Picaxe


El esquema de conexión en la placa Picaxe CHI035 es el siguiente:

Esquema de conexión sensor infrarrojos, servo y motor en Pîcaxe

Vista de conjunto


Robot toma decisiones


VÍDEO DE FUNCIONAMIENTO




CÓDIGO DEL PROGRAMA


servo 0,150  'Servo conectado a la salida 0 directa del chip y en posición central.
setfreq  m4


inicio:
b7=150 'variable del servo motor
readadc C.0,b0
pause 10
medida:
if b0<40 then goto avance  'No hay obstáculo. Hemos calibrado el sensor de infrarrojos
if b0>40 then goto evaluacion  'Encontramos un obstáculo

avance:
low B.4
high B.5
high B.6
low B.7
pause 150
goto inicio


evaluacion:
low B.4 'paramos el coche
low B.5
low B.6
low B.7
pause 50


evaluacion_derecha:
b7=150


derecha:
servo 0,b7
pause 200
let b7=b7+5
pause 10                     
readadc C.0, b0
pause 10

if b0<40 then goto giroderecha 'si la distancia es grande, movemos el coche hacia la derecha
if b7<225 and b7>219 then goto evaluacion_izquierda
pause 10
goto derecha


evaluacion_izquierda:
b7=150
 
izquierda:
servo 0,b7
pause 200
let b7=b7-5
pause 10               
readadc C.0, b0
pause 10

if b0<40 then goto giroizquierda 'si la distancia es grande, movemos el coche hacia la izquierda
pause 10
if b7<81 and b7>75 then goto evaluacion_derecha
pause 10
goto izquierda


giroderecha:
servo 0,150
pause 100
low B.4 'derecha
high B.5
low B.6
high B.7
pause 300

low B.4
low B.5
high B.6
high B.7
readadc C.0,b0
if b0<40 then goto inicio
goto giroderecha


giroizquierda:
servo 0,150
high B.4 'izquierda
low B.5
high B.6
low B.7
pause 300

low B.4
low B.5
high B.6
high B.7
readadc C.0,b0
if b0<40 then goto inicio
goto giroizquierda


Proyecto realizado por Francisco Díaz y Francisco Montiel.

No hay comentarios:

Publicar un comentario

En este espacio puedes comentar la entrada publicada o hacer preguntas o sugerencias