75
Proyecto de 5° Semestre Seguidor de Intrusos 1 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óme z 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¨

IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

  • Upload
    nanojm

  • View
    1.174

  • Download
    4

Embed Size (px)

Citation preview

Page 1: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

1

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¨

Page 2: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

2

I N D I C E

............................................................................................................................................. 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

Page 3: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

3

ANEXO B ..................................................................................................................................48

ANEXO C ..................................................................................................................................50

ANEXO D..................................................................................................................................51

ANEXO E ..................................................................................................................................52

ANEXO F ..................................................................................................................................57

ANEXO G..................................................................................................................................64

ANEXO H..................................................................................................................................72

Page 4: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

4

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

Page 5: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

5

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.

Page 6: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

6

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.

Page 7: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

7

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.

Page 8: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

8

Diagramas de flujo

Fig. 2 Diagrama de flujo del proyecto

Page 9: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

9

Diagrama de bloques

Fig. 3 Diagrama de bloques del proyecto

SENSORES

CAD

CONVERTIDOR

ANALOGICO

DIGITAL

CIRCUITO DE

CONTROL

INTERFAZ USB -

SERIAL

PROCESADOR PROGRAMACION

NEURO DIFUSA

INTERFAZ USB -

SERIAL

CIRCUITOO

DE

CONTROL 2

IMAGEN

DE

CONTROL

ETAPA DE

POTENCIA

ACTUADOR 1

ACTUADOR 2

Page 10: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

10

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,

Page 11: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

11

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.

Page 12: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

12

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.

Page 13: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

13

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:

VinVLDR _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (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 Vin:

inR VV _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (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:

kOhmsRLDR 10

Page 14: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

14

Y cuando le incide luz esta desciende a 850 Ohms.

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

VinRR

RVout

LDR _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (7)

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

VVout 5.4

Substituyendo los valores la ecuación 7 quedara:

vR

RV 5

8505.4

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (8)

Despejamos R:

ohmsx

xR 650.7

1.5

5.4850

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:

Page 15: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

15

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.

Page 16: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

16

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

Page 17: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

17

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:

Page 18: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

18

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

Page 19: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

19

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:

Page 20: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

20

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

Page 21: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

21

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 DE

SECUENCIA

TERMINAL A

TERMINAL A’

TERMINAL B

TERMINAL B’

SALIDA

0 1 0 0 0 S0

1 0 1 0 0 S1

Page 22: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

22

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.

Page 23: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

23

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:

AIcIM 1 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (1)

Además de que: 60B

Haciendo uso de la formula:

IcBI B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _(2)

De la cual despejamos BI

Page 24: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

24

B

IcI B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _(3)

Substituimos valores:

60

1AI B

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

B

BE

I

VVR

1 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (4)

Substituyendo valores:

ohmsA

VV

I

VVR

B

BE 678

60

1

7.121

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.

Page 25: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

25

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

Page 26: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

26

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;

Page 27: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

27

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.

Page 28: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

28

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.

Page 29: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

29

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.

Page 30: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

30

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:

kFHz

R

FCR

RCF

73.2)22(20

2.11

2.1

2.1

Page 31: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

31

Para la velocidad media:

kFHz

R

FCR

RCF

45.5)22(10

2.12

2.1

2.1

Para la velocidad lenta:

kFHz

R

FCR

RCF

27)22(2

2.13

2.1

2.1

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.

Page 32: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

32

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

Page 33: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

33

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.

Page 34: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

34

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.

Page 35: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

35

Fig. 23 La superficie de control

Page 36: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

36

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:

Page 37: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

37

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.

Page 38: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

38

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

Fig. 27 Superficie de control

Page 39: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

39

Fig. 28 Superficie de control

Page 40: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

40

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.

Page 41: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

41

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.

Page 42: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

42

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.

Page 43: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

43

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.

Page 44: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

44

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.

Page 45: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

45

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.

Page 46: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

46

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.

Page 47: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

47

ANEXO A

Características principales de la cámara.

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

Page 48: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

48

ANEXO B

Diagramas mecánicos

Fig. 34 Base del proyecto.

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

Page 49: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

49

Fig. 36 Cámara web.

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

Page 50: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

50

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:

Tubo de acero cromado de ½ pulgada.

Solera de aluminio de ½ pulgada. Lamina de acero galvanizado para tapa de

cableado eléctrico domestico. Lamina de cintra Bisagras para madera No. 1(tamaño: chico).

Tornillos con rondanas planas y tuercas de 1/8 de pulgada.

Un tornillo de 3/8 de pulgada. Una tuerca de ½ pulgada Una barra de aluminio de ½ pulgada.

Para GALS con el oscilador 2 GAL´s 22V10 LATTICE 1 HD74HC14P 10 transistores BC475C 10 resistencias de 220 ohms 4 resistencias de 1K ohm 6 Presets, 2 de 5k, 2 de 10k y 2 de 50k ohms 6 capacitores de 22 microfaradios 13 terminales dobles Sensores

1 LM339 1 LM7805 4 Diodos Zener: 2 de 5.1v y 2 de 3.3V 2 preset de 2.2 M ohms 2 Resistencias de 10 K ohms 4 resistencias 2.2 K Ohms 2 Sensores de tope Fuentes de alimentación: 2 terminales de 3 4 terminales de 2 2 puente de diodo WD2M 6 capacitores de 100µF 2 capacitores de .1µF 2 capacitores de 1µF

1 resistencia de 1KΩ

2 resistencias variables de 10KΩ a 2 watts 1 regulador 7805

1 regulador 7905 1 regulador LM317

1 regulador LM337 1 transformador de 127V A 18V con devanado central, a 500mA

1 transformador de 127V A 18V con devanado central, a 2A

2 estructuras de PC inservibles con cable de alimentación

Puentes H

8 TIP32C

8 TIP31C 16 diodos 1N4148 16 resistencias de 680Ω

10 terminales de 2

Comunicación serial

1 PIC18F2550 1 capacitor de 0.47µF

1 cristal de 20MHz

Decodificador

1 decodificador 74LS139 1 compuerta NOT 74LS08

8 placas fenólicas Cloruro férrico

Impresión de los circuitos en acetatos Soldadura

Plancha 2 Motores a pasos SANYO DENKI Tipo

103-546-8441

1 cámara web EYE 320 1 LapTop HP DV500

Page 51: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

51

ANEXO D

Especificaciones de la Gal 22V10D.

Especificaciones de la Gal 22V10D.

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

Page 52: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

52

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;

Page 53: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

53

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;

Page 54: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

54

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)

Page 55: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

55

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

Page 56: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

56

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

Page 57: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

57

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

Page 58: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

58

#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;

Page 59: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

59

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;

Page 60: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

60

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)

