You are on page 1of 75

Proyecto de 5° Semestre Seguidor de Intrusos

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:

Aguilar Escorza Javier Antonio


Hernández Feliciano Miguel
López García Enrique Eliuth
Maldonado Sánchez José Argenis

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.

Es necesario finalizar satisfactoriamente el proyecto, según la reglamentación impuesta por


el comité organizador; donde en términos muy generales, se construirá un prototipo
encargado de monitorear intrusos por medio de sensores dentro del área delimitada y
seguirlos mediante una cámara a partir de sencillo mecanismo, puesto en movimiento por
medio de motores.

Se implementará por separado, toda la circuitería y la interfaz con un equipo informático el


cual fotografiara al intruso y decidirá la acción a realizar por medio de un programa
realizado bajo el lenguaje de MATLAB y la lógica difusa, lo cual será enviado a los
actuadores mediante circuitos lógicos para así seguir la posición del intruso, con una
respectiva retroalimentación.

Objetivos Particulares

En esta primera etapa de construcción, se generara la parte mecánica del prototipo, ya


especificada y manufacturada en su forma general con anterioridad; se tomara en cuenta
las dimensiones y se dejara espacio para la localización de la circuitería (sensores,
protoboards, PCB’s, entre otras cosas), que serán integrados para la etapa próxima.

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

adquiridos previamente y por adquirir, la responsabilidad, y el nivel de entusiasmo, son


puntos fuertes de este proyecto.

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

a) Justificación del Proyecto

Hoy en día, el sistema de monitoreo de intrusos es parte normal de las operaciones en un


ambiente de negocios, como podría ser en una tienda comercial, de autoservicio, bancos, o en
lugares en donde se requiere mucha seguridad y por ende se requiere la utilización de este tipo de
monitoreo.

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.

Fig. 1 Sistema Domestico

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.

b) Determinación del nombre del producto

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:

i: Del idioma ingles significa ¨YO¨.

MEX: Contracción de México, debido a un carácter puramente comercial.


Por lo anterior el significado adscrito al nombre del proyecto es ¨ Yo MEXico¨que hace
referencia a todo el conocimiento, trabajo y sentimientos de toda la población para la superación
y engrandecimiento de la nación. Además de estas características la importancia comercial es
relacionada a la globalización y la importancia de uno de los idiomas mas hablados en el
mundo.

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.

El sistema inicialmente se encontrara en espera, la cámara deberá enfocar en un punto inicial u


origen que en este caso es el centro del área de trabajo, cuando los sensores detecten la presencia
de un objeto (intruso) el sistema pasara del estado en espera al estado activo, siguiendo al objeto
intruso mediante actuadores que serán controlados por algoritmos neurodifusos que ayudaran a
determinar la posición del objeto en el área de trabajo.

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

Fig. 2 Diagrama de flujo del proyecto

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

Fig. 3 Diagrama de bloques del proyecto

9
Proyecto de 5° Semestre Seguidor de Intrusos

Desarrollo del proyecto


Se decidió por un diseño para la base de la cámara con 4 patas en vez de 3 debido a la facilidad
de construcción, la cual se plasmo en un diseño en el software de AutoCAD con todas las piezas
que fueron manufacturadas por el quipo para el primer reporte.

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.

Manufactura del proyecto (IMEX)

Caracterización del motor a pasos 1 SANYO DENKI

TIPO 103-546-8441

El motor a pasos es bipolar con 200 pasos de 1.8º/step

Tensión nominal de 12V DC

Nº de Fase es 4

Corriente nominal de fase es de 400 mA

Resistencia de la bobina de 2.4 Ω

Nota: algunas características fueron comprobadas en el laboratorio como el voltaje de


alimentación, el número de pasos, así como la resistencia.

Caracterización del motor a pasos 2 SANYO DENKI

TIPO 103-546-8441

El motor a pasos es bipolar con 200 pasos de 1.8º/step

Tensión nominal de 12V DC

Nº de Fase es 4

Corriente nominal de fase es de 400 mA

