Biological Robot with Artificial Intelligence Not Programmed
Hola a todos!!!, les traigo el
mas reciente proyecto de SOS-Robots BRAINP; Se puede decir que BRAINP
es la fusión
de el BEAM 001 (Bumpers) y BEAM 002 (Sigue Luz).
Cuando empecé de verdad en la robótica como tal fue con
esos dos BEAM, Por
ejemplo BEAM 002 n era así el solo caminaba hacia adelante, pero
se me ocurrió
que podía hacerlo mejor si ponía dos circuitos en vez de
uno, y ahí fue donde
hice mi primera modificación, de ahí trate de modificar
los robots, la verdad
es que como no tenia muchos cocimientos muchas modificaciones fueros
fallidas,
y siempre hubo una que quise hacer y no sabia como.
Fusionar mis dos primeras creaciones jejeje, la verdad es que hace
mucho encontré
alguien que lo había hecho, usando transistores, pero por
aquella época los
transistores eran mi frustración, nunca me funcionaban bien
jajaja, y luego
cuando aprendí lo suficiente nunca volví a encontrar el
circuito que el uso, así
que hace algunos meses me llego la idea de hacerlo, yo ya sabia
programar y
sabia lo sencillos que era usando pics, pero yo siempre quise hacerlo
analógicamente
pero no sabia como.
El problema radica en que los dos circuitos hacen cosas opuestas
totalmente
mientras el circuito de bumpers huye de las cosas que lo activan, el de
luz va
hacia las cosas que lo activan.
LDR IZQ. | LDR DER. | ROBOT |
0 | 0 | Nada |
0 | 1 | Derecha |
1 | 0 | Izquierda |
1 | 1 | Adelante |
BUMPER IZQ. | BUMPER DER. | ROBOT |
0 | 0 | Adelante |
0 | 1 | Izquierda |
1 | 0 | Derecha |
1 | 1 | Atras |
* "1" significa activado
Me fui a dormir con esto en mi cabeza y mientras "Dormía"
llego
a mi un circuito usaba completas lógicas y era muy sencillo,
pero la pregunta
era funcionaria??, brinque de la cama y agarre papel y lápiz y a
diseñar.
Eran las 3 de la maña y estaba haciendo tablas de la verdad para
una red de
compuertas, finalmente funcionaba según mis tablas. Pero nunca
lo construí,
tiempo después hace como un mes conseguí un software
simulador de circuitos, y
dije bueno para probarlo usemos mi diseño haber que,
lamentablemente no
funcionaba, y yo QUE!!! Luego me di cuenta que cometí un error
en la tabla de l
verdad de las compuertas AND, 0 y 0 No es 1 es "0"!!!!!!
Entonces estaba muy decepcionado, pero dije ahorque puedo simularlo lo
Hare
funcionar, me di cuenta que había una compuerta que funcionaba
justo como necesitaba
en lugar de
OK Mucha historia ya, así que adelante con el circuito:
CIRCUITO BRAIN:
Su funcionamiento es
sencillo,
tiene 4 entradas de los sensores, 2 Bumpers y 2 LDR, Tiene 2 Salidas
Para los
motores, (mas adelante veremos como se conectan los 2 motores a esas 2
salidas)
OK Ahora Como funciona?? Bien primero lo dividiré en dos partes
DETECTOR
y COMPARADOR, analicemos las tablas de la verdad de cada uno.
DETECTOR:
En esta parte están los sensores
Primero analicemos que queremos que haga el robot:
El Robot Tiene 4 Movimientos
Adelante
Atrás
Izquierda
Derecha
Y tiene 4 Sensores que deben hacer eso 4 movimientos.
Si El Bumper Derecho es presionado avanzar a
Si El
Si Ambos
BUMPER IZQ. | BUMPER DER. | ROBOT |
0 | 0 | Adelante |
0 | 1 | Izquierda |
1 | 0 | Derecha |
1 | 1 | Atras |
LDR IZQ. | LDR DER. | ROBOT |
0 | 0 | Nada |
0 | 1 | Derecha |
1 | 0 | Izquierda |
1 | 1 | Adelante |
El Bumper Derecho y
el LDR Izquierdo.
El Bumper Izquierdo y el LDR Derecho.
Ambos LDR atrás.
Ambos Bumpers Adelante.
Entonces tenemos que queremos esto:
BUMPER IZQ. | LDR IZQ. | LDR DER. | BUMPER DER. | ROBOT |
0 | 0 | 0 | 1 | Izquierda |
0 | 0 | 1 | 0 | Derecha |
0 | 1 | 0 | 0 | Izquierda |
1 | 0 | 0 | 0 | Derecha |
0 | 1 | 1 | 0 | Adelante |
1 | 0 | 0 | 1 | Atras |
Si Bumper
Derecho Ó el LDR Izquierdo se activan.
Es lo mismo:
Bumper Derecho OR LDR Izquierdo.
Si LDR Izquierdo Y LDR Derecho se activan
Es lo mismo:
LDR Izquierdo AND
el LDR Derecho
*Como podrán notar las Ó
se cambian por OR y
para las "Y" se pone AND.
Ahora solo necesitamos dibujar las compuertas y quedaría
así::
BUM IZQ. | LDR IZQ. | LDR DER. | BUM DER. | IZQ. | ADE | ATRAS | DER. | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
CA | SO | S | SEN | SI | LL | O | S | |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
CA | SO | S | DO | B | L | E | S | |
1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | |
0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | |
CA | SO | S | IM | PO | SI | BLE | S | |
0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | |
0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | |
1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | |
0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | |
1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | |
1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | |
1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
*Esta tabla se puede
llenar simplemente
numerando de el 0 al 15 en binario, así se verán todos
los posibles casos, pero
no quise ponerla en orden, sino dividirla
en los casos fijos y los que no importan en el diseño
básico, pero hay que
poner atención porque mas adelante si serán
importantes ya que esos no
deben afectar en correcto funcionamiento
Los Casos IMPOSIBLES se llaman así ya que el robot no puede
avanzar a la
izquierda y a la derecha al mismo tiempo ni hacia adelante y
atrás al
mismo tiempo, ni que se diga a 3 Y menos a las 4 direcciones
juntas.
**Muchos de estos casos Imposibles no
pueden
siquiera suceder ya que recuerden que es imposible que se active
atrás ni
adelante sin que se activen ambos lados.
Ahora necesitamos un circuito que
compare
esas cuatro entradas y les diga a los motores que deben hacer.
COMPARADOR:
El trabajo de el comparador es simplemente evitar esos casos imposibles
y decir
al motor en que dirección girar, yo quise que me diera una
salida doble donde 1
quiere decir adelante y 0 atrás, Motor A es el motor #1 y B el
#2.
Les seré sincero, el comparador fue la parte que llego a mi en
el sueño, así
que no recuerdo como lo diseñe jajaja, a veces digo: "Como se me
ocurrió
usar esas compuertas!!"
Veamos los casos más sencillos
IZQUIERDA | ADELANTE | ATRAS | DERECHA | MOTOR A | MOTOR B |
0 | 0 | 0 | 0 | 1 | 1 |
0 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 0 | 0 |
*Pueden comprobarlo
revisando
compuerta por compuerta y siguiendo las líneas, no lo hago
porque tendría que hacer
muchos dibujos, es mejor a mano jaja.
Como pueden ver los casos sencillos
funcionan
perfecto, por lo que la primera tarea del comparador esta bien, la
pregunta
ahora es: "Evita que los casos imposibles afecten el funcionamiento
normal
de el robot??"
Vamos los casos imposibles:
IZQUIERDA | ADELANTE | ATRAS | DERECHA | MOTOR A | MOTOR B |
1 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 0 |
0 |
0 | 0 | 1 | 1 | 0 |
0 |
1 | 1 | 0 | 0 | 1 |
1 |
0 | 1 | 1 | 1 | 0 |
0 |
1 | 1 | 1 | 0 | 0 |
0 |
1 | 0 | 1 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 0 | 0 |
*Muchos de estos casos
no pueden
siquiera suceder ya que recuerden que es imposible que se active
atrás ni
adelante sin que se activen ambos lados.
El resultado es satisfactorio!!! Los casos se neutralizan y no afectan
el
funcionamiento del robot, ahora como manejamos motores usando un solo
cable!!!!!??? Pues con un puente H, ahora usare uno muy sencillo
modificado un
poco para funcionar con un solo cable.
Veamos:
Si no aprecian bien,
les explicare.
Hay dos relevadores con sus respetivos diodos para evitar la
inductancia, y el
motor, eso es todo, cada relevador tiene su patita de "+" y
"-" que van a dar al común que a su vez va a las patas de el
motor,
entonces cuando el relé se activa invierte de "+" a "-" en
el común y esto cambia el giro de el motor.
Entonces ahora tenemos un puente H que cambia de estado con un solo
cable
"0" y el motor avaza a un lado; "1" y avanza al otro.
Claro que no podemos conectar directo el relevador a las compuertas
lógicas ya
que estas no tienen el amperaje para activarlos y esto las
quemaría sin duda,
entonces usaremos un transistor, o un Darlington array con un tip
120 o un
ULN2803.
Así seria:
Y SI QUIERO QUE EN VEZ
DE SEGUIR
Puedes jugar con las conexiones, aquí te muestro como:
Moviendo estos
swicthes cambiaras el comportamiento del robot.
Esto es todo por ahora, saludos y suerte.