Page 61: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

61

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

Page 62: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

62

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

Page 63: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

63

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

Page 64: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

64

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(varargin1) gui_State.gui_Callback = str2func(varargin1); end

if nargout [varargout1: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

Page 65: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

65

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

Page 66: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

66

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

Page 67: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

67

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)

Page 68: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

68

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)

varargout1 = 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

Page 69: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

69

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

Page 70: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

70

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

Page 71: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

71

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)

Page 72: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

72

ANEXO H

Cronograma de actividades

Enero 2009

dom lun mar mié jue vie sáb

25 26 INICIO DE SEMESTRE

27 28 Creación del

equipo

29 30 Junta

informativa

31

Febrero 2009

dom lun mar mié jue vie sáb

1 2 Lectura y

análisis grupal del reglamento

informativo

3

Recepción

Documento

informativo

Reglas del

Proyecto

4

Propuesta de

construcción

(lluvia de ideas)

5 6 7

8 9 Adquisición de

los motores y engranes

10 Compra de

material

11 12 Ensamble previo

en software de diseño

13 14 Armado de la

base

15 Trabajo

en taller, Armado de la

base

16 Ensamble previo

en software de

diseño

17 18 Comienzo del

reporte escrito

19 20 Finalización

del reporte

escrito y trabajo

en taller

21 Trabajo en

taller

22 23 Trabajo en

taller y presentación

para exposición.

24 Presentación

para

exposición.

25 Primer entrega

del proyecto

26 27 28

Page 73: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

73

Marzo 2009

dom lun mar mié jue vie sáb

1 2 Planeación para la segunda entrega

3 Diseño de puente H 1

4

5 Diseño de puente H 2

6

7 Armado de comunicación serial con AVR

8 9 Diseño de oscilador para control de velocidades de motor PAP.

10

11 Armado de oscilador en protoboard.

12

13 Programación de GALS para control de M. PAP.

14 Compra de material

15 16 Prueba de M. PAP con la GAL.

17 18 Diseño del sistema de control

19 20 Control Difuso

21

22 23 24 25 Diseño de sensores

26 27

28 Compra de material

29 30 Diseño de fuentes de alimentación

31

Abril 2009

dom lun mar mié jue vie sáb

1 Prueba de comunicación serial

2 3 4

5 6 7 8 9 10 11

12 13 Prueba del funcionamiento de cada parte del proyecto.

14 15 Pruebas y ajustes

16 17 Segunda entrega de proyecto

18

Page 74: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

74

19 20 21 22 23 24 25

26 27 Se decide cambiar la comunicación serial con PIC.

28 29 30 Se da a conocer la Influenza en México.

Mayo 2009

dom lun mar mié jue vie sáb

1 2

3 4 5 6 7 8 9

10 11 Se analiza la forma de trabajo para la entrega final.

12 Se empiezan a desarrollar las placas PCB.

13

14 Placas PCB de puente H 1 y 2.

15 16 Placas PCB de sensores

17

18 Placa PCB de fuente de alimentación

19

20 PCB de GALS. con osciladores

21 Se prueba la comunicación serial con PIC

22 23 Compra de material utilizado

24 25 Se empieza a un unir el sistema de control difuso para recibir y mandar datos con el PIC.

26 27 Se detallan las placas PCB.

28 29 Pruebas de las placas PCB

30 Realización de reporte final.

Page 75: IMEX Camara Seguidora de Intruzos Implement an Do Logica Difuza UPIITA

Proyecto de 5° Semestre Seguidor de Intrusos

75

Junio 2009

dom lun mar mié jue vie sáb

31 1 Pruebas

2 Pruebas

3 Entrega de Proyecto Final

4 5 6

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 semestre

Revisión de proyecto

Vacaciones Influenza