martes, 17 de marzo de 2015

Robot Sigue-Muros con 2 ultrasonidos (Frontal y lateral)

Este proyecto consiste en la construcción de un robot que debe permanecer junto a la pared independientemente de la forma que tenga ésta.El sentido de circulación del vehículo es siempre horario ya que los sensores que poseen, así están dispuestos.

Su funcionamiento es:
Cuando el robot se separa demasiado, debe girar para acercarse.
cuando el robot se junta demasiado, debe girar para alejarse.
cuando encuentra un obstáculo de frente, debe pararse y girar hacia atrás de tal forma que evite dicho obstáculo y siga junto a la pared.
El sensor lateral se ha girado para que no esté perpendicular a la pared ya que de ese modo se falseaban los datos obtenidos y no se sabía si se separaba o alejaba.

El Robot está compuesto por:
- 1 Placa Picaxe CHI 035 con chip 18M2+ y driver L293D.
- 2 Sensores de Ultrasonidos HC-SR04. (Su conexión aparece en prácticas anteriores)
- 2 Motorreductores.
- 1 Led Rojo (indicador de marcha atrás).
- 1 Batería LiPo 7.4v
- 1 Regulador de tensión (Salida 5v)
  Imagen del sensor HC-SR04 

Sensor HC-SR04


Motor-Reductor 


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

Esquema de conexión sensor ultrasonidos y motores en Picaxe

Robot sigue-muros



VÍDEO DEL FUNCIONAMIENTO





CÓDIGO DEL PROGRAMA


setfreq m8 '%%%%%%Cambio frecuancia a 8MHz debido a ultrasonidos

'Cambio de variables
symbol frontal=w1
symbol lateral=w3

inicio:
'""""""LECTURA DEL SENSOR FRONTAL""""
Sensorfrontal:
pulsout C.1,2
pulsin C.1,1,w0
pause 10
frontal=w0*5/58
debug frontal


'""""""LECTURA DEL SENSOR LATERAL""""""
Sensorlateral:
pulsout C.0,2
pulsin C.0,1,w2
pause 10
lateral=w2*5/58
debug lateral
if frontal<45 then goto giroesquina 'Pegado de frente
if lateral>=30 and lateral<=50 and frontal>=30 then goto recto  'Distancia correcta
if lateral>50 or lateral =0 and frontal>=30 then goto giroizquierda  'Muy separado de la pared lateral
if lateral<30 and lateral >0 and frontal>=30 then goto giroderecha 'Muy cerca de la pared lateral


recto:'$$$$$$$$$$$$$$$$$$$AVANZA RECTO
low B.4 'avanza el motor 1
high B.5
high B.6 'avanza el motor 2
low B.7
pause 30
goto inicio

giroderecha: '$$$$$$$$$$$$$$$$$$$$GIRO A DERECHAS
low B.4 'Se para
low B.5
low B.6
low B.7
pause 200

low B.4 'Giro hacia la derecha
high B.5
low B.6 
high B.7
pause 100

low B.4 'Se para
low B.5
low B.6
low B.7
pause 200

low B.4 'Recto
high B.5
high B.6
low B.7
pause 30
goto inicio

giroizquierda: '$$$$$$$$$$$$$$$$$$$$GIRO A IZQUIERDAS
low B.4 'Se para
low B.5
low B.6
low B.7
pause 200

high B.6 
low B.7
high B.4 'Giro hacia la izquierda
low B.5
pause 100

low B.4
low B.5
low B.6
low B.7
pause 200

low B.4 'Recto durante unos segundos
high B.5
high B.6
low B.7
pause 30
goto inicio

giroesquina: '$$$$$$$$$$$$$$$$$$$$GIRO DE ESQUINA A DERECHAS
high B.0 'enciende un led rojo

low B.4 'el coche se para
low B.5
low B.6
low B.7
pause 300

low B.4 'gira usando la rueda derecha marcha atrás
low B.5
low B.6
high B.7
pause 450

low B.4 'el coche se para
low B.5
low B.6
low B.7
pause 100
low B.0  'apaga el led rojo

goto inicio


Realizado por: David Legaz y Jaime Hernández.