Resistencia de la bobina de 2.4 Ω

Nota: algunas características fueron comprobadas en el laboratorio como el voltaje de


alimentación, el número de pasos, así como la resistencia.
11
Proyecto de 5° Semestre Seguidor de Intrusos

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.

El funcionamiento de la fotorresistencia se basa en este principio. Entre más intensidad de luz le


incida más corriente pasara sobre él, esto implica de acuerdo a la ley de ohm (R=v/i ) que su
resistencia tiende a cero, por el contrario su resistencia tendería a infinito idealmente, pero esta
solo estará en el orden de los M ohms. La Fig.4 representa la figura que representa a la
fotorresistencia en los circuitos.

Fig. 4 Símbolo de la foto resistencia

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.

El circuito en la a Figura 5 a) nos muestra los cambios de Vout en la fotorresistencia de acuerdo


a la cantidad de luz que le incide. Si no hay luz su resistencia es muy grande lo que provoca que
se quede con la mayor parte de la tensión. Esto es:

VLDR  Vin _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (5)

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

Y cuando le incide luz esta desciende a 850 Ohms.

Sabiendo esto hacemos uso de la fórmula del divisor de tensión:

R
Vout  Vin _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (7)
R  RLDR

En la realidad Vout no puede ser igual a Vin por lo que propondremos

Vout  4.5V

Substituyendo los valores la ecuación 7 quedara:

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.

Circuito del sensor

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

Fig. 6 Sensor acoplado al comparador de ventana.

Donde Vh es nuestro tensión superior y Vl es la tensión inferior, de esta manera tenemos un


rango de voltaje para comparar la tensión Vc, si esta tensión es mayor a Vl pero menor a Vh
tendremos una salida de en Vo igual a Vcc.

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.

Fig. 7. Diagrama diseñado para el circuito de los sensores.

Fig. 8. Circuito en PCB para los sensores de presencia.

15
Proyecto de 5° Semestre Seguidor de Intrusos

Fuentes de alimentación

 Fuente de voltaje +5 /-5 simétrica

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

Fig. 9 Fuente de tensión fija +5/-5

16
Proyecto de 5° Semestre Seguidor de Intrusos

Fig.10 Circuito impreso de la fuente fija simétrica +5/-5.

Es por esto, que los cálculos resultantes para los valores de los componentes que se usaron para
esta fuente fueron los siguientes:

El valor del transformador, a una corriente de 500mA, es:

Y como se utilizara el devanado central, el valor más cercano es,

Vrms= 6-7Vrms

Para lo cual utilizamos un transformador de salida a 12V A 500mA, con derivación central.

Los valores de los capacitores son:

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.

 Fuente variable de 1.2V hasta 13V

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.

Fig. 11 Fuente variable valor mínimo: 1.2V y el Valor máximo: 13 V

18
Proyecto de 5° Semestre Seguidor de Intrusos

Fig. 12 Circuito impreso de la fuente variable.

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.

El valor del transformador, con una corriente de 2Amperes, es:

19
Proyecto de 5° Semestre Seguidor de Intrusos

Para un valor comercial del transformador seria de 24V

Los valores de los capacitores son:

Para el LM317 y el LM337, usando los siguientes valores,

Se encontró:

 Cuando

 Cuando

Utilizando un potenciómetro de 5KΩ

Para el compensador de corriente

20
Proyecto de 5° Semestre Seguidor de Intrusos

Etapa de potencia (Puente H)

 MOTOR PASO A PASO

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.

NUMERO TERMINAL TERMINAL TERMINAL TERMINAL SALIDA


DE A A’ B B’
SECUENCIA
0 1 0 0 0 S0
1 0 1 0 0 S1

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.

La Fig. 13 muestra el puente H a utilizar.

22
Proyecto de 5° Semestre Seguidor de Intrusos

Figura 13. Diagrama del Puente H

Cundo se activan los transistores Q4 y Q1 al mismo el motor gira en un sentido y cuando se


activan los transistores Q2 y Q3 el motor girara hacia el otro sentido.

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:

