Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PEDRO P. DÍAZ
ELECTRÓNICA INDUSTRIAL
Proyecto:
Presentado por:
AREQUIPA – PERÚ
2009
1
DEDICATORIA
brindado.
2
AGRADECIMIENTOS
desarrollo “GRID” de la Universidad Alas Peruanas, que fueron los únicos que se
3
RESUMEN
Un robot es una entidad virtual o mecánica artificial. En la práctica, esto es por lo general
un sistema electro-mecánico que, por su apariencia o sus movimientos, ofrece la sensación
de tener un propósito propio. La palabra robot puede referirse tanto a mecanismos físicos
como a sistemas virtuales de software, aunque suele aludirse a los segundos con el término
de bots.
No hay un consenso sobre qué máquinas pueden ser consideradas robots, pero sí existe un
acuerdo general entre los expertos y el público sobre que los robots tienden a hacer parte o
todo lo que sigue: moverse, hacer funcionar un brazo mecánico, sentir y manipular su
entorno y mostrar un comportamiento inteligente, especialmente si ése comportamiento
imita al de los humanos o a otros animales.
El sentido de aplicar una red neuronal Perceptron es que debido a su sencillez es muy fácil
comprenderlo, y también ya que solo se controla el avance o retroceso de la maquina, y al
ser estas variables independientes, el uso de una red Perceptron es optimo y muy útil.
4
INDICE GENERAL
Pág.
Dedicatoria 2
Agradecimientos 3
Resumen 4
Índice General 5
Índice de Figuras 6
Índice de tablas 7
Índice de Anexos 8
Introducción 9
Bibliografía Consultada 68
Anexos 69
5
ÍNDICE DE FIGURAS
Pág.
Figura 2. Función OR 15
Figura 8. LM567 44
6
ÍNDICE DE TABLAS
Pág.
7
ÍNDICE DE ANEXOS
Pág.
Anexo - LM567 73
Anexo - PN2N2222 76
Anexo - BC547 79
Anexo - BC556 81
8
INTRODUCCIÓN
continuación:
saltantes.
presento la bibliografía consultada, en la cual detallo los textos utilizados y las páginas web
a las cuales he recurrido para la obtención de información técnica, conocida como Data
carácter técnico informativo para las personas que se dignen investigar en este modesto
trabajo.
Gracias
9
CAPÍTULO 1
PLANTEAMIENTO TEÓRICO
ROBOT
No hay un consenso sobre qué máquinas pueden ser consideradas robots, pero sí
existe un acuerdo general entre los expertos y el público sobre que los robots
tienden a hacer parte o todo lo que sigue: moverse, hacer funcionar un brazo
mecánico, sentir y manipular su entorno y mostrar un comportamiento inteligente,
especialmente si ése comportamiento imita al de los humanos o a otros animales.
Aunque las historias sobre ayudantes y acompañantes artificiales, así como los
intentos de crearlos, tienen una larga historia, las máquinas totalmente autónomas
no aparecieron hasta el siglo XX. El primer robot programable y dirigido de forma
digital, el Unimate, fue instalado en 1961 para levantar piezas calientes de matel de
una máquina de tinte y colocarlas.
Por lo general, la gente reacciona de forma positiva ante los robots con los que se
encuentra. Los robots domésticos para la limpieza y mantenimiento del hogar son
cada vez más comunes en los hogares. No obstante, existe una cierta ansiedad sobre
el impacto económico de la automatización y la amenaza del armamento robótico,
una ansiedad que se ve reflejada en el retrato a menudo perverso y malvado de
robots presentes en obras de la cultura popular. Comparados con sus colegas de
ficción, los robots reales siguen siendo torpes y cortos de entendederas.
10
La robótica es la ciencia y la tecnología de los robots. Se ocupa del diseño,
manufactura y aplicaciones de los robots.[][] La robótica combina diversas
disciplinas como son: la mecánica, la electrónica, la informática, la inteligencia
artificial y la ingeniería de control [] Otras áreas importantes en robótica son el
álgebra, los autómatas programables y las máquinas de estados.
Historia de la robótica
Nombre del
Fecha Importancia Inventor
robot
11
cuatro músicos
robotizados
Caballero
c. 1495 Diseño de un robot humanoide Leonardo da Vinci
mecánico
Rossum's
Aparece el primer autómata de ficción llamado
1921 Universal Karel Čapek
"robot", aparece en R.U.R.
Robots
1973 Primer robot con seis ejes electromecánicos Famulus KUKA Robot Group
12
RED NEURONAL PERCEPTRON SIMPLE
13
Los pesos son actualizados después de cada entrada según la regla de actualización
siguiente:
14
Figura 1. Función AND Figura 2. Función OR
La función XOR no puede ser aprendida por un único perceptrón puesto que
requiere al menos de dos líneas para separar las clases (0 y 1). Debe utilizarse al
menos una capa adicional de perceptrones para permitir su aprendizaje.
Perceptrón multicapa
El perceptrón multicapa es una red neuronal artificial (RNA) formada por
múltiples capas, esto le permite resolver problemas que no son linealmente
separables, lo cual es la principal limitación del perceptrón (también llamado
perceptrón simple). El perceptrón multicapa puede ser totalmente o localmente
conectado. En el primer caso cada salida de una neurona de la capa "i" es entrada
de todas las neuronas de la capa "i+1", mientras que el segundo, cada neurona de
la capa "i" es entrada de una serie de neuronas (región) de la capa "i+1".
15
Figura 4. Red Neuronal Perceptron Multicapa
Características
Limitaciones
16
entrenamiento se detiene aunque no se haya alcanzado la tasa de convergencia
fijada.
Aplicaciones
Compresión de datos
17
Descompresión: Para descomprimir los datos utilizamos un MLP de dos capas,
la de entrada con M neuronas y la de salida con N, los pesos de estas dos capas
son los de la capa oculta y la de salida respectivamente, del MLP que
entrenamos anteriormente.
18
CAPÍTULO 2
MARCO DE REFERENCIA
MICROCONTROLADOR
Características
19
Los microcontroladores representan la inmensa mayoría de los chips de
computadoras vendidos, sobre un 50% son controladores "simples" y el restante
corresponde a DSPs más especializados. Mientras se pueden tener uno o dos
microprocesadores de propósito general en casa (Ud. está usando uno para esto),
usted tiene distribuidos seguramente entre los electrodomésticos de su hogar una o
dos docenas de microcontroladores. Pueden encontrarse en casi cualquier
dispositivo electrónico como automóviles, lavadoras, hornos microondas, teléfonos,
etc.
20
dispositivos de entrada/salida o la memoria que incluye el microcontrolador, se ha
de prescindir de cualquier otra circuitería.
Núcleo de un microcontrolador
Arquitecturas de computadora
Esta arquitectura es la variante adecuada para las PC, porque permite ahorrar una
buena cantidad de líneas de E/S, que son bastante costosas, sobre todo para aquellos
sistemas como las PC, donde el procesador se monta en algún tipo de socket alojado
en una placa madre (motherboard). También esta organización les ahorra a los
diseñadores de motherboards una buena cantidad de problemas y reduce el costo de
este tipo de sistemas.
22
La desventaja está en que consume muchas líneas de E/S del procesador; por lo que
en sistemas donde el procesador está ubicado en su propio encapsulado, solo se
utiliza en supercomputadoras. Sin embargo, en los microcontroladores y otros
sistemas embebidos, donde usualmente la memoria de datos y programas comparten
el mismo encapsulado que el procesador, este inconveniente deja de ser un
problema serio y es por ello que encontramos la arquitectura Harvard en la mayoría
de los microcontroladores.
Procesador en detalle
Hace algún tiempo alguien me preguntaba cuales eran los dos inventos y los dos
descubrimientos más relevantes en el desarrollo de la humanidad y después de un
poco de reflexión llegamos a la siguiente conclusión; descubrimientos: el fuego, y la
electricidad; inventos: la rueda y el microprocesador. Claro que los más excelsos
eruditos pueden estar en desacuerdo con nosotros, pero no debemos estar lejos de la
verdad.
En los años 70 del siglo XX, la electrónica digital todavía andaba medio que en
pañales, pero dentro de la electrónica ya era una especialidad consagrada. En aquel
entonces las computadoras se diseñaban para que realizaran algunas operaciones
muy simples, y si se quería que estas máquinas pudiesen hacer cosas diferentes, era
necesario realizar cambios bastante significativos al hardware.
A principios de los años 70, una empresa japonesa le encargó a una joven compañía
norteamericana que desarrollara un conjunto de circuitos para producir una
calculadora de bajo costo. INTEL se dedicó de lleno a la tarea y entre los circuitos
encargados desarrolló uno muy especial, algo no creado hasta la fecha: el primer
microprocesador integrado.
23
pero desde una óptica diferente: sus entradas son una serie de códigos bien
definidos, que permiten hacer operaciones de carácter específico cuyo resultado está
determinado por el tipo de operación y los operandos involucrados.
Ahora comenzaremos a ver cómo es que está hecho un procesador, no será una
explicación demasiado detallada porque desde su invención éste ha tenido
importantes revoluciones propias, pero hay aspectos básicos que no han cambiado y
que constituyen la base de cualquier microprocesador. En la Figura 4 podemos ver
la estructura típica de un microprocesador, con sus componentes fundamentales,
claro está que ningún procesador real se ajusta exactamente a esta estructura, pero
24
aún así nos permite conocer cada uno de sus elementos básicos y sus
interrelaciones.
Registros
Mientras mayor sea el número de bits de los registros de datos del procesador,
mayores serán sus prestaciones, en cuanto a poder de cómputo y velocidad de
ejecución, ya que este parámetro determina la potencia que se puede incorporar al
resto de los componentes del sistema, por ejemplo, no tiene sentido tener una ALU
de 16 bits en un procesador de 8 bits.
Por otro lado un procesador de 16 bits, puede que haga una suma de 16 bits en un
solo ciclo de máquina, mientras que uno de 8 bits deberá ejecutar varias
instrucciones antes de tener el resultado, aún cuando ambos procesadores tengan la
misma velocidad de ejecución para sus instrucciones. El procesador de 16 bits será
más rápido porque puede hacer el mismo tipo de tareas que uno de 8 bits, en menos
tiempo.
25
Unidad de control
Como los procesadores son circuitos que hacen básicamente operaciones lógicas y
matemáticas, se le dedica a este proceso una unidad completa, con cierta
independencia. Aquí es donde se realizan las sumas, restas, y operaciones lógicas
típicas del álgebra de Boole.
26
Su impacto en las prestaciones del procesador es también importante porque,
dependiendo de su potencia, tareas más o menos complejas, pueden hacerse en
tiempos muy cortos, como por ejemplo, los cálculos en coma flotante.
Buses
Conjunto de instrucciones
Define las operaciones básicas que puede realizar el procesador, que conjugadas y
organizadas forman lo que conocemos como software. El conjunto de instrucciones
vienen siendo como las letras del alfabeto, el elemento básico del lenguaje, que
organizadas adecuadamente permiten escribir palabras, oraciones y cuanto
programa se le ocurra.
27
Existen dos tipos básicos de repertorios de instrucciones, que determinan la
arquitectura del procesador: CISC y RISC.
RISC, del inglés Reduced Instruction Set Computer, Computadora con Conjunto de
Instrucciones Reducido. Se centra en la obtención de procesadores con las
siguientes características fundamentales:
28
Los procesadores de los microcontroladores PIC, que trataremos en este libro, son
de tipo RISC y veremos su arquitectura y repertorio de instrucciones en detalle.
Memoria
29
continuación se describen las cinco tecnologías existentes, que mayor utilización
tienen o han tenido, hasta el momento de escribir este libro:
Los microcontroladores con memoria OTP se pueden programar una sola vez, con
algún tipo de programador. Se utilizan en sistemas donde el programa no requiera
futuras actualizaciones y para series relativamente pequeñas, donde la variante de
máscara sea muy costosa, también para sistemas que requieren serialización de
datos, almacenados como constantes en la memoria de programas.
30
de memoria han caído en desuso, se utilizaban en sistemas que requieren
actualizaciones del programa y para los procesos de desarrollo y puesta a punto.
Al disminuir los costos de los encapsulados, los microcontroladores con este tipo de
memoria se hicieron más baratos y cómodos para trabajar que sus equivalentes con
memoria EPROM. Otra característica destacable de este tipo de microcontrolador es
que fue en ellos donde comenzaron a utilizarse los sistemas de programación en
circuito o ICSP (In Circuit Serial Progamming) que evitan tener que sacar el
microcontrolador de la tarjeta que lo aloja para hacer actualizaciones al programa.
Interrupciones
Imagine que está esperando la visita de un amigo, al que llamaremos Juan. Usted y
Juan han acordado que cuando él llegue a su casa esperará pacientemente a que le
abra la puerta. Juan no debe tocar a la puerta porque alguien en la casa duerme y
no quiere que le despierten.
Ahora usted ha decidido leer un libro mientras espera a que Juan llegue a la casa,
y para comprobar si ha llegado, cada cierto tiempo detiene la lectura, marca la
página donde se quedó, se levanta y va hasta la puerta, abre y comprueba si Juan
32
ha llegado, si éste todavía no está en la puerta, esperará unos minutos, cerrará la
puerta y regresará a su lectura durante algún tiempo.
Como verá este es un método poco eficiente para esperar a Juan porque requiere que
deje la lectura cada cierto tiempo y vaya hasta la puerta a comprobar si él ha
llegado, además debe esperar un rato si todavía no llega. Y por si fuera poco,
imagine que Juan no llega nunca porque se le presentó un problema, tuvo que
cancelar la cita y no pudo avisarle a tiempo, o peor, que Juan ha llegado a la puerta
un instante después que usted la cerraba. Juan, respetando lo acordado, espera un
tiempo, pero se cansa de esperar a que le abran y decide marcharse porque cree que
ya usted no está en la casa o no puede atenderlo. A este método de atender la
llegada de Juan lo llamaremos encuesta.
33
El mundo está lleno de situaciones; de las cuales no podemos determinar ni cuando,
ni cómo ni por qué se producen, en la mayoría de los casos lo único que podemos
hacer es enterarnos de que determinada situación, asociada a un proceso, ha
ocurrido. Para ello seleccionamos alguna condición o grupo de condiciones que nos
indican que el proceso que nos interesa debe ser atendido, a este fenómeno, en el
cual se dan las condiciones que nos interesa conocer, lo llamaremos evento. En el
segundo ejemplo vemos que para atender a Juan, éste debe tocar el timbre, por
tanto, la llegada de Juan es el proceso que debemos atender y el sonido del timbre es
el evento que nos indica que Juan ha llegado.
El método de atención a procesos por interrupción, visto desde la óptica del ejemplo
que utilicé para mostrarlo, es más simple que el de la encuesta, pero no es cierto, el
método se complica porque requiere que el microprocesador incorpore circuitos
adicionales para registrar los eventos que le indican que debe atender al proceso
asociado y comprender estos circuitos y su dinámica no es una tarea sencilla.
Los circuitos para la atención a las interrupciones y todas las tareas que debe
realizar el procesador para atender al proceso que lo interrumpe son bastante
complejos y requieren una visión diferente de la que estamos acostumbrados a tener
de nuestro mundo.
35
4. La unidad de ejecución termina con la instrucción en curso y justo antes de
comenzar a ejecutar la siguiente comprueba que se ha registrado una
interrupción
5. Se desencadena un proceso que permite guardar el estado actual del
programa en ejecución y saltar a una dirección especial de memoria de
programas, donde está la primera instrucción de la subrutina de atención a
interrupción.
6. Se ejecuta el código de atención a interrupción, esta es la parte “consciente”
de todo el proceso porque es donde se realizan las acciones propias de la
atención a la interrupción y el programador juega su papel.
7. Cuando en la subrutina de atención a interrupción se ejecuta la instrucción
de retorno, se desencadena el proceso de restauración del procesador al
estado en que estaba antes de la atención a la interrupción.
Las interrupciones son tan eficaces que permiten que el procesador actúe como si
estuviese haciendo varias cosas a la vez cuando en realidad se dedica a la misma
rutina de siempre, ejecutar instrucciones una detrás de la otra.
Periféricos
36
pines del microcontrolador. A continuación describiremos algunos de los periféricos
que con mayor frecuencia encontraremos en los microcontroladores.
Típicamente cualquier pin de E/S puede ser considerada E/S de propósito general,
pero como los microcontroladores no pueden tener infinitos pines, ni siquiera todos
los pines que queramos, las E/S de propósito general comparten los pines con otros
periféricos. Para usar un pin con cualquiera de las características a él asignadas
debemos configurarlo mediante los registros destinados a ello.
Temporizadores y contadores
Son circuitos sincrónicos para el conteo de los pulsos que llegan a su entrada de
reloj. Si la fuente de conteo es el oscilador interno del microcontrolador es común
que no tengan un pin asociado, y en este caso trabajan como temporizadores. Por
otra parte, cuando la fuente de conteo es externa, entonces tienen asociado un pin
configurado como entrada, este es el modo contador.
Conversor A/D
Como es muy frecuente el trabajo con señales analógicas, éstas deben ser
convertidas a digital y por ello muchos microcontroladores incorporan un conversor
A/D, el cual se utiliza para tomar datos de varias entradas diferentes que se
seleccionan mediante un multiplexor.
Las resoluciones más frecuentes son 8 y 10bits, aunque hay microcontroladores con
conversores de 11 y 12 bits, para resoluciones mayores es preciso utilizar
conversores A/D externos. Los conversores A/D son uno de los periféricos más
codiciados en el mundo de los microcontroladores y es por ello que muchísimos PIC
los incorporan, siendo esta una de las características más destacables de los
dispositivos que fabrica Microchip.
Puerto serie
38
se puede utilizar para interconectar dispositivos mediante otros estándares de
comunicación.
Comparadores
39
Modulador de ancho de pulsos
Los PWM (Pulse Width Modulator) son periféricos muy útiles sobre todo para el
control de motores, sin embargo hay un grupo de aplicaciones que pueden realizarse
con este periférico, dentro de las cuales podemos citar: la conversión digital
analógica D/A, el control regulado de luz (dimming) entre otras.
Familias de microcontroladores
12 14 64
Empresa 8 bits bit bit 16 bits 32 bits bit Observaciones
s s s
ATmega8,89Sxxxx
Atmel
familia similar ATmega16
AVR
8051
40
68HC12,
Freescale
68HC05, 68HC08, 68HCS12, 683xx, PowerPC
(antes x x x x
68HC11, HCS08 68HCSX12, Architecture,ColdFire
Motorola)
68HC16
Hitachi, Ltd H8 x x x x x x
Holtek HT8
MCS-48 (familia
8048)
MCS96,
Intel MCS51 (familia x x x x x
MXS296
8051)
8xC251
National
COP8 x x x x x x
Semiconductor
Familia 10f2xx
Familia 12Cxx dsPIC30FXX
Microchip Familia 12Fxx, y dsPIC33F PIC32 x x
16Cxx y 16Fxx de 16 bits
18Cxx y 18Fxx
NEC 78K
Parallax
ST ST 62,ST 7
Texas
TMS370, MSP430
Instruments
41
Zilog Z8, Z86E02
Silabs C8051
CAPÍTULO 3
PLANTEAMIENTO OPERACIONAL
Diagrama de bloques
42
Como se observa en la Figura 6, el diagrama de bloques del robot, ayudara a entender como
fue desarrollado y de qué forma.
43
Figura 7. Detector infrarrojo de proximidad
Figura 8. LM567
44
Como se observa en la Figura 8. Entre las patillas 5 y 6 del integrado van el resistor y
el capacitor de timing, esto significa que si variamos los valores de estos componentes,
entonces podemos hacer que emitan ráfagas distintas cada uno de los sensores, y con
esto solucionaríamos el problema de que puedan cruzarse y censar erróneamente.
La patilla 8 del integrado es la que entrega la salida, pero usa lógica inversa, es decir
que cuando no hay objeto cerca, entrega un 1 y cuando si lo hay entrega un 0, de eso la
necesidad de usar un transistor PNP para la interfaz con el PIC, claro que también se
aprovecha su factor de amplificación.
45
En la Figura 9. Tenemos el diagrama esquemático completo de los sensores, pero
observamos un componente más, una compuerta lógica NAND 7402, el uso de esta
compuerta es indispensable, ya que el valor entregado por el transistor PNP de salida
de cada uno de los circuitos no alcanza el 1 lógico (5v.), claro que también podemos
usar un buffer para asegurarnos de que sea entregado un 0 o 1 lógico.
- Potencia.
El circuito de potencia en una primera instancia estuvo conformado por los drivers para
motores PAP L293b, este driver según especificaciones técnicas soporta una intensidad
de 900mA, al momento de realizar la prueba, estos drivers se quemaron, ya que los
motores que se usan consumen un total de 1.2A.
Por tal razón fue necesario pensar en otra forma de controlar esta potencia con solo la
salida de 5v. del PIC; se pensó en usar relés y transistores en configuración Darlington
pero esa idea fue descartada por el consumo de corriente que estos demandan.
Se investigo sobre los llamados MOSFET y fueron la solución óptima al problema, se
decidió usar el MOSFET IRF540n que es según sus especificaciones técnicas soporta
hasta 33A.
46
Figura 11. Diagrama esquemático del circuito de potencia
Como se observa en la Figura 11. Se usan un total de 12 MOSFET, 4 para cada motor
PAP, y simplemente una resistencia de 1K en cada Gate de los IRF540n, basta con una
alimentación de 12v. para energizar las bobinas de los motores.
La aplicación de los MOSFET es solo cerrar el circuito de GND cada vez que el PIC le
entregue un bit 1 y abrir el circuito cuando le llegue un 0.
47
En la Figura 12. Claramente se aprecia cómo es que se colocan los MOSFET para
controlar cada uno de los motores, son tres motores ya que el gusano llevara dos en la
cabeza y uno en la cola, eso para poder lograr el movimiento “˄”
- Motores.
En la etapa de los motores no requiere mayor explicación ya que solo se usan motores
PAP unipolares, de 1.2A
- Batería.
Esta etapa está conformada solo de una batería de 12v. y 1.2Ah.
Esta medida expresa cuántos amperes puede entregar una batería en una cantidad de
horas específica (usualmente el ciclo es de 20 horas). Por ejemplo, una batería marcada
como de 100 Ah (Amperes/hora), puede entregar 5 Amperes durante 20 horas (5 x 20
= 100 Ah).
Si se quiere que nuestro robot tenga una autonomía por varias horas, solo será
necesario reemplazar la batería por una de mayor potencia.
- PIC.
Es en esta etapa en la que se colocara el programa y toda la lógica de control, es este el
cerebro del robot.
Se decidió usar un PIC 16f877a debido a su cantidad de patillas ya que para cada motor
usamos 4, también se usan 3 para los sensores de proximidad y 2 más para saber si esta
comprimido o expandido el cuerpo del robot.
El PIC 16f877a es actualmente uno de los más usados, pero, para usarlo como cerebro
de un robot tiene una deficiencia, y es su consumo de potencia, sería ideal usar un PIC
de bajo consumo.
MICROCHIP empresa fabricadora de los PIC, tiene una gama de PIC diseñados para
poco consumo, sería ideal reemplazar el 16f877a por alguno de esta gama, así
estaríamos ahorrando energía.
48
Figura 13. PCB para el PIC 16f877a
Fue necesario diseñar una placa que contenga el circuito mínimo para poder usar el
PIC 16f877a, este circuito solo contiene un regulador 7805, un cristal de cuarzo para el
oscilador que en este caso es de 4Mhz, y un pulsador para el reset.
- Software.
Como se explico en los objetivos de este proyecto, uno de ellos es poder experimentar
en redes neuronales para el control.
Se decidió usar una red neuronal Perceptron, porque es la más simple y además
contamos con variables linealmente independientes.
Primero hay que analizar cada una de las variables a tener en cuenta y también el
movimiento del robot.
Partimos con la definición de que un robot es un dispositivo automático que realiza
acciones especificas, que dependen de las necesidades del proceso en que se encuentre
involucrado, en este caso se tiene un robot que cuenta con tres sensores de proximidad
en distintas ubicaciones que permanentemente detectan si hay objetos que se
encuentren a una distancia superior o inferior a la preestablecida, con base en esto se
decide si dar marcha adelante o atrás a cada uno de los tres motores que posee; en las
lecturas de los sensores podrían darse 8 posibles combinaciones (8=2 3) y para cada
combinación cada uno de los tres motores podría dar marcha adelante o marcha atrás.
El comportamiento del robot lo describe a continuación en la Tabla 1, cuando los
sensores detecten un objeto que se encuentra a una distancia inferior a la
predeterminada se dirá que el objeto se encuentra cerca y esto se representa por medio
49
de un 1 y cuando se detecte un objeto que se encuentra a una distancia mayor que la
predeterminada se dirá que el objeto está lejos lo cual se indica con un 0.
Las variables de entrada son S1, S2, S3, siendo S1 el sensor delantero, S2 el sensor
derecho y S3 el sensor izquierdo.
Separaremos el sentido de giro por dos variables, las llamaremos G1, G2, siendoM1 el
movimiento hacia adelante, G1 el giro a la derecha y G2 el giro a la izquierda.
S1 S2 S3 M1 G1 G2
0 0 0 1 0 0
0 0 1 1 0 0
0 1 0 1 0 0
0 1 1 1 0 0
1 0 0 0 1 0
1 0 1 0 1 0
1 1 0 0 0 1
1 1 1 0 0 0
Tabla 1. Comportamiento del robot
50
entrenamiento, en este caso cada patrón de cuatro dimensiones generara dos
desigualdades (una por cada salida), estas desigualdades no deben contradecirse, si esto
ocurriera el problema no podría ser resuelto por una red tipo Perceptrón de una sola
capa y deberá buscarse otro tipo de solución.
Debido a la naturaleza de la salida, la función transferencia a utilizar es una hardlim,
pero para nuestro caso de estudio, no sería optima, esto debido a lo que tarda en ser
entrenada, así que se realizara una aproximación a la función hardlims, de este modo
quedaría un 1 para indicar el estado lógico 1 y un -1 para el estado lógico 0 y la tabla
sería la siguiente:
S1 S2 S3 M1 G1 G2
-1 -1 -1 1 -1 -1
-1 -1 1 1 -1 -1
-1 1 -1 1 -1 -1
-1 1 1 1 -1 -1
1 -1 -1 -1 1 -1
1 -1 1 -1 1 -1
1 1 -1 -1 -1 1
1 1 1 -1 -1 -1
Tabla 2. Comportamiento del robot 2
Como ahora usamos una función hardlims, esta se rige por las siguientes condiciones.
51
Luego de armar la red, quedaría como lo muestra la Figura 14.
Se creará una red de 3 entradas con una neurona tipo Perceptrón para cada salida,
teniendo así una salida bidimensional, los pesos iniciales aleatorios de la red se
muestran en la Tabla 3.
S1 S2 S3
M1 0.8636 -0.1627 0.0503 M1 1
G1 -0.0680 0.1627 -0.5947 G1 1
G2 0.1627 0.1627 0.8636 G2 1
Tabla 3. Valores iniciales de la red
El siguiente código crea una red tipo Perceptrón con función de transferencia hardlims,
dos neuronas en la salida, utiliza como patrones de entrenamiento las lecturas de los
52
cuatro sensores almacenados en p y como patrones objetivo o salidas deseadas las
acciones de ambos motores almacenados en el vector t.
Los pesos finales de la red entrada que satisface todos los patrones de entrada y salida
son:
S1 S2 S3
M1 0.8636 -4.1627 0.0503 M1 1
G1 -4.0680 0.6924 -4.5947 G1 1
G2 0.8636 -4.1627 0.0503 G2 1
Tabla 4. Valores finales de la red
La respuesta de la red a todos los patrones de entrenamiento fue exitosa, como puede
observarse en la Tabla 5.
S1 S2 S3 M1 G1 G2
-1 -1 -1 1 -1 -1
-1 -1 1 1 -1 -1
1 1 -1 -1 -1 1
53
1 1 1 -1 -1 -1
Tabla 5. Simulación de la red para los
Patrones de Entrenamiento
La red fue simulada para las posibles combinaciones restantes obteniéndose los
siguientes resultados:
S1 S2 S3 M1 G1 G2
-1 -1 -1 1 -1 -1
-1 -1 1 1 -1 -1
-1 1 -1 1 -1 -1
-1 1 1 1 -1 -1
1 -1 -1 -1 1 -1
1 -1 1 -1 1 -1
1 1 -1 -1 -1 1
1 1 1 -1 -1 -1
Tabla 6. Simulación de la red para las
nuevas combinaciones
Las combinaciones que no hacían parte del set de entrenamiento, al ser presentadas a la
red fueron aproximadas al patrón del set de entrenamiento aprendido con menor
distancia euclidiana.
Una red tipo Perceptrón de una sola capa es una buena solución a un problema que
involucre patrones linealmente separables, en el caso de contar con patrones que no son
linealmente separables se tiene la alternativa de utilizar una red Perceptrón multicapa o
cambiar definitivamente de red, nótese que una red Perceptrón multicapa puede
solucionar el problema de separabilidad lineal a medida que aumenta el número de
capas de la red.
La capacidad de generalización de las redes neuronales juega un papel importante
cuando las posibles combinaciones de patrones de entrada son tantas que resultaría
imposible especificarle a un dispositivo que hacer en cada caso, puesto que la red se
entrena con un número de patrones representativo y no con la totalidad de ellos,
ahorrando tiempo de cómputo en la solución del problema.
En las aplicaciones desarrolladas con redes neuronales juega un papel importante la
tolerancia a fallas que las caracteriza, pues en caso de fallar uno o varios sensores
(como en este caso) la red siempre producirá una salida que en la mayoría de los casos
54
es la más acertada, debido a que la red después de un proceso de aprendizaje exitoso
está en capacidad de generalizar el comportamiento del sistema.
Como todo sistema, primero se parte de una idea, pero es necesario contar con los
instrumentos y herramientas necesarias para hacerlo posible.
En una primera instancia se pensó en usar como material el alambre de cobre N° 10, pero
esa idea fue descartada debido al elevado costo, entonces se decidió usar alambre
galvanizado y resulto siendo la opción optima debido a su bajo costo y dureza, pero para
unirlo se usara la soldadura de estaño, por ser la más barata y simple.
55
Figura 16. Alambre galvanizado
56
Fue necesario aplicar un poco de física y de algebra de vectores para poder situar
correctamente cada uno de los componentes, de lo que se deducen los siguientes vectores:
De este modo obtenemos la mejor posición para los componentes de mayor peso, que en
este caso sería la batería, por tanto debe ir en la cabeza.
La posición de las demás placas esta dependiendo del uso que les daremos, por esa razón se
decidió colocar las placa de los sensores después de la batería, ya que de esta forma se
evitara usar mas cable y así tendremos menos posibilidades de tener lecturas falsas, luego
colocar la placa del PIC por que estaría ubicada justo al medio de todo, después de esta
colocar la placa de los IRF para que controle el motor trasero y por medio de uno cables
controlar a los motores delanteros
57
Figura 20. Posición de las placas
Lógica de control
Antes de aplicar al robot la red neuronal, se aplicara una programación estructurada, con
una tabla en la que se detallara cada uno de los movimientos del robot dependiendo de la
lectura de los sensores, luego de que se haya logrado completar con éxito esta experiencia
recién se aplicara la red neuronal.
El programa para el PIC 16f877a esta desarrollado en lenguaje C.
//******************************************************************
**********
#include <16f877a.h> //llamo a la libreria del pic
#fuses XT,NOWDT,NOPROTECT,PUT //declaro las ocpciones de compilacion
#use delay(clock=4000000) //el reloj que voy a usar
#use standard_io(B) //inicializo los puertos
58
#use standard_io(A)
//******************************************************************
**********
void motor_adelante();
void avanzar();
void bobina_derecha();
void bobina_izquierda();
void freno();
int t_adelante=50; //para darle tiempo en la bobina de adelante
int t_atraz=40; //pata el tiempo en la bobina de atras
int estado=0; //para saber en que esta
void main()
{
while (true)
{
if((input(PIN_E0)==0)&&(input(PIN_E1)==0)&&(input(PIN_E2)==0))
{
avanzar();
//motor_adelante();
}
else
{
freno();
}
}
}
void motor_adelante()
{
output_high(PIN_B4); //pasos para la bobina de la derecha
59
output_high(PIN_C7); //pasos para la bobina de la izquierda
60
output_low(PIN_C6); //pasos para la bobina de la izquierda
61
{
if(estado==0)
{
bobina_derecha();
}
if(estado==1)
{
bobina_derecha();
}
if(estado==2)
{
bobina_izquierda();
}
}
if((input(PIN_A0)==1)&&(input(PIN_A1)==0))
{
estado=1;
bobina_derecha();
}
if((input(PIN_A0)==0)&&(input(PIN_A1)==1))
{
estado=2;
bobina_izquierda();
}
}
void bobina_derecha()
{
output_high(PIN_C4); //freno para la bobina de la izquierda
62
output_high(PIN_B4); //pasos para la bobina de la derecha
output_high(PIN_B5); //pasos para la bobina de la derecha
output_low(PIN_B6); //pasos para la bobina de la derecha
output_low(PIN_B7); //pasos para la bobina de la derecha
63
void bobina_izquierda()
{
output_high(PIN_B4); //freno para la bobina de la derecha
64
output_low(PIN_B4); //quito el freno para la bobina de la derecha
Y este es el programa que se grabara en el PIC para realizar las primeras pruebas, luego de
que estas sean satisfactorias, recién se le aplicara red neuronal.
CAPÍTULO 4
65
DISCUSIÓN DE RESULTADOS
La teoría de Redes Neuronales Artificiales, presenta grandes ventajas con respecto a otros
modelos típicos de solución de problemas de Ingeniería, una de ellas es su inspiración en
modelos biológicos del funcionamiento del cerebro, lo que facilita su estudio debido a las
analogías que pueden introducirse para su análisis.
Los modelos matemáticos en que han sido desarrollados los algoritmos para todos los tipos
de redes son modelos sencillos, que aunque exigen cierto grado de conocimientos de
cálculo diferencial, pueden ser asimilados y desarrollados en cualquier lenguaje de
programación.
La red tipo Perceptrón es una red que puede implementarse exitosamente para resolver
problemas de clasificación de patrones que sean linealmente separables, la red responderá
mejor entre más sencillos sean los patrones que debe clasificar. A pesar de que cuenta con
serias limitaciones, esta red conserva su importancia ya que sirvió como inspiración para
otros tipos de redes, como por ejemplo las redes multicapa.
CAPÍTULO 5
CONCLUSIONES Y RECOMENDACIONES
66
CONCLUSIONES
RECOMENDACIONES
BIBLIOGRAFÍA CONSULTADA
67
Principios de Electrónica Malvino, Albert Paúl
http://es.wikipedia.org/wiki/Perceptr%C3%B3n
http://es.wikipedia.org/wiki/Perceptr%C3%B3n_multicapa
http://es.wikipedia.org/wiki/Microcontrolador
68
ANEXOS
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85