Professional Documents
Culture Documents
INSTITUTO POLITECNICO
NACIONAL
UPIITA
PROYECTO DE 5° SEMESTRE
5BM2
Profesor Asignatura Grupo
M. en C. Miguel Ángel Rodríguez Fuentes Circuitos Lógicos 5BM2
Ing. Hermilio Manuel Sánchez Domínguez Electrónica II 5BM2
M. en C. Juan Antonio Jaramillo Gómez Sensores y Actuadores 5BM2
M. en C. Yesenia Eleonor González Navarro Sistemas Neurodifusos 5BM2
Equipo:
Proyecto tipo D:
¨SISTEMA DE MONITOREO DE INTRUSOS¨
¨i MEX¨
1
Proyecto de 5° Semestre Seguidor de Intrusos
INDICE
............................................................................................................................................. 1
Objetivo General ....................................................................................................................... 4
Objetivos Particulares................................................................................................................ 4
Elementos de Mercado.............................................................................................................. 6
Elementos técnicos.................................................................................................................... 7
Diagramas de flujo..................................................................................................................... 8
Diagrama de bloques................................................................................................................. 9
Desarrollo del proyecto ............................................................................................................10
Manufactura del proyecto (IMEX)..............................................................................................11
Caracterización del motor a pasos 1 SANYO DENKI .................................................................11
Caracterización del motor a pasos 2 SANYO DENKI .................................................................11
Sensores ..............................................................................................................................12
Circuito del sensor ................................................................................................................14
Fuentes de alimentación .......................................................................................................16
Etapa de potencia (Puente H) ................................................................................................21
Control de motor a pasos......................................................................................................25
Osciladores para control de velocidad....................................................................................28
Circuito de GAL´s acoplado con osciladores ............................................................................31
Lógica Difusa (Sistema de Control Difuso) ..............................................................................33
Envió y recepción de datos por el puerto USB con PIC 18F2550 ...............................................40
Decodificador.......................................................................................................................42
Programa Final del seguidor de intrusos.................................................................................43
Conclusiones............................................................................................................................44
Aguilar Escorza Javier Antonio...............................................................................................44
Hernández Feliciano Miguel ..................................................................................................44
López García Enrique Eliuth .................................................................................................44
Maldonado Sánchez José Argenis ..........................................................................................45
Bibliografía...............................................................................................................................46
ANEXO A..................................................................................................................................47
2
Proyecto de 5° Semestre Seguidor de Intrusos
ANEXO B ..................................................................................................................................48
ANEXO C ..................................................................................................................................50
ANEXO D..................................................................................................................................51
ANEXO E ..................................................................................................................................52
ANEXO F ..................................................................................................................................57
ANEXO G..................................................................................................................................64
ANEXO H..................................................................................................................................72
3
Proyecto de 5° Semestre Seguidor de Intrusos
Objetivo General
Con la realización del proyecto de 5° semestre se pretende que los alumnos integren y
pongan en práctica, todos o una gran mayoría y descubran de los conocimientos obtenidos
en semestres anteriores, así como del presente. También se busca que del trabajo en equipo
sea puesto en práctica, con las características como la organización y planeación, el trabajo
responsable de cada miembro, y entre otras cualidades, para poder alcanzar los objetivos y
metas propuestas, todo esto con el fin de encarrilar a los alumnos en lo que es el campo y
desempeño laboral de la ingenierías.
Objetivos Particulares
Los integrantes del equipo repartirán las tareas de acuerdo a una organización con respecto
al trabajo que realizaran durante todas las etapas, mediante el seguimiento de un
cronograma de actividades a realizar, el cual se tratara de cumplir, evitando lo más posible
retrasos y demoras. La capacidad para identificar y resolver problemas encontrados a
través del trabajo en equipo, será crucial en el transcurso del proyecto, por lo que se busca
la retroalimentación en base a conocimientos adquiridos empíricamente a través de un
aprendizaje de hechos anteriormente resueltos. Hay que recordar que los conocimientos
4
Proyecto de 5° Semestre Seguidor de Intrusos
Por último, se busca que el trabajo en equipo se ponga en práctica como en el ambiente
productivo y deje la mediocridad con la que suele caracterizarse, consolidándose finalmente
en la productividad.
5
Proyecto de 5° Semestre Seguidor de Intrusos
Elementos de Mercado
Si bien es claro que los sistemas de monitoreo analógico (VHS) ya quedaron en el pasado y han
sido superado por la tecnología digital, estos nuevos sistemas de tecnología digital superan a los
analógicos en las áreas como:
De fácil operación
Incrementa la capacidad de almacenamiento
Disminución de errores
Incrementa la calidad de video o foto
Capacidad de monitoreo remoto (vía
internet), etc.
Con este tipo de sistemas se puede estar al tanto de lo que está sucediendo en tiendas
comerciales, casas o departamentos de seguridad, sin que nadie se entere de que está siendo
observado o detectado. Se puede tener un estricto control en tiempo real de quien entra, sale, con
la posibilidad de poder grabarse esta información si así lo requiera el sistema y que podrá revisar
cuando lo necesite desde algún lugar remoto.
Por mencionar sistemas de seguridad basados con cámaras IP que son sistemas de vigilancia
remota digital, de fácil manejo y que requieren un mínimo de mantenimiento pero que se paga
con un costo económico.
Estas cámaras IP mantienen una accesible solución para el monitoreo remoto, son altamente
flexibles para colocarlas en cualquier lugar con conexión a red.
En México lo más importante son las personas que conforman esta gran nación, y que quedamos
identificados con este nombre: México.
6
Proyecto de 5° Semestre Seguidor de Intrusos
En razón a esta importancia el nombre designado a este proyecto, fue extraído de una del
análisis etimológico de la oración es la siguiente:
Elementos técnicos
Descripción general de funcionamiento
El sistema debe detectar y seguir un objeto que se localice en un área de trabajo predeterminada
en un ambiente estructurado.
La etapa de espera, esta es una de las dos condiciones del comportamiento del sistema, en la
cual el sistema tendrá un consumo de energía mínimo por lo que ninguna etapa de
procesamiento de señales ni de electrónica estará encendida durante este estado, solo los
dispositivos de censado de presencia permanecerán activos. Como ya se menciono en este estado
la cámara debe de enfocar en el punto origen (dentro del área de trabajo), esta etapa concluirá
cuando los censores detecten la presencia del objeto.
La etapa de activación o modo activo, comienza cuando se detecta el objeto intruso, en ese
instante el consumo de energía mínimo pasa a ser el óptimo para que los dispositivos de las
diferentes etapas funcionen. Mediante la obtención y procesamiento de imágenes los algoritmos
neurodifusos mandaran la señales adecuadas para controlar a los actuadores y de esta manera se
localizara la posición del objeto intruso en dos dimensiones y la cámara enfocar siempre en el
centro del objeto intruso. Las señales de control para acondicionar los actuadores serán
proporcionadas por una computadora, cerrando el lazo con una retro alimentación hacia la
computadora con la captura de imágenes con la cámara.
7
Proyecto de 5° Semestre Seguidor de Intrusos
Diagramas de flujo
8
Proyecto de 5° Semestre Seguidor de Intrusos
Diagrama de bloques
CAD
CIRCUITO DE
SENSORES
CONVERTIDOR CONTROL
ANALOGICO
DIGITAL
INTERFAZ USB -
IMAGEN SERIAL
DE
CONTROL PROGRAMACION PROCESADOR
NEURO DIFUSA
INTERFAZ USB -
SERIAL
ETAPA DE
CIRCUITOO POTENCIA
DE
CONTROL 2
ACTUADOR 1
ACTUADOR 2
9
Proyecto de 5° Semestre Seguidor de Intrusos
El diseño comenzó en base a los materiales que se tenían a mano, o disponibles comercialmente
en muchos lugares de fácil acceso. Estos materiales accesibles y de bajo costo fueron
maquinados, desbastados y soldados para poder manufacturar el diseño en el que se planteo
desde un comienzo.
Lo primero fue el montaje de la base de la cámara que consta de cuatro extremidades las cueles
dan apoyo en casi cualquier superficie. En estas extremidades, para darles movimiento se le
soldaron unas articulaciones hechas con bisagras a una placa de acero galvanizado que es de uso
comercial, así como se realizo un barreno en el centro de la misma para poder insertar una
extensión del brazo que soporta la cámara, la cual fue fijada por medio de un prisionero hecho de
forma fácil con una tuerca y con un pequeño tornillo para ajustar la altura y mantener en posición
vertical el brazo.
Para que los motores permitieran el desplazamiento de la cámara, fueron montados en una base
hecha a medida con sus respectivos ejes para permitir el libre movimiento. Esta base construida
de aluminio, debido a su gran manejabilidad, fue barrenada para insertarle un eje hecho con el
mismo tubo de las extremidades. El acoplamiento de los motores se realzo con la manufactura
en un torno, de unos acoples también realizados con aluminio y sujetos a presión a los ejes de
movimiento. Para mantener sujetos los motores se realizaron unos barrenos, tanto al brazo como
a la base de la cámara, en donde se atornillaron los tornillos comerciales de 1/8.
Por último la cámara se fijo a una base hecha con cintra, un material plástico ligero y durable, el
cual fue introducido al eje de movimiento vertical a través de una ranura hecha a este por medio
de barrenos.
Para darnos una mejor referencia se agregan en el anexo B los planos de las piezas construidas y
manufacturadas por el equipo.
Observaciones
Para calcular los parámetros de los actuadores hemos tenido dificultades ya que no contamos con
los suficientes conocimientos prácticos para hacerlos, para ello hemos recurrido a las
características del fabricante, o en su momento llegar a consultar cybergrafia o libros.
En principio se pensó utilizar como actuadores moto reductores pero al ver que no se podía
controlar de manera eficiente su velocidad se opto por la utilización de motores paso a pasos,
10
Proyecto de 5° Semestre Seguidor de Intrusos
los cuales pueden ser cambiados en un futuro, esto dependiendo de las demandas que solicite el
proyecto.
TIPO 103-546-8441
Nº de Fase es 4
TIPO 103-546-8441
Nº de Fase es 4
Sensores
Sensor de presencia
Como se define un sensor es un dispositivo que transforma cualquier tipo de energía en energía
eléctrica. Para la elaboración del proyecto se usaron sensores ópticos.
Los sensores ópticos utilizan la luz como medio detector lo que implica que nuestro rango de
luz de acuerdo a la longitud de onda de esta debe estar entre .9 micro metros y 100 nano metros
(luz visible de acuerdo a el espectro electromagnético), en nuestro caso utilizaremos los
resistores dependientes de la luz o LDR (Light Dependent Resistor), mejor conocidos como
fotorresistencias. Como su nombre son dispositivos que varían su resistencia en función de la
luz.
De acuerdo con el efecto foto eléctrico un fotón es capas de excitar a un electrón con energía
suficiente la cual le permita realizar un salto de la banda de valencia a la banda de conducción.
Entre más fotones haya más electrones habrá en la banda de conducción provocando un flujo de
corriente, para que esto ocurra necesitamos que la intensidad de luz que incide sobre el material
sensible a la luz sea mayor.
Como fuente de luz se escogió un laser que nos proporciona, ya que la luz de un laser es muy
intensa coherente, monocromática.
12
Proyecto de 5° Semestre Seguidor de Intrusos
La Fig. 5 nos muestra el circuito a armar con la foto resistencia y saber ver como varía la
tensión Vout .
a) b)
Fig. 5 Divisor de tensión con una fotorresistencia en serie con una resistencia.
Y cuando hay luz su resistencia disminuye por lo que el Vout disminuye hasta hacerse casi cero
cuando hay una luz muy intensa incidiendo sobre él.
El circuito de la figura 5 b) nos muestra otra configuración. En este caso si incide mucha luz lo
que provoca que la resistencia de la fotorresistencia sea casi cero para luz muy intensan
incidiendo sobre el esto provoca que la mayor tensión en la resistencia sea casi V in :
VR Vin
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (6)
Nosotros usaremos la configuración de la figura 5 b) para que de esta manera podamos obtener
una tensión de 5V cuando haya luz. Puesto que al incidir luz sobre la fotorresistencia su
resistencia tiende a cero y escogiendo una resistencia R muy grande del orden de M ohms,
podemos hacer que en el voltaje Vout sea casi 5V. Al contrario, cuando no hay luz incidiendo su
resistencia es muy grande haciendo que el Vout disminuya.
Para hacer cálculos tenemos que la LDR cuando le incide solo la luz natural:
RLDR 10kOhms
13
Proyecto de 5° Semestre Seguidor de Intrusos
R
Vout Vin _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (7)
R RLDR
Vout 4.5V
R
4.5V 5v _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (8)
R 850
Despejamos R:
850 x 4.5
R 7.650ohms
5 x.1
Sensor de tope
Para evitar que la cámara se exceda de su ángulo de visión de 180°, se han colocado dos
interruptores de palanca, los cuales nos envían una señal (un uno lógico o 5V), y por
programación, avisara que el motor a pasos se detenga.
En este caso la modificación que se hizo fue la de mandar la señal de los sensores a un
comparador de ventana, lo cual nos ayudara a eliminar el error que presentan los cambios de luz
incidente de cada lugar. Los comparadores de ventana cuentan con circuitos hechos con
operacionales, conectados como se muestra en la siguiente figura 6:
14
Proyecto de 5° Semestre Seguidor de Intrusos
El circuito que se diseño para los sensores de presencia es parecido solo que para definir las
tensiones Vh y Vl se usaron diodos Zener, esto es para estabilizar las tensiones.
15
Proyecto de 5° Semestre Seguidor de Intrusos
Fuentes de alimentación
Esta fuente de cinco volts nos sirve para alimentar al decodificador, a las GAL´s, y el oscilador.
Al conectarlos a una fuente de 5V de laboratorio medimos que la corriente que consumen es
menos de 500 mA, por lo que no hay necesidad de conectarle un compensador de corriente, por
lo que si se llegase a requerir agregaríamos un compensador de corriente como se muestra en el
diagrama, y si no se necesita simplemente no se agrega el compensador.
La fuente se encuentra compensada en corriente para proteger a los circuitos que utilicemos
(siempre y cuando se llegue a necesitar), ya que ayudara a la protección y optimo rendimiento de
los circuitos como se observa en la Fig. 9 y Fig. 10
16
Proyecto de 5° Semestre Seguidor de Intrusos
Es por esto, que los cálculos resultantes para los valores de los componentes que se usaron para
esta fuente fueron los siguientes:
Vrms= 6-7Vrms
Para lo cual utilizamos un transformador de salida a 12V A 500mA, con derivación central.
17
Proyecto de 5° Semestre Seguidor de Intrusos
Se usó un 7805 para regular la tensión positiva, y un 7905 para la regulación de la tensión
negativa.
Se decidió utilizar una fuente variable ya que el control de los motores a pasos funciona hasta
con 9V, pero si por algún motivo se necesita un poco mas de voltaje tendríamos que aumentar el
mismo, por ello se decidió construir y diseñar una fuente variable que nos diera 14V y de ahí
regularla como se observa en la Fig. 11.
18
Proyecto de 5° Semestre Seguidor de Intrusos
Para conocer cuánto corriente consumía el circuito de control para los motores, así como los
motores ya conectados, decidimos conectar una fuente de 9V, y así poder medir cuando corriente
se consumía en total por los dos motores trabajando, lo cual nos dio entre 800mA y 1.5A, por lo
que se decidió tomar en cuenta esto para los siguientes cálculos:
El cálculo se realiza para una tensión de 24V debido a que en el transformador se usara el
devanado central y este, a su salida, nos proporcionara la mitad de tensión.
19
Proyecto de 5° Semestre Seguidor de Intrusos
Se encontró:
Cuando
Cuando
20
Proyecto de 5° Semestre Seguidor de Intrusos
Es un actuador por el cual se puede transformar una combinación binaria en trabajo mecánico, a
través de una serie de combinaciones lógicas. Sus movimientos son discretos y angulares. Lo
cual permite avanzar al motor una serie de grados o pasos de acuerdo a una secuencia que entra
a través de sus terminales. Un motor a pasos mantiene su posición y torque mientras se le siga
mandado la misma secuencia a través de sus terminales. Si estamos usando un motor bipolar,
esto es que tiene dos bobinas lo cual implica que tiene cuatro terminales (dos para cada bobina).
La tabla 1 indica la secuencia donde cada combinación lógica corresponde a un estado del
motor.
21
Proyecto de 5° Semestre Seguidor de Intrusos
2 0 0 1 0 S2
3 0 0 0 1 S3
Tabla1. Secuencia de un motor paso a paso
Donde S0, S1, S2, S3 son los estados en el cual se encuentra el motor. Los unos y ceros en las
terminales representan Vcc y tierra respectivamente.
Para que el motor este girando en un sentido esta secuencia debe ser enviada a sus terminales en
ese orden (0, 1, 2, 3) n veces, las cuales son necesarias para que el motor de los números de
grados que lo colocaran en la posición deseada. Si se desea que el motor gire hacia el sentido
opuesto la secuencia tendrá que ser enviada de manera inversa, esto es, 3, 2, 1, 0.
En la elaboración del proyecto se usaron motores paso a paso, ya que presenta divisas ventajas a
uno de CD, movimientos discretos. Esta secuencia será enviada con la ayuda de un puente H, ya
que así podemos controlar el sentido de giro del motor a pasos.
PUENTE H
Es un dispositivo electrónico que permite que un motor de CD gire en ambos sentidos. Son
utilizados comúnmente en robótica y como convertidores de potencia. Comercialmente se
pueden encontrar en circuitos integrados, pero también se pueden hacer a partir de componentes
discretos.
Un puente H esta principalmente constituido por cuatro interruptores, que pueden ser mecánicos
o eléctricos (transistores). En la siguiente figura se muestra la configuración básica de un puente
H, en la cual usaremos como interruptores electrónicos los tips31 y tips32.
Q4=Q2=Tip 32, Transistor tipo PNP; Q1=Q3=Tip 31, Transistores tipo NPN.
22
Proyecto de 5° Semestre Seguidor de Intrusos
Los diodos son para protección del motor y de la fuente, puesto que cuando el motor se
encuentra girando y el sentido de giro cambia se genera una corriente, esta corriente es
absorbida por estos diodos para proteger al mismo motor de este cruce de corrientes.
Para calcular cada una de las resistencias de base para cada Tip se hizo lo siguiente:
I M Ic 1A _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (1)
Además de que: B 60
BI B Ic _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _(2)
De la cual despejamos I B
23
Proyecto de 5° Semestre Seguidor de Intrusos
Ic
IB _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _(3)
B
Substituimos valores:
1A
IB
60
V 1 VBE
R _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (4)
IB
Substituyendo valores:
También se realizo con la ayuda de PCB WIZAR el diseño del puente H, para elaborarlo en una
placa de cobre o fenólica, la cual se muestra en la Fig. 15.
24
Proyecto de 5° Semestre Seguidor de Intrusos
En el proyecto se utiliza dos motores a pasos antes mencionados, los cuales se controlan por
medio de un dispositivo PLD denominado Gal modelo 22V10D de la compañía LATTICE, en
el ANEXO D se observa el diagrama del circuito integrado.
Esta GAL necesita ser programada, el código necesario es escrito en lenguaje de programación
VHDL el cual es compilado en el software WARP 6.1 de Cypress.
Lo que se necesita para controlar el movimiento del motor a pasos es ingresar la secuencia a las
4 terminales con el código de colores de acuerdo a la Tabla 2.
Azul 1 0 0 0
Naranja 0 1 0 0
Rojo 0 1
Amarillo 0 0 0 1
Tabla 2. Secuencia del motor a pasos
25
Proyecto de 5° Semestre Seguidor de Intrusos
Como se observa se necesita una diagonal de unos, y un contador para que se pueda dar la
secuencia y así generar el movimiento. El código VHDL para implementar el control del motor
a pasos es:
library ieee;
use ieee.std_logic_1164.all;
use work.std_arith.all;
entity conta is
port(clk:in std_logic;
dir: in std_logic;
paro: in std_logic;
q: out std_logic_vector(1 downto 0);
s: out std_logic_vector(3 downto 0));
end conta;
26
Proyecto de 5° Semestre Seguidor de Intrusos
Código del Programa en VHDL para programar la GAL y controlar el movimiento de los
motores a pasos.
Para realizar la conexión física de la GAL, tomamos en cuenta la disposición física del PLD
mostrado en ANEXO D y el archivo de reporte generado por el compilador, el cual nos muestra
la asignación de terminales a las variables de entrada que definimos, tal y como se muestra a
continuación en la Fig. 16.
Se realiza la asignación de las variables de entrada, donde CLK es nuestro reloj u oscilador,
paro es nuestra entrada para parar o detener el motor a pasos, y dir es la entrada para cambiar
la dirección de giro.
27
Proyecto de 5° Semestre Seguidor de Intrusos
Nota: el circuito oscilador que esta acoplado a las GAL´s se explica a continuación.
Para seleccionar las velocidades de los motores de nuestro proyecto, se uso un circuito básico
oscilador, un inversor de Schmitt, el cual consiste en un inversor, conectado un capacitor en la
entrada y una resistencia como retroalimentación de la salida a la entrada.
Se usaron tres de estos para representar cada velocidad, el inversor que se uso fue el
HD74HC14P de Hitachi Fig. 18, el cual es un circuito integrado, el cual consta de 6 inversores
con su pin de VCC y su pin GND, y tres capacitares de 22uF.
28
Proyecto de 5° Semestre Seguidor de Intrusos
Las salidas de los tres osciladores están conectadas entre sí, pero separados por medio de tres
transistores BC547C que actúan como interruptores, así se podrá elegir entre tres diferentes
frecuencias, resultando en las tres diferentes velocidades. La salida a su vez se conecta al pin de
la señal de reloj de las GAL´s que controla los motores. Como se puede ver en la Fig. 19.
29
Proyecto de 5° Semestre Seguidor de Intrusos
Este más adelante se controlara digitalmente por medio de un multiplexor dependiendo la señal
de control que le entre a este.
1.2
F
RC
1.2
R
FC
1.2
R1 2.73 k
20 Hz (22 F )
30
Proyecto de 5° Semestre Seguidor de Intrusos
1.2
F
RC
1.2
R
FC
1.2
R2 5.45 k
10 Hz (22 F )
1.2
F
RC
1.2
R
FC
1.2
R3 27 k
2 Hz (22 F )
Nota: Para esta última entrega los circuitos tienen algunos ajustes, estos con el fin, de poder
acoplar las señales tanto de entrada como de salida de la computadora lo cual se explica a
continuación.
Para el caso del circuito de las GAL’s y del oscilador, se tomo la decisión de acoplarlos en una
sola placa, con la ventaja de poder mandar la señal de reloj deseada a cada una de las GAL´s.
Usando el mismo método para generar tres señales de reloj diferentes (para una GAL), se diseñó
un circuito que contenga 6 señales de reloj diferentes, esto con ayuda del mismo circuito
integrado, para que de esta manera cada GAL tenga sus propias señales de reloj.
Otro cambio importante que se les dio a estos circuitos, es la implementación de transistores,
usados como interruptores, que serán activados mediante una señal eléctrica. En particular para
el circuito de las GAL´s, estos componentes se utilizaron para suplantar dos push botton que
activaban el sentido de giro del motor y el paro del motor respectivamente. Para el caso del
circuito de oscilador se uso para poder seleccionar una señal de reloj de las tres diferentes que
tiene cada gal.
31
Proyecto de 5° Semestre Seguidor de Intrusos
32
Proyecto de 5° Semestre Seguidor de Intrusos
Para el control difuso se decidió usar 4 conjuntos difuso, 2 de entrada y dos de salida, ya que
las variables que queremos controlar de los motores son sus velocidades y sus direcciones, es
necesario saber primero dos cosas, en donde está el objeto al momento de sensar, y en donde se
encontraba el motor, o hacia donde estaba viendo la cámara anterior al sensado, sabiendo estas
dos cosas se le puede ordenar al motor hacia donde se mueva y que tan rápido lo haga.
Como se puede observar están los dos conjuntos con tres funciones de membrecía cada uno,
estas explican posiciones, tanto del motor como del objeto, ya sea izquierda, en medio o
derecha. Se decidió usar funciones exponenciales debido a su suave transición, y a que estas
son fáciles de programar y de usar.
33
Proyecto de 5° Semestre Seguidor de Intrusos
Para el conjunto de velocidad, se siguió usando funciones gaussianas, donde estas ahora
representan velocidades, en este caso se decidió usar solo tres, lenta, media y rápida. Para la
dirección se decidió usar trapezoidales debido a que estas se pueden ajustar fácilmente a que el
grado de pertenecía de alguna función de membrecía sea mucho mayor al de la otra, que es lo
que queremos cuando controlamos el sentido de giro del motor, es decir que giro a un lado o a
otro, como se puede ver cuando el conjunto cae en cinco, las dos funciones tienen el mismo
grado de pertenencia, esto quiere decir que el motor no se moverá hacia ningún lado, esto se ve
mejor, en la superficie de control.
Se muestra el programa que controla el motor uno, junto con sus respectivas superficies de
control en el ANEXO E.
34
Proyecto de 5° Semestre Seguidor de Intrusos
35
Proyecto de 5° Semestre Seguidor de Intrusos
Como se puede observar, la superficie de control nos dice a qué velocidad se mueve el motor
dependiendo de los dos conjuntos difusos de entrada, el color rojo indica que se es una
velocidad rápida, el azul lenta, como prueba podemos observar que si el motor esta en 10 y el
objeto en 0, es decir, si el motor está apuntando hacia la derecha y el objeto esta es la izquierda,
el motor se debe mover rápido.
36
Proyecto de 5° Semestre Seguidor de Intrusos
Aquí, de la misma forma que en la anterior el color rojo representa el sentido ACW, es decir
antihorario y el azul el sentido CW o sentido horario, como ejemplo si el objeto esta en 10 y el
motor en 0 el motor debe girar con sentido horario lo cual se comprueba que la superficie de
control es correcta.
Ahora, para el motor 2 se decidió que los conjuntos fueran los mismos por lo que el programa y
las superficies son las mismas, con excepción que las funciones de membrecía de los conjuntos
de entrada ya no son izq, en medio y de r, si no arriba, e medio y abajo, aquí solo se muestra de
nuevo el programa, y en las figuras 26, 27, 28 las imágenes de los conjuntos difusos así como
las superficies de control.
37
Proyecto de 5° Semestre Seguidor de Intrusos
38
Proyecto de 5° Semestre Seguidor de Intrusos
39
Proyecto de 5° Semestre Seguidor de Intrusos
Para el envió y recepción de datos se decidió cambiar de un AVR a un PIC ya que se nos hizo
más fácil la programación en Matlab para recibir y mandar bits por el puerto.
El programa está en lenguaje C, contiene una librería llamada #include ".\USBCCS2.h", la cual
se encarga de abrir el puerto del PIC 18F2550 el cual tiene capacidad USB 2.0, el cual es
configurado , borrado y asignado para poder leer y escribir atreves de 8 bits de entrada y 8 bits
de salida , para después cerrar el puerto hasta que sea requerido.
La librería #include “.\USBCCS2.h” que esta grabada en el PIC se encuentra en el anexo F, con
este programa se puede hacer lo antes mencionado.
En la figura 29 se muestra el diagrama esquemático para la conexión del PIC 18F2550 hacia la
PC mediante el puerto USB, así como las salidas (Pin 1 – Pin 7) y entradas (Pin 21 – Pin 28),
donde las entradas van conectadas a una compuerta AND como acoplamiento entre los sensores,
las salidas del PIC van conectadas a un decodificador (74LS139) acoplado a una compuerta
NOT (ya que el decodificador trabaja con lógica negativa), por ello se necesita invertir la salida
del decodificador para mandar la señal al oscilador:
40
Proyecto de 5° Semestre Seguidor de Intrusos
s = serial('COM4','BaudRate',9600,'DataBits',8,'Parity','none','StopBits',1);
fopen(s);
fwrite(s,255);
variable=fread(s,1,'uint8');
fclose(s);
delete(s);
variable
Con la variable s se configura el puerto como COM4, con una velocidad de Baudios de 9600, 8
bits de datos, ninguna paridad y para detener el USB con 1. El programa simplemente abre el
puerto serial configurándolo para así escribir y luego leer datos y guardarlos en una variable,
para después cerrar el puerto.
41
Proyecto de 5° Semestre Seguidor de Intrusos
Decodificador
Para poder obtener más salidas del puerto USB, que son solo 8 bits, usamos un decodificador que
tiene dos DeMux 2x4 para así tener hasta 10 bits, ocupando solo 3 de las 4 que me da cada
DeMux de salida, ocupando la diagonal del decodificador del DeMux. Donde las salidas del PIC
van conectadas al decodificador (74LS139) acoplado a la compuerta NOT-74LS08 (ya que el
decodificador trabaja con lógica negativa), por ello se necesita invertir la salida del decodificador
para mandar la señal al inversor y así mandarla posteriormente al oscilador, lo anterior se
muestra en la figura 31, misma que se diseño para PCB.
42
Proyecto de 5° Semestre Seguidor de Intrusos
Para el programa final, se decidió usar una interfaz gráfica en Matlab, la cual se muestra en la
figura 32, donde se hace todo el procesamiento de la imagen. El programa está en el anexo G,
donde con comentarios se va explicando el código.
El procesamiento de la imagen es bastante sencillo, se toma una foto, la cual está en RGB, por
medio de una instrucción se convierte a una imagen en escala de grises, después, se decide que a
partir de cierta escala de grises los pixeles serán blancos y los demás negros, se convierte en una
imagen lógica donde 1 son blancos y 0 son negros convirtiéndolo así en una imagen en blanco y
negro, después se eliminan los pixeles y se calcula el centroide de la imagen blanca, es decir, de
los puros 1.
Con el dato de donde está el centroide se adecua parta unirlo con la superficie de control, el
adecuamiento también es sencillo, de la matriz de la imagen, que es de 160x120 a la de control
que es de 101x101, ya adecuada la posición, se toma el valor de la matriz de control en las
coordenadas recién calculadas, cabe mencionar que son dos matrices de control la de velocidad y
la de posición, una vez sabiendo el valor de la coordenada, se elige por programación a cual
conjunto de velocidad y posición pertenece la coordenada y se crea un vector lógico de 5
componentes donde estarán almacenadas la instrucción a los motores, paro, las tres velocidades y
el sentido del giro.
Debido a que el bus salida del USB son solo ocho, y tenemos dos vectores de 5 datos, se
programa para acondicionar el dato para implementar un multiplexor, con esto se logra que de
los 10 datos que tenemos obtenemos 8, y esto es lo que manda la salida directamente a los
actuadores haciendo que se mueva hacia el centroide de la figura, después toma otra foto, y se
repite el proceso nuevamente.
43
Proyecto de 5° Semestre Seguidor de Intrusos
Conclusiones
En esta última etapa, el trabajo en equipo fue arduo, las tareas y actividades fueron divididas y
así es como se logro con éxito del ensamblado de los componentes. Los conocimientos
adquiridos en el aula ayudaron y nos simplificaron el trabajo, pero también nos dieron la pauta
para buscar nuevas soluciones y así estar preparados para nuevos retos, aunque complicados, la
satisfacción de lograrlos y hacer que funcionen como lo pensamos es un buen incentivo. El
mayor conocimiento adquirido para mi persona fue el uso de nuevos dispositivos, componentes y
software.
En esta etapa del proyecto la cual es la más importante se cumplieron algunos objetivos que se
plantearon desde un principio, en otros nos falto un poco más, pero no por ello dejamos de
enfocarnos en lo que verdaderamente se tenía que entregar.
Sin lugar a dudas fue la parte más difícil ya que a la hora de realizar pruebas pues nos topábamos
con muchos errores que a la hora de corregirlos a veces salían de un chispazo o por algo que
deducíamos tomando en cuenta toda la teoría adquirida hasta este momento.
Quizás fue una prueba más para nosotros ya que aprendimos a trabajar como equipo, todos nos
apoyábamos teniendo en cuenta en que tal vez nos equivocaríamos en algún proceso del
proyecto, aprendimos a hacer tolerantes, solidarios en fin, creo que nuestro trabajo en equipo se
ve reflejado en nuestro propio prototipo.
A lo largo del semestre se aprendieron muchas maneras de cómo resolver los problemas para
este proyecto de una manera más eficiente, muchas de las cuales no se pudieron implementar ya
que desde un principio se tuvo que definir cada dispositivo a utilizar. Aun así para dar
seguimiento a la idea original se trato de darle mejoramiento a cada una de las ideas planteadas
desde el principio. Pero como todo producto y más en los de tipo tecnológico, primero se
empieza por un prototipo que será puesto a prueba, sacado al mercado y posteriormente se
mejora para que sea cada vez más eficiente y cumpla las necesidades que demanda la sociedad,
para que de esta manera nosotros podamos cumplir con nuestro propósito como ingenieros. Para
la realización de este tuvo mucho que ver el trabajo en equipo que llevo acabo de principio a fin.
44
Proyecto de 5° Semestre Seguidor de Intrusos
Fue una experiencia, muy gratificante, toda la elaboración del proyecto, el trabajo de equipo, a
su vez, fue unido y gratificante. En sí, la experiencia de todo el proyecto me dejo una sensación
muy agradable , fue bueno ver como todo lo que he visto hasta ahora rindió frutos, claro que
hubo problemas en su realización, pero consultando libros, compañeros y profesores, pudimos
lograr construirlo y hacer que funcionara, la programación del proyecto fue lo que me pareció
más relevante. Después de todo, el proyecto me aprecio interesante, retador y fue una gran
práctica con la cual aprendí muchísimas cosas, cosas que me servirán más adelante como
ingeniero.
45
Proyecto de 5° Semestre Seguidor de Intrusos
Bibliografía
www.alldatasheet.com
Nota: La mayor información consultada fue a base de los apuntes de materias involucradas
así como de materias anteriores.
46
Proyecto de 5° Semestre Seguidor de Intrusos
ANEXO A
47
Proyecto de 5° Semestre Seguidor de Intrusos
ANEXO B
Diagramas mecánicos
48
Proyecto de 5° Semestre Seguidor de Intrusos
49
Proyecto de 5° Semestre Seguidor de Intrusos
ANEXO C
Relación de materiales
En la presente lista se detallan los materiales utilizados para la construcción del prototipo IMEX:
50
Proyecto de 5° Semestre Seguidor de Intrusos
ANEXO D
Especificaciones de la Gal 22V10D.
51
Proyecto de 5° Semestre Seguidor de Intrusos
ANEXO E
Programa en Matlab para la superficie de control
52
Proyecto de 5° Semestre Seguidor de Intrusos
end
x6=0:0.1:10;
%%%%%%%%%%%%%%%Velocidad Motor
%%%%%%LENTA
for x7=0:0.1:10
y7(i7)=exp(-0.5*(((x7-cg1)/sigma1)^2));
i7=i7+1;
end
x7=0:0.1:10;
%%%%%%MEDIA
for x8=0:0.1:10
y8(i8)=exp(-0.5*(((x8-cg2)/sigma2)^2));
i8=i8+1;
end
x8=0:0.1:10;
%%%%%RAPIDA
for x9=0:0.1:10
y9(i9)=exp(-0.5*(((x9-cg3)/sigma1)^2));
i9=i9+1;
end
x9=0:0.1:10;
%%%%%Direccion motor
%%%%Clockwise
for x10=0:.1:10
if x10<=3.3
y10(i10)=1;
elseif x10>3.3 && x10<=5.5
y10(i10)=((5.5-x10)/(5.5-3.3));
else
y10(i10)=0;
end
i10=i10+1;
end
x10=0:.1:10;
%%%Anticlockwise
for x11=0:.1:10
if x11<=4.5
y11(i11)=0;
elseif x11>4.5 && x11<=6.6
y11(i11)=((x11-4.5)/(6.6-4.5));
else
y11(i11)=1;
end
i11=i11+1;
end
x11=0:0.1:10;
53
Proyecto de 5° Semestre Seguidor de Intrusos
figure(1)
subplot(2,2,1)
ylabel('Grado de pertenencia')
plot(x1,y1,'r',x2,y2,'b',x3,y3,'g')
legend('IZQ','MED','DER')
title('Conjunto difuso de la posicion del objeto')
subplot(2,2,2)
ylabel('Grado de pertenencia')
plot(x4,y4,'r',x5,y5,'b',x6,y6,'g')
legend('IZQ','MED','DER')
title('Conjunto difuso de la posicion del motor')
subplot(2,2,3)
plot(x7,y7,'r',x8,y8,'b',x9,y9,'g')
title('Conjunto difuso de la velocidad del motor')
legend('LENTA','MED','RAPIDA')
subplot(2,2,4)
plot(x10,y10,'r',x11,y11,'b')
title('Conjunto difuso de Direccion del motor')
legend('CW','ACW')
%%%%Superficie de control de la velocidad
for X=1:length(x);
for Y=1:length(y);
R1=min(y1(X),y4(Y));
R2=min(y1(X),y5(Y));
R3=min(y1(X),y6(Y));
R4=min(y2(X),y4(Y));
R5=min(y2(X),y5(Y));
R6=min(y2(X),y6(Y));
R7=min(y3(X),y4(Y));
R8=min(y3(X),y5(Y));
R9=min(y3(X),y6(Y));
CorteL1=max(R1,R5);
CorteL=max(CorteL1,R9);
CorteM1=max(R2,R4);
CorteM2=max(CorteM1,R6);
CorteM=max(CorteM2,R8);
CorteR=max(R3,R7);
for Z=1:length(z);
if CorteL<y7(Z)
ya7(Z)=CorteL;
else
ya7(Z)=y7(Z);
end
if CorteM<y8(Z)
54
Proyecto de 5° Semestre Seguidor de Intrusos
ya8(Z)=CorteM;
else
ya8(Z)=y8(Z);
end
if CorteR<y9(Z)
ya9(Z)=CorteR;
else
ya9(Z)=y9(Z);
end
end
CQ=max([ya7;ya8]);
C=max([CQ;ya9]);
certero(X,Y)= defuzz(z,C,'centroid');
end
end
figure(2)
mesh(x,y,certero)
title('Superficie de Control Motor de velocidad 1')
ylabel('Posicion Objeto')
xlabel('Posicion Motor')
zlabel('Velocidad')
%%%Superficie de control de Direccion
for X=1:length(x);
for Y=1:length(y);
R1=min(y1(X),y4(Y));
R2=min(y1(X),y5(Y));
R3=min(y1(X),y6(Y));
R4=min(y2(X),y4(Y));
R5=min(y2(X),y5(Y));
R6=min(y2(X),y6(Y));
R7=min(y3(X),y4(Y));
R8=min(y3(X),y5(Y));
R9=min(y3(X),y6(Y));
CorteCW1=max(R2,R3);
CorteCW=max(CorteCW1,R6);
CorteACW1=max(R4,R7);
CorteACW=max(CorteACW1,R8);
for Z=1:length(z);
if CorteACW<y10(Z)
ya10(Z)=CorteACW;
else
ya10(Z)=y10(Z);
end
55
Proyecto de 5° Semestre Seguidor de Intrusos
if CorteCW<y11(Z)
ya11(Z)=CorteCW;
else
ya11(Z)=y11(Z);
end
end
C1=max([ya10;ya11]);
certero1(X,Y)= defuzz(z,C1,'centroid');
end
end
figure(3)
mesh(x,y,certero1)
title('Superficie de Control de giro Motor 1')
ylabel('Posicion Objeto')
xlabel('Posicion Motor')
zlabel('Direccion')
return
56
Proyecto de 5° Semestre Seguidor de Intrusos
ANEXO F
Librería #include ".\USBCCS2.h
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NOMCLR,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=2000000)
#define usb_cdc_kbhit() (usb_cdc_get_buffer_status.got)
#define usb_cdc_putready() (usb_cdc_put_buffer_nextin<USB_CDC_DATA_IN_SIZE)
#define usb_cdc_connected() (usb_cdc_got_set_line_coding)
void usb_cdc_putc_fast(char c);
char usb_cdc_getc(void);
void usb_cdc_putc(char c);
float get_float_usb();
signed long get_long_usb();
signed int get_int_usb();
void get_string_usb(char* s, int max);
BYTE gethex_usb();
BYTE gethex1_usb();
void usb_isr_tkn_cdc(void);
void usb_cdc_init(void);
void usb_isr_tok_out_cdc_control_dne(void);
void usb_isr_tok_in_cdc_data_dne(void);
void usb_isr_tok_out_cdc_data_dne(void);
void usb_cdc_flush_out_buffer(void);
#DEFINE USB_HID_DEVICE FALSE
#DEFINE USB_CDC_DEVICE TRUE
#define USB_CDC_COMM_IN_ENDPOINT 1
#define USB_CDC_COMM_IN_SIZE 8
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP1_TX_SIZE USB_CDC_COMM_IN_SIZE
#define USB_CDC_DATA_IN_ENDPOINT 2
#define USB_CDC_DATA_IN_SIZE 64
#define USB_EP2_TX_ENABLE USB_ENABLE_BULK
#define USB_EP2_TX_SIZE USB_CDC_DATA_IN_SIZE
#define USB_CDC_DATA_OUT_ENDPOINT 2
#define USB_CDC_DATA_OUT_SIZE 64
#define USB_EP2_RX_ENABLE USB_ENABLE_BULK
#define USB_EP2_RX_SIZE USB_CDC_DATA_OUT_SIZE
#ifndef __USB_PIC_PERIF__
#define __USB_PIC_PERIF__ 1
#endif
#if __USB_PIC_PERIF__
#if defined(__PCM__)
#error CDC requires bulk mode! PIC16C7x5 does not have bulk mode
#else
#include <pic18_usb.h> //Microchip 18Fxx5x hardware layer for usb.c
#endif
#else
57
Proyecto de 5° Semestre Seguidor de Intrusos
58
Proyecto de 5° Semestre Seguidor de Intrusos
59
Proyecto de 5° Semestre Seguidor de Intrusos
usb_cdc_got_set_line_coding=TRUE;
usb_request_get_data();
break;
case 0x21: //get_line_coding
memcpy(usb_ep0_tx_buffer, &usb_cdc_line_coding, sizeof(usb_cdc_line_coding));
usb_request_send_response(sizeof(usb_cdc_line_coding)); //send wLength bytes
break;
case 0x22: //set_control_line_state
usb_cdc_carrier=usb_ep0_rx_buffer[2];
usb_put_0len_0();
break;
case 0x23: //send_break
usb_cdc_break=make16(usb_ep0_rx_buffer[2],usb_ep0_rx_buffer[3]);
usb_put_0len_0();
break;
default:
usb_request_stall();
break;
}
}
}
void usb_isr_tok_out_cdc_data_dne(void) {
usb_cdc_get_buffer_status.got=TRUE;
usb_cdc_get_buffer_status.index=0;
#if (defined(__PIC__))
#if __PIC__
usb_cdc_get_buffer_status.len=usb_rx_packet_size(USB_CDC_DATA_OUT_ENDPOINT);
#else
usb_cdc_get_buffer_status.len=usb_get_packet_buffer(
USB_CDC_DATA_OUT_ENDPOINT,&usb_cdc_get_buffer_status_buffer[0],USB_CDC_DATA_OUT_SIZE);
#endif
#else
usb_cdc_get_buffer_status.len=usb_get_packet_buffer(
USB_CDC_DATA_OUT_ENDPOINT,&usb_cdc_get_buffer_status_buffer[0],USB_CDC_DATA_OUT_SIZE);
#endif
}
void usb_isr_tok_in_cdc_data_dne(void) {
if (usb_cdc_put_buffer_nextin) {
usb_cdc_flush_out_buffer();
}
else {
usb_cdc_put_buffer_free=TRUE;
}}
void usb_cdc_flush_out_buffer(void) {
if (usb_cdc_put_buffer_nextin) {
60
Proyecto de 5° Semestre Seguidor de Intrusos
usb_cdc_put_buffer_free=FALSE;
usb_put_packet(USB_CDC_DATA_IN_ENDPOINT,usb_cdc_put_buffer,usb_cdc_put_buffer_nextin,USB_
DTS_TOGGLE);
usb_cdc_put_buffer_nextin=0;
}
}
void usb_cdc_init(void) {
usb_cdc_line_coding.dwDTERrate=9600;
usb_cdc_line_coding.bCharFormat=0;
usb_cdc_line_coding.bParityType=0;
usb_cdc_line_coding.bDataBits=8;
(int8)usb_cdc_carrier=0;
usb_cdc_got_set_line_coding=FALSE;
usb_cdc_break=0;
usb_cdc_put_buffer_nextin=0;
usb_cdc_get_buffer_status.got=0;
usb_cdc_put_buffer_free=TRUE;
}
char usb_cdc_getc(void) {
char c;
while (!usb_cdc_kbhit()) {}
c=usb_cdc_get_buffer_status_buffer[usb_cdc_get_buffer_status.index++];
if (usb_cdc_get_buffer_status.index >= usb_cdc_get_buffer_status.len) {
usb_cdc_get_buffer_status.got=FALSE;
usb_flush_out(USB_CDC_DATA_OUT_ENDPOINT, USB_DTS_TOGGLE);
}
return(c);
}
void usb_cdc_putc_fast(char c) {
int1 old_gie;
old_gie=INT_GIE;
INT_GIE=0;
if (usb_cdc_put_buffer_nextin >= USB_CDC_DATA_IN_SIZE) {
usb_cdc_put_buffer_nextin=USB_CDC_DATA_IN_SIZE-1; //we just overflowed the buffer!
}
usb_cdc_put_buffer[usb_cdc_put_buffer_nextin++]=c;
INT_GIE=old_gie;
if (usb_cdc_put_buffer_free) {
usb_cdc_flush_out_buffer();
}}
void usb_cdc_putc(char c) {
while (!usb_cdc_putready()) {
if (usb_cdc_put_buffer_free) {
usb_cdc_flush_out_buffer();
} }
usb_cdc_putc_fast(c);
61
Proyecto de 5° Semestre Seguidor de Intrusos
}
#include <ctype.h>
BYTE gethex1_usb() {
char digit;
digit = usb_cdc_getc();
usb_cdc_putc(digit);
if(digit<='9')
return(digit-'0');
else
return((toupper(digit)-'A')+10);
}
BYTE gethex_usb() {
int lo,hi;
hi = gethex1_usb();
lo = gethex1_usb();
if(lo==0xdd)
return(hi);
else
return( hi*16+lo );
}
void get_string_usb(char* s, int max) {
int len;
char c;
--max;
len=0;
do {
c=usb_cdc_getc();
if(c==8) { // Backspace
if(len>0) {
len--;
usb_cdc_putc(c);
usb_cdc_putc(' ');
usb_cdc_putc(c);
}
} else if ((c>=' ')&&(c<='~'))
if(len<max) {
s[len++]=c;
usb_cdc_putc(c);
}
} while(c!=13);
s[len]=0;
}
#ifdef _STDLIB
signed int get_int_usb() {
char s[5];
signed int i;
get_string_usb(s, 5);
62
Proyecto de 5° Semestre Seguidor de Intrusos
i=atoi(s);
return(i);
}
signed long get_long_usb() {
char s[7];
signed long l;
get_string_usb(s, 7);
l=atol(s);
return(l);
}
float get_float_usb() {
char s[20];
float f;
get_string_usb(s, 20);
f = atof(s);
return(f);
}
#endif
%%%%%%%%%%%%%%%%%%%%%%%%%
#include ".\USBCCS2.h"
void main()
{
byte ent;
delay_ms(300);
usb_cdc_init();
usb_init();
while(!usb_cdc_connected()){}
do
{
usb_task();
if(usb_enumerated())
{
output_b(usb_cdc_getc());
ent=(input_a()&(byte)63)<<1;
if(input(PIN_E3))
{
ent=ent|(byte)1;
}
if(input(PIN_C0))
{
ent=ent|(byte)128;
}
printf(usb_cdc_putc_fast,"%c",ent);
}
} while (1);
}
}
63
Proyecto de 5° Semestre Seguidor de Intrusos
ANEXO G
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
m1=3;m2=-3;cs=5;sigma1=2.7;sigma2=1.6;cg1=0;cg2=5;cg3=10;
i1=1;i2=1;i3=1;i4=1;i5=1;i6=1;i7=1;i8=1;i9=1;i10=1;i11=1;
x=0:.1:10;y=0:.1:10;z=0:.1:10;
%%%Posicion Objeto
%%%%IZQ
for x1=0:0.1:10
y1(i1)=exp(-0.5*(((x1-cg1)/sigma1)^2));
i1=i1+1;
end
x1=0:0.1:10;
%%%%%MEDIO
64
Proyecto de 5° Semestre Seguidor de Intrusos
for x2=0:0.1:10
y2(i2)=exp(-0.5*(((x2-cg2)/sigma2)^2));
i2=i2+1;
end
x2=0:0.1:10;
%%%%%DER
for x3=0:0.1:10
y3(i3)=exp(-0.5*(((x3-cg3)/sigma1)^2));
i3=i3+1;
end
x3=0:0.1:10;
%%%%%%%%%%%%%%POSICION MOTOR
%%%%IZQ
for x4=0:0.1:10
y4(i4)=exp(-0.5*(((x4-cg1)/sigma1)^2));
i4=i4+1;
end
x4=0:0.1:10;
%%%%%%MEDIO
for x5=0:0.1:10
y5(i5)=exp(-0.5*(((x5-cg2)/sigma2)^2));
i5=i5+1;
end
x5=0:0.1:10;
%%%%%DER
for x6=0:0.1:10
y6(i6)=exp(-0.5*(((x6-cg3)/sigma1)^2));
i6=i6+1;
end
x6=0:0.1:10;
%%%%%%%%%%%%%%%Velocidad Motor
%%%%%%LENTA
for x7=0:0.1:10
y7(i7)=exp(-0.5*(((x7-cg1)/sigma1)^2));
i7=i7+1;
end
x7=0:0.1:10;
%%%%%%MEDIA
65
Proyecto de 5° Semestre Seguidor de Intrusos
for x8=0:0.1:10
y8(i8)=exp(-0.5*(((x8-cg2)/sigma2)^2));
i8=i8+1;
end
x8=0:0.1:10;
%%%%%RAPIDA
for x9=0:0.1:10
y9(i9)=exp(-0.5*(((x9-cg3)/sigma1)^2));
i9=i9+1;
end
x9=0:0.1:10;
%%%%%Direccion motor
%%%%Clockwise
for x10=0:.1:10
if x10<=3.3
y10(i10)=1;
elseif x10>3.3 && x10<=5.5
y10(i10)=((5.5-x10)/(5.5-3.3));
else
y10(i10)=0;
end
i10=i10+1;
end
x10=0:.1:10;
%%%Anticlockwise
for x11=0:.1:10
if x11<=4.5
y11(i11)=0;
elseif x11>4.5 && x11<=6.6
y11(i11)=((x11-4.5)/(6.6-4.5));
else
y11(i11)=1;
end
i11=i11+1;
end
x11=0:0.1:10;
for X=1:length(x);
for Y=1:length(y);
R1=min(y1(X),y4(Y));
R2=min(y1(X),y5(Y));
R3=min(y1(X),y6(Y));
R4=min(y2(X),y4(Y));
R5=min(y2(X),y5(Y));
R6=min(y2(X),y6(Y));
R7=min(y3(X),y4(Y));
66
Proyecto de 5° Semestre Seguidor de Intrusos
R8=min(y3(X),y5(Y));
R9=min(y3(X),y6(Y));
CorteL1=max(R1,R5);
CorteL=max(CorteL1,R9);
CorteM1=max(R2,R4);
CorteM2=max(CorteM1,R6);
CorteM=max(CorteM2,R8);
CorteR=max(R3,R7);
for Z=1:length(z);
if CorteL<y7(Z)
ya7(Z)=CorteL;
else
ya7(Z)=y7(Z);
end
if CorteM<y8(Z)
ya8(Z)=CorteM;
else
ya8(Z)=y8(Z);
end
if CorteR<y9(Z)
ya9(Z)=CorteR;
else
ya9(Z)=y9(Z);
end
end
CQ=max([ya7;ya8]);
C=max([CQ;ya9]);
certero(X,Y)= defuzz(z,C,'centroid');
end
end
for X=1:length(x);
for Y=1:length(y);
R1=min(y1(X),y4(Y));
R2=min(y1(X),y5(Y));
R3=min(y1(X),y6(Y));
R4=min(y2(X),y4(Y));
R5=min(y2(X),y5(Y));
R6=min(y2(X),y6(Y));
R7=min(y3(X),y4(Y));
R8=min(y3(X),y5(Y));
R9=min(y3(X),y6(Y));
CorteCW1=max(R2,R3);
CorteCW=max(CorteCW1,R6);
CorteACW1=max(R4,R7);
CorteACW=max(CorteACW1,R8);
for Z=1:length(z);
if CorteACW<y10(Z)
67
Proyecto de 5° Semestre Seguidor de Intrusos
ya10(Z)=CorteACW;
else
ya10(Z)=y10(Z);
end
if CorteCW<y11(Z)
ya11(Z)=CorteCW;
else
ya11(Z)=y11(Z);
end
end
C1=max([ya10;ya11]);
certero1(X,Y)= defuzz(z,C1,'centroid');
end
end
handles.certero=certero;
guidata(hObject,handles)
handles.certero1=certero1;
guidata(hObject,handles)
handles.output = hObject;
% --- Outputs from this function are returned to the command line.
function varargout = imex3_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
68
Proyecto de 5° Semestre Seguidor de Intrusos
%Muestra el video
A=videoinput('winvideo',1,'YUY2_160x120');
%Toma una foto y los valores los garda en una variable
foto=getsnapshot(A);
figure(2)
imshow(foto)
%Convierte a escala de grises la variable
gris=rgb2gray(foto);
%Muestra la imagen
imshow(gris)
%Limpia la variable, la refresca y borra la anterior
flushdata(A)
%delete(A)
%clear A
%Todo valor < se convierte en binario(0's negro y 1's blanco)
C=90<gris;
%Muestra la imagen
figure(3)
imshow(C)
% Remueve todos los objetos de menos de 30 pixeles
bw = bwareaopen(C,30);
% Llena un espacio en la capa
se = strel('disk',2);
bw = imclose(bw,se);
% Llena cualquier hoyo
bw = imfill(bw,'holes');
figure(4)
imshow(bw)
hold on
%Se crea una matriz para utilizar la funcion para encontrar el centroide de
%la imagen
[B,L] = bwboundaries(bw,'noholes');
stats = regionprops(L,'Centroid');
for k = 1:length(B)
centroid = stats(k).Centroid;
plot(centroid(1),centroid(2),'ko')
end
%Acondicionamiento del dato del centroide
cent1=int8(centroid);
conversionx=(101/160);
conversiony=(101/120);
motorx=160-cent1(1);
motory=120-cent1(2);
posicionx=cent1(1)*conversionx;
posmotx=motorx*conversionx;
posiciony=cent1(2)*conversiony;
posmoty=motory*conversiony;
joinpos1=int8(posicionx);
joinmot1=int8(posmotx);
joinpos2=int8(posiciony);
joinmot2=int8(posmoty);
%Conexion con la superficie de control
V1=certero(joinmot1,joinpos1);
P1=certero1(joinmot1,joinpos1);
V2=certero(joinmot2,joinpos2);
P2=certero1(joinmot2,joinpos2);
69
Proyecto de 5° Semestre Seguidor de Intrusos
M1=zeros(size(1:5));
M2=zeros(size(1:5));
%Primer motor
%Calculo de las velocidades
if V1<=2.5 %Paro
M1(1)=1;
elseif 2.5<V1 && V1<4.5 %Lenta
M1(2)=1;
elseif 4.5<=V1 && V1<6 %Media
M1(3)=1;
else
M1(4)=1; %Rapida
end
%Direccion
if P1<=5
M1(5)=0; %Izq
else
M1(5)=1; %Der
end
%Segundo Motor
%Calculo de las velocidades
if V2<=2.5 %Paro
M2(1)=1;
elseif 2.5<V2 && V2<5 %Lento
M2(2)=1;
elseif 5<=V2 && V2<6.5 %Medio
M2(3)=1;
else
M2(4)=1; %Rapido
end
if P2<=5
M2(5)=0; %Arriba
else
M2(5)=1; %Abajo
end
M1,M2
%%Se crea el arreglo de los ochobits de salida para el USB
Out=zeros(size(1:8));
Out(1)=M1(5);Out(2)=M1(1);Out(3)=M2(5);Out(4)=M2(1);
if M1(2)==1
Out(5)=0;
Out(6)=0;
elseif M1(3)==1
Out(5)=0;
Out(6)=1;
elseif M1(4)==1
Out(5)=1;
Out(6)=0;
end
if M2(2)==1
Out(7)=0;
Out(8)=0;
elseif M2(3)==1
Out(7)=0;
Out(8)=1;
elseif M2(4)==1
70
Proyecto de 5° Semestre Seguidor de Intrusos
Out(7)=1;
Out(8)=0;
end
%Del numero binario se pasa al decimal para que que se envie al puerto
Decimal=0;
for l=0:7
if Out(l+1)==1
Decimal=Decimal+2^(7-l);
else
Decimal=Decimal+0;
end
end
%Muestra el no binario y su decimal.
Out
Decimal
s = serial('COM6','BaudRate',9600,'DataBits',8,'Parity','none','StopBits',1);
%% Se abre el puerto
fopen(s);
%% Se escribe
fwrite(s,Decimal);
%% Se lee
Entrada=fread(s,1,'uint8');
%% Se cierra el puerto
fclose(s);
delete(s);
Entrada
delete(A)
toc %Finaliza el contador del tiempo
end
71
Proyecto de 5° Semestre Seguidor de Intrusos
ANEXO H
Cronograma de actividades
Enero 2009
25 26 27 28 29 30 31
INICIO DE Creación del Junta
SEMESTRE equipo informativa
Febrero 2009
1 2 3 4 5 6 7
Lectura y
análisis grupal Recepción Propuesta de
del reglamento Documento construcción
informativo informativo
Reglas del (lluvia de ideas)
Proyecto
8 9 10 11 12 13 14
Adquisición de Compra de Ensamble previo Armado de la
los motores y material en software de base
engranes diseño
15 16 17 18 19 20 Finalización 21
Trabajo Ensamble previo Comienzo del del reporte Trabajo en
e n talle r,
en software de reporte escrito escrito y trabajo taller
Armado de la
base diseño en taller
22 23 24 25 26 27 28
Trabajo en Presentación Primer entrega
taller y para del proyecto
presentación
para exposición. exposición.
72
Proyecto de 5° Semestre Seguidor de Intrusos
Marzo 2009
1 2 3 4 5 6 7
Planeación para Diseño de Diseño de puente Armado de
la segunda puente H 1 H2 comunicación
entrega serial con AVR
8 9 10 11 12 13 14
Diseño de oscilador Armado de Programación de Compra de
para control de GALS para
velocidades de oscilador en material
control de M.
motor PAP. protoboard.
PAP.
15 16 17 18 19 20 21
Prueba de M. Diseño del Control Difuso
PAP con la sistema de
GAL. control
22 23 24 25 26 27 28
Diseño de Compra de
sensores material
29 30 31
Diseño de
fuentes de
alimentación
Abril 2009
1 2 3 4
Prueba de
comunicación
serial
5 6 7 8 9 10 11
12 13 14 15 16 17 18
Prueba del Pruebas y Segunda
funcionamiento ajustes entrega de
de cada parte del
proyecto
proyecto.
73
Proyecto de 5° Semestre Seguidor de Intrusos
19 20 21 22 23 24 25
26 27 28 29 30
Se decide Se da a conocer
cambiar la la Influenza en
comunicación México.
serial con PIC.
Mayo 2009
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
Se analiza la Se empiezan a Placas PCB de Placas PCB de
forma de trabajo desarrollar las puente H 1 y 2. sensores
para la entrega placas PCB.
final.
17 18 19 20 21 22 23
Placa PCB de PCB de GALS. Se prueba la Compra de
fuente de con osciladores comunicación material
alimentación serial con PIC utilizado
24 25 26 27 28 29 30
Se empieza a un Se detallan las Pruebas de las Realización de
unir el sistema de placas PCB. placas PCB reporte final.
control difuso
para recibir y
mandar datos
con el PIC.
74
Proyecto de 5° Semestre Seguidor de Intrusos
Junio 2009
31 1 2 3 4 5 6
Pruebas Pruebas Entrega de
Proyecto Final
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
75