Sabemos que la corriente del motor es:

I M  Ic  1A _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (1)

Además de que: B  60

Haciendo uso de la formula:

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

De acuerdo a la Fig. 14 la resistencia está dada por:

V 1  VBE
R _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (4)
IB

Substituyendo valores:

V 1  VBE 12V  .7V


R   678ohms
IB 1A
60

Figura 14. Malla de entrada

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.

Fig. 15 Diseño del puente H en placa de cobre.

24
Proyecto de 5° Semestre Seguidor de Intrusos

Control de motor a pasos

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;

architecture logica of conta is


begin
--contador
process(clk,dir,paro)
begin
if(clk'event and clk='1')then
if(paro='1')then
q<=q;
else
if(dir='1')then
q<=q+1;
else
q<=q-1;
end if;
end if;
end if;
end process;
--decodificador
process(q)
begin
case q is
when "00" => s <= "1000";
when "01" => s <= "0100";
when "10" => s <= "0010";
when "11" => s <= "0001";
when others => s <= "0000";
end case;
end process;
end logica;

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.

Fig. 16 Disposición de las terminales de la GAL.

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.

Las salidas están denominadas como s(0),


S(1), S(2), S(3) en donde el subíndice indica el
orden de la secuencia para generar la diagonal de
la matriz, con la ayuda de el contador ascendente
de MOD-4 con la secuencia 0,1,2,3,0,1… .
Para invertir el giro el contador cambia a
descendente.

Con todo esto armamos el circuito que se muestra en


la Fig. 17.

27
Proyecto de 5° Semestre Seguidor de Intrusos

La Fig. 17. Circuito de las GAL’s acoplado con el circuito oscilador.

Nota: el circuito oscilador que esta acoplado a las GAL´s se explica a continuación.

Osciladores para control de velocidad

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

Fig. 18. Configuración de HD74HC14P de Hitachi

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

Fig. 19 Circuito para el control de frecuencias de la señal de reloj de la GAL.

Este más adelante se controlara digitalmente por medio de un multiplexor dependiendo la señal
de control que le entre a este.

Para cada oscilador se le calculo la frecuencia de salida, dependiendo la velocidad, las


velocidades que se eligieron fueron:

La velocidad rápida de 20 Hz. La velocidad media de 10Hz, y la velocidad lenta


de 2 Hz. Los cálalos son los siguientes:

Para la velocidad rápida:

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

Para la velocidad media:

1.2
F
RC
1.2
R
FC
1.2
R2   5.45 k
10 Hz (22 F )

Para la velocidad lenta:

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.

Circuito de GAL´s acoplado con osciladores

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

La Fig. 20. Circuito de las GAL’s acoplado con el circuito oscilador.

32
Proyecto de 5° Semestre Seguidor de Intrusos

Lógica Difusa (Sistema de Control Difuso)

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.

El programa de control se realizo en el software matemático Matlab 2008b, en la figura 21 se


muestra los conjuntos difusos de entrada. Para el motor 1.

Fig. 21 Conjuntos difusos de entrada.

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.

Como se puede observar, el 0 representa la izquierda y el 10 la derecha, en este caso, estos


representaran sectores de nuestra área de trabajo.

Los conjuntos difusos de salida propuestos se muestran en la figura 22.

33
Proyecto de 5° Semestre Seguidor de Intrusos

Fig. 22 Conjuntos difusos de salida del motor 1

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.

Como se puede observar en el programa se utiliza composición max-min, y se defuzzyfica por


medio del método del centroide. Como se muestra en la figura 23, la superficie de control
queda como sigue.

34
Proyecto de 5° Semestre Seguidor de Intrusos

Fig. 23 La superficie de control

35
Proyecto de 5° Semestre Seguidor de Intrusos

Fig. 24 Superficie de control de la velocidad del motor 1

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.

La superficie de control del sentido de giro se muestra en la figura 25:

36
Proyecto de 5° Semestre Seguidor de Intrusos

Fig. 25 Superficie de control del sentido de giro del motor 1

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

Fig. 26 Conjuntos difusos de salida y entrada del motor 2

Fig. 27 Superficie de control

38
Proyecto de 5° Semestre Seguidor de Intrusos

Fig. 28 Superficie de control

39
Proyecto de 5° Semestre Seguidor de Intrusos

Envió y recepción de datos por el puerto USB con PIC 18F2550

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:

Fig. 29. Diagrama esquemático de la comunicación serial.

40
Proyecto de 5° Semestre Seguidor de Intrusos

El diagrama de la comunicación serial en PCB se muestra en la figura 30:

Fig. 30. Diagrama PCB de la comunicación serial con PIC.

Para recibir y mandar datos desde Matlab utilizamos el siguiente código:

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.

Fig. 31. Decodificador de acoplamiento entre PIC y compuerta NOT.

42
Proyecto de 5° Semestre Seguidor de Intrusos

Programa Final del 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.

Fig. 32. Interfaz gráfica

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

Aguilar Escorza Javier Antonio

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.

Hernández Feliciano Miguel

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.

López García Enrique Eliuth

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

Maldonado Sánchez José Argenis

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

En donde buscamos los datasheet de:

LM317, LM337, LM7805, LM7905, TIP42A, ATMEGA8535, PIC18F22550, 74LS139,


74LS08, TIP32C, TIP31C, BC547C

http://www.x-robotics.com/ Última visita 20 de marzo

http://www.nmbtc.com última visita 30 de marzo

http://www.todorobot.com.ar/informacion/tutorial%20stepper/stepper-tutorial.htm última visita 8 de


mayo.

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

Características principales de la cámara.

Fig. 33 Hoja de especificaciones de la cámara web.

47
Proyecto de 5° Semestre Seguidor de Intrusos

ANEXO B
Diagramas mecánicos

Fig. 34 Base del proyecto.

Fig. 35 Base de la cámara con los motores.

48
Proyecto de 5° Semestre Seguidor de Intrusos

Fig. 36 Cámara web.

Fig. 37 Montaje final del proyecto con la cámara y motores.

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:

Etapa mecánica: 2 resistencias variables de 10KΩ a 2 watts


Tubo de acero cromado de ½ pulgada. 1 regulador 7805
Solera de aluminio de ½ pulgada. 1 regulador 7905
Lamina de acero galvanizado para tapa de 1 regulador LM317
cableado eléctrico domestico. 1 regulador LM337
Lamina de cintra 1 transformador de 127V A 18V con
Bisagras para madera No. 1(tamaño: chico). devanado central, a 500mA
Tornillos con rondanas planas y tuercas de 1 transformador de 127V A 18V con
1/8 de pulgada. devanado central, a 2A
Un tornillo de 3/8 de pulgada. 2 estructuras de PC inservibles con cable de
Una tuerca de ½ pulgada alimentación
Una barra de aluminio de ½ pulgada.
Puentes H
8 TIP32C
Para GALS con el oscilador 8 TIP31C
2 GAL´s 22V10 LATTICE 16 diodos 1N4148
1 HD74HC14P 16 resistencias de 680Ω
10 transistores BC475C 10 terminales de 2
10 resistencias de 220 ohms
4 resistencias de 1K ohm Comunicación serial
6 Presets, 2 de 5k, 2 de 10k y 2 de 50k ohms 1 PIC18F2550
6 capacitores de 22 microfaradios 1 capacitor de 0.47µF
13 terminales dobles 1 cristal de 20MHz
Sensores
Decodificador
1 LM339 1 decodificador 74LS139
1 LM7805 1 compuerta NOT 74LS08
4 Diodos Zener: 2 de 5.1v y 2 de 3.3V
2 preset de 2.2 M ohms 8 placas fenólicas
2 Resistencias de 10 K ohms Cloruro férrico
4 resistencias 2.2 K Ohms
Impresión de los circuitos en acetatos
2 Sensores de tope
Soldadura
Plancha
Fuentes de alimentación:
2 terminales de 3
2 Motores a pasos SANYO DENKI Tipo
4 terminales de 2
2 puente de diodo WD2M 103-546-8441
6 capacitores de 100µF
2 capacitores de .1µF 1 cámara web EYE 320
2 capacitores de 1µF
1 resistencia de 1KΩ 1 LapTop HP DV500

50
Proyecto de 5° Semestre Seguidor de Intrusos

ANEXO D
Especificaciones de la Gal 22V10D.

Especificaciones de la Gal 22V10D.

Fig. 38. Diagrama de disposición de pines.

51
Proyecto de 5° Semestre Seguidor de Intrusos

ANEXO E
Programa en Matlab para la superficie de control

%%%%Programa para obtener la superficie de control del motor 1 PaP del


%%%%equipo iMex, para el proyecto de 5to.
%%%%Detector de intrusos.
clc,clear all,close all;
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
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;

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

#include <usbn960x.c> //National 960x hardware layer for usb.c


#endif
#include ".\USBCCS2_1.h" //USB Configuration and Device descriptors for this UBS device
#include <usb.c> //handles usb setup tokens and get descriptor reports
struct {
int32 dwDTERrate; //data terminal rate, in bits per second
int8 bCharFormat; //num of stop bits (0=1, 1=1.5, 2=2)
int8 bParityType; //parity (0=none, 1=odd, 2=even, 3=mark, 4=space)
int8 bDataBits; //data bits (5,6,7,8 or 16)
} usb_cdc_line_coding;
int16 usb_cdc_break;
int8 usb_cdc_encapsulated_cmd[8];
int8 usb_cdc_put_buffer[USB_CDC_DATA_IN_SIZE];
int1 usb_cdc_put_buffer_free;
#if USB_CDC_DATA_IN_SIZE>=0x100
int16 usb_cdc_put_buffer_nextin=0;
#else
int8 usb_cdc_put_buffer_nextin=0;
#endif
struct {
int1 got;
#if USB_CDC_DATA_OUT_SIZE>=0x100
int16 len;
int16 index;
#else
int8 len;
int8 index;
#endif
} usb_cdc_get_buffer_status;
int8 usb_cdc_get_buffer_status_buffer[USB_CDC_DATA_OUT_SIZE];
#if (defined(__PIC__))
#if __PIC__
#if USB_MAX_EP0_PACKET_LENGTH==8
#locate usb_cdc_get_buffer_status_buffer=0x500+24
#elif USB_MAX_EP0_PACKET_LENGTH==64
#locate usb_cdc_get_buffer_status_buffer=0x500+136
#else
#error CCS BUG WONT LET ME USE MATH IN LOCATE
#endif
#endif
#endif
int1 usb_cdc_got_set_line_coding;
struct {
int1 dte_present; //1=DTE present, 0=DTE not present
int1 active; //1=activate carrier, 0=deactivate carrier
int reserved:6;
} usb_cdc_carrier;

58
Proyecto de 5° Semestre Seguidor de Intrusos

enum {USB_CDC_OUT_NOTHING=0, USB_CDC_OUT_COMMAND=1, USB_CDC_OUT_LINECODING=2,


USB_CDC_WAIT_0LEN=3} __usb_cdc_state=0;
#byte INTCON=0xFF2
#bit INT_GIE=INTCON.7
void usb_isr_tok_out_cdc_control_dne(void) {
debug_usb(debug_putc,"CDC %X ",__usb_cdc_state);
switch (__usb_cdc_state) {
case USB_CDC_OUT_COMMAND:
memcpy(usb_cdc_encapsulated_cmd, usb_ep0_rx_buffer,8);
#if USB_MAX_EP0_PACKET_LENGTH==8
__usb_cdc_state=USB_CDC_WAIT_0LEN;
usb_request_get_data();
#else
usb_put_0len_0();
__usb_cdc_state=0;
#endif
break;
#if USB_MAX_EP0_PACKET_LENGTH==8
case USB_CDC_WAIT_0LEN:
usb_put_0len_0();
__usb_cdc_state=0;
break;
#endif
case USB_CDC_OUT_LINECODING:
memcpy(&usb_cdc_line_coding, usb_ep0_rx_buffer,7);
__usb_cdc_state=0;
usb_put_0len_0();
break;
default:
__usb_cdc_state=0;
usb_init_ep0_setup();
break;
}}
void usb_isr_tkn_cdc(void) {
if ((usb_ep0_rx_buffer[4] == 1) || (usb_ep0_rx_buffer[4] == 0)) {
switch(usb_ep0_rx_buffer[1]) {
case 0x00: //send_encapsulated_command
__usb_cdc_state=USB_CDC_OUT_COMMAND;
usb_request_get_data();
break;
case 0x01: //get_encapsulated_command
memcpy(usb_ep0_tx_buffer, usb_cdc_encapsulated_cmd, 8);
usb_request_send_response(usb_ep0_rx_buffer[6]); //send wLength bytes
break;
case 0x20: //set_line_coding
debug_usb(debug_putc,"!GSLC!");
__usb_cdc_state=USB_CDC_OUT_LINECODING;

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

Programa Final del seguidor de intrusos con interfaz gráfica.

%%%%Programa final de seguidor de intrusos del equipo iMex.


%%%%Para proyecto de quinto semestre 5BM2
%%Antonio Aguilar Escorza
%%Eliuth Lopez Garcia
%%Miguel Hernandez Feliciano
%%Argenis Maldonado Sánchez

function varargout = imex3(varargin)


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @imex3_OpeningFcn, ...
'gui_OutputFcn', @imex3_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end

% --- Executes just before imex3 is made visible.


function imex3_OpeningFcn(hObject, eventdata, handles, varargin)
clc;

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;

%%%%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));

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

%%%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)

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;

% Update handles structure


guidata(hObject, handles);

% --- Outputs from this function are returned to the command line.
function varargout = imex3_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

% --- Executes on button press in pushbutton2.


function pushbutton2_Callback(hObject, eventdata, handles)
%Inicio
clc;
certero=handles.certero;
certero1=handles.certero1;

tic %Inicio del contador de tiempo


%Bucle del sensor
Entrada=0;
while Entrada==0
s =
serial('COM6','BaudRate',9600,'DataBits',8,'Parity','none','StopBits',1);
%% Se abre el puerto
fopen(s);
%% Se escribe
fwrite(s,1);
%% Se lee
Entrada=fread(s,1,'uint8');
%% Se cierra el puerto
fclose(s);
delete(s);
end
for a=1:10

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

% --- Executes on button press in pushbutton3.


function pushbutton3_Callback(hObject, eventdata, handles)
msgbox({'iMex:','',' Antonio Aguilar Escorza ','',' Miguel Hernadez Feliciano
','',' Eliuth Lopez Garcia ','',' Argenis Maldonado Sánchez '},'iMex');

% --- Executes on button press in pushbutton4.


function pushbutton4_Callback(hObject, eventdata, handles)
close(gcbf)

% --- Executes on button press in pushbutton5.


function pushbutton5_Callback(hObject, eventdata, handles)
certero=handles.certero;
x=0:.1:10;y=0:.1:10;
mesh(x,y,certero)

% --- Executes on button press in pushbutton6.


function pushbutton6_Callback(hObject, eventdata, handles)
certero1=handles.certero1;
x=0:.1:10;y=0:.1:10;
mesh(x,y,certero1)

71
Proyecto de 5° Semestre Seguidor de Intrusos

ANEXO H

Cronograma de actividades

Enero 2009

dom lun mar mié jue vie sáb

25 26 27 28 29 30 31
INICIO DE Creación del Junta
SEMESTRE equipo informativa
Febrero 2009

dom lun mar mié jue vie sáb

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

dom lun mar mié jue vie sáb

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

dom lun mar mié jue vie sáb

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

dom lun mar mié jue vie sáb

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

dom lun mar mié jue vie sáb

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

Inicio de Revisión de Vacaciones Influenza


semestre proyecto

75

You might also like