Proyecto de 5° Semestre

Seguidor de Intrusos

INSTITUTO

POLITECNICO

NACIONAL UPIITA

PROYECTO DE 5° SEMESTRE 5BM2
Profesor M. en C. Miguel Ángel Rodríguez Fuentes Ing. Hermilio Manuel Sánchez Domínguez M. en C. Juan Antonio Jaramillo Gómez M. en C. Yesenia Eleonor González Navarro Asignatura Circuitos Lógicos Electrónica II Sensores y Actuadores Sistemas Neurodifusos Grupo 5BM2 5BM2 5BM2 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 INDICE

Seguidor de Intrusos

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

mediante el seguimiento de un cronograma de actividades a realizar. con las características como la organización y planeación.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. así como del presente. todos o una gran mayoría y descubran de los conocimientos obtenidos en semestres anteriores. se tomara en cuenta las dimensiones y se dejara espacio para la localización de la circuitería (sensores. También se busca que del trabajo en equipo sea puesto en práctica. según la reglamentación impuesta por el comité organizador. 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. 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. que serán integrados para la etapa próxima. será crucial en el transcurso del proyecto. todo esto con el fin de encarrilar a los alumnos en lo que es el campo y desempeño laboral de la ingenierías. entre otras cosas). 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. el cual se tratara de cumplir. y entre otras cualidades. Es necesario finalizar satisfactoriamente el proyecto. donde en términos muy generales. La capacidad para identificar y resolver problemas encontrados a través del trabajo en equipo. Se implementará por separado. Los integrantes del equipo repartirán las tareas de acuerdo a una organización con respecto al trabajo que realizaran durante todas las etapas. para poder alcanzar los objetivos y metas propuestas. Hay que recordar que los conocimientos 4 . protoboards. Objetivos Particulares En esta primera etapa de construcción. se generara la parte mecánica del prototipo. evitando lo más posible retrasos y demoras. el trabajo responsable de cada miembro. puesto en movimiento por medio de motores. lo cual será enviado a los actuadores mediante circuitos lógicos para así seguir la posición del intruso. PCB’s. ya especificada y manufacturada en su forma general con anterioridad. con una respectiva retroalimentación.

Proyecto de 5° Semestre Seguidor de Intrusos adquiridos previamente y por adquirir. 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. 5 . Por último. y el nivel de entusiasmo. son puntos fuertes de este proyecto. consolidándose finalmente en la productividad. la responsabilidad.

b) Determinación del nombre del producto En México lo más importante son las personas que conforman esta gran nación. casas o departamentos de seguridad. de autoservicio. 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). Se puede tener un estricto control en tiempo real de quien entra. bancos. como podría ser en una tienda comercial. sin que nadie se entere de que está siendo observado o detectado. Fig. sale. 6 . 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. etc. y que quedamos identificados con este nombre: México. el sistema de monitoreo de intrusos es parte normal de las operaciones en un ambiente de negocios. 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. son altamente flexibles para colocarlas en cualquier lugar con conexión a red. de fácil manejo y que requieren un mínimo de mantenimiento pero que se paga con un costo económico. o en lugares en donde se requiere mucha seguridad y por ende se requiere la utilización de este tipo de monitoreo.Proyecto de 5° Semestre Seguidor de Intrusos Elementos de Mercado a) Justificación del Proyecto Hoy en día. 1 Sistema Domestico Con este tipo de sistemas se puede estar al tanto de lo que está sucediendo en tiendas comerciales. Por mencionar sistemas de seguridad basados con cámaras IP que son sistemas de vigilancia remota digital. Estas cámaras IP mantienen una accesible solución para el monitoreo remoto.

fue extraído de una del MEX: Contracción de México. La etapa de activación o modo activo. 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.Proyecto de 5° Semestre Seguidor de Intrusos En razón a esta importancia el nombre designado análisis etimológico de la oración es la siguiente: i: Del idioma ingles significa ¨YO¨. cuando los sensores detecten la presencia de un objeto (intruso) el sistema pasara del estado en espera al estado activo. cerrando el lazo con una retro alimentación hacia la computadora con la captura de imágenes con la cámara. esta es una de las dos condiciones del comportamiento del sistema. 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. 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. La etapa de espera. esta etapa concluirá cuando los censores detecten la presencia del objeto. Las señales de control para acondicionar los actuadores serán proporcionadas por una computadora. solo los dispositivos de censado de presencia permanecerán activos. a este proyecto. en ese instante el consumo de energía mínimo pasa a ser el óptimo para que los dispositivos de las diferentes etapas funcionen. Como ya se menciono en este estado la cámara debe de enfocar en el punto origen (dentro del área de trabajo). 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. comienza cuando se detecta el objeto intruso. 7 . 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. 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. 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.

2 Diagrama de flujo del proyecto 8 .Proyecto de 5° Semestre Seguidor de Intrusos Diagramas de flujo Fig.

Proyecto de 5° Semestre Seguidor de Intrusos Diagrama de bloques CAD SENSORES CONVERTIDOR ANALOGICO DIGITAL IMAGEN DE CONTROL CIRCUITO DE CONTROL INTERFAZ USB SERIAL PROGRAMACION NEURO DIFUSA PROCESADOR INTERFAZ USB SERIAL CIRCUITOO DE CONTROL 2 ETAPA DE POTENCIA ACTUADOR 1 ACTUADOR 2 Fig. 3 Diagrama de bloques del proyecto 9 .

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. fue barrenada para insertarle un eje hecho con el mismo tubo de las extremidades. tanto al brazo como a la base de la cámara. Para mantener sujetos los motores se realizaron unos barrenos. Por último la cámara se fijo a una base hecha con cintra. 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. fueron montados en una base hecha a medida con sus respectivos ejes para permitir el libre movimiento. para darles movimiento se le soldaron unas articulaciones hechas con bisagras a una placa de acero galvanizado que es de uso comercial.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. para ello hemos recurrido a las características del fabricante. El acoplamiento de los motores se realzo con la manufactura en un torno. un material plástico ligero y durable. 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. El diseño comenzó en base a los materiales que se tenían a mano. En estas extremidades. Estos materiales accesibles y de bajo costo fueron maquinados. debido a su gran manejabilidad. Para darnos una mejor referencia se agregan en el anexo B los planos de las piezas construidas y manufacturadas por el equipo. el cual fue introducido al eje de movimiento vertical a través de una ranura hecha a este por medio de barrenos. de unos acoples también realizados con aluminio y sujetos a presión a los ejes de movimiento. 10 . Para que los motores permitieran el desplazamiento de la cámara. Observaciones Para calcular los parámetros de los actuadores hemos tenido dificultades ya que no contamos con los suficientes conocimientos prácticos para hacerlos. 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. 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. o en su momento llegar a consultar cybergrafia o libros. en donde se atornillaron los tornillos comerciales de 1/8. o disponibles comercialmente en muchos lugares de fácil acceso. Esta base construida de aluminio. desbastados y soldados para poder manufacturar el diseño en el que se planteo desde un comienzo.

esto dependiendo de las demandas que solicite el proyecto. así como la resistencia. el número de pasos. el número de pasos.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. 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.4 Ω Nota: algunas características fueron comprobadas en el laboratorio como el voltaje de alimentación.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. 11 .Proyecto de 5° Semestre Seguidor de Intrusos los cuales pueden ser cambiados en un futuro. 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.4 Ω Nota: algunas características fueron comprobadas en el laboratorio como el voltaje de alimentación.

en nuestro caso utilizaremos los resistores dependientes de la luz o LDR (Light Dependent Resistor). por el contrario su resistencia tendería a infinito idealmente. El funcionamiento de la fotorresistencia se basa en este principio.9 micro metros y 100 nano metros (luz visible de acuerdo a el espectro electromagnético). 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. mejor conocidos como fotorresistencias. pero esta solo estará en el orden de los M ohms. 4 Símbolo de la foto resistencia Como fuente de luz se escogió un laser que nos proporciona. esto implica de acuerdo a la ley de ohm (R=v/i ) que su resistencia tiende a cero. Para la elaboración del proyecto se usaron sensores ópticos. Entre más intensidad de luz le incida más corriente pasara sobre él. La Fig. Entre más fotones haya más electrones habrá en la banda de conducción provocando un flujo de corriente.4 representa la figura que representa a la fotorresistencia en los circuitos. ya que la luz de un laser es muy intensa coherente. monocromática. para que esto ocurra necesitamos que la intensidad de luz que incide sobre el material sensible a la luz sea mayor. Fig. Como su nombre son dispositivos que varían su resistencia en función de la luz. 12 .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. 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 .

Al contrario. 5 Divisor de tensión con una fotorresistencia en serie con una resistencia. 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. Si no hay luz su resistencia es muy grande lo que provoca que se quede con la mayor parte de la tensió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.Proyecto de 5° Semestre Seguidor de Intrusos La Fig. 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. El circuito de la figura 5 b) nos muestra otra configuración. podemos hacer que en el voltaje Vout sea casi 5V. 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. a) b) Fig. Para hacer cálculos tenemos que la LDR cuando le incide solo la luz natural: RLDR  10kOhms 13 . cuando no hay luz incidiendo su resistencia es muy grande haciendo que el Vout disminuya. 5 nos muestra el circuito a armar con la foto resistencia y saber ver como varía la tensión Vout .

Los comparadores de ventana cuentan con circuitos hechos con operacionales.1 Sensor de tope  Para evitar que la cámara se exceda de su ángulo de visión de 180°. avisara que el motor a pasos se detenga.5  7. y por programación.5V  Despejamos R: R 5v _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (8) R  850 R 850 x 4. lo cual nos ayudara a eliminar el error que presentan los cambios de luz incidente de cada lugar.650ohms 5 x. Sabiendo esto hacemos uso de la fórmula del divisor de tensión: Vout  R Vin _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (7) R  RLDR En la realidad Vout no puede ser igual a Vin por lo que propondremos Vout  4. conectados como se muestra en la siguiente figura 6: 14 . 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. los cuales nos envían una señal (un uno lógico o 5V).Proyecto de 5° Semestre Seguidor de Intrusos Y cuando le incide luz esta desciende a 850 Ohms. se han colocado dos interruptores de palanca.5V Substituyendo los valores la ecuación 7 quedara: 4.

Diagrama diseñado para el circuito de los sensores. Donde Vh es nuestro tensión superior y Vl es la tensión inferior.Proyecto de 5° Semestre Seguidor de Intrusos Fig. Fig. esto es para estabilizar las tensiones. 15 . 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. 7. Fig. si esta tensión es mayor a Vl pero menor a Vh tendremos una salida de en Vo igual a Vcc. Circuito en PCB para los sensores de presencia. 6 Sensor acoplado al comparador de ventana. de esta manera tenemos un rango de voltaje para comparar la tensión Vc. 8.

y el oscilador.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. 9 y Fig. ya que ayudara a la protección y optimo rendimiento de los circuitos como se observa en la Fig. 10 Fig. La fuente se encuentra compensada en corriente para proteger a los circuitos que utilicemos (siempre y cuando se llegue a necesitar). y si no se necesita simplemente no se agrega el compensador. por lo que si se llegase a requerir agregaríamos un compensador de corriente como se muestra en el diagrama. a las GAL´s. por lo que no hay necesidad de conectarle un compensador de corriente. 9 Fuente de tensión fija +5/-5 16 . Al conectarlos a una fuente de 5V de laboratorio medimos que la corriente que consumen es menos de 500 mA.

Los valores de los capacitores son: 17 . que los cálculos resultantes para los valores de los componentes que se usaron para esta fuente fueron los siguientes: El valor del transformador.10 Circuito impreso de la fuente fija simétrica +5/-5. Es por esto. a una corriente de 500mA. Vrms= 6-7Vrms Para lo cual utilizamos un transformador de salida a 12V A 500mA. con derivación central. el valor más cercano es. es: Y como se utilizara el devanado central.Proyecto de 5° Semestre Seguidor de Intrusos Fig.

11. Fig.Proyecto de 5° Semestre Seguidor de Intrusos Se usó un 7805 para regular la tensión positiva. 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.2V y el Valor máximo: 13 V 18 . pero si por algún motivo se necesita un poco mas de voltaje tendríamos que aumentar el mismo. 11 Fuente variable valor mínimo: 1.  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. y un 7905 para la regulación de la tensión negativa.

y así poder medir cuando corriente se consumía en total por los dos motores trabajando. a su salida. nos proporcionara la mitad de tensión. decidimos conectar una fuente de 9V.5A. Para conocer cuánto corriente consumía el circuito de control para los motores. 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. con una corriente de 2Amperes. 12 Circuito impreso de la fuente variable.Proyecto de 5° Semestre Seguidor de Intrusos Fig. es: 19 . así como los motores ya conectados. lo cual nos dio entre 800mA y 1. El valor del transformador.

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 .

a través de una serie de combinaciones lógicas. esto es que tiene dos bobinas lo cual implica que tiene cuatro terminales (dos para cada bobina). secuencia donde cada combinación lógica corresponde a un estado del NUMERO DE SECUENCIA 0 1 TERMINAL A 1 0 TERMINAL A’ 0 1 TERMINAL B 0 0 TERMINAL B’ 0 0 SALIDA S0 S1 21 . 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. Si estamos usando un motor bipolar.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. La tabla 1 indica la motor. Un motor a pasos mantiene su posición y torque mientras se le siga mandado la misma secuencia a través de sus terminales.

las cuales son necesarias para que el motor de los números de grados que lo colocaran en la posición deseada. Q4=Q2=Tip 32. pero también se pueden hacer a partir de componentes discretos. 13 muestra el puente H a utilizar. Transistor tipo PNP. 22 . 2. movimientos discretos. S1. 3. La Fig. ya que así podemos controlar el sentido de giro del motor a pasos. S2. que pueden ser mecánicos o eléctricos (transistores). esto es. Un puente H esta principalmente constituido por cuatro interruptores. 0. Comercialmente se pueden encontrar en circuitos integrados. Son utilizados comúnmente en robótica y como convertidores de potencia.  PUENTE H Es un dispositivo electrónico que permite que un motor de CD gire en ambos sentidos. 3) n veces. ya que presenta divisas ventajas a uno de CD. 2. Secuencia de un motor paso a paso Donde S0. Si se desea que el motor gire hacia el sentido opuesto la secuencia tendrá que ser enviada de manera inversa. 1. S3 son los estados en el cual se encuentra el motor. 1. Transistores tipo NPN. Los unos y ceros en las terminales representan Vcc y tierra respectivamente. Q1=Q3=Tip 31. en la cual usaremos como interruptores electrónicos los tips31 y tips32. En la elaboración del proyecto se usaron motores paso a paso. Esta secuencia será enviada con la ayuda de un puente H. En la siguiente figura se muestra la configuración básica de un puente H.Proyecto de 5° Semestre Seguidor de Intrusos 2 3 0 0 0 0 1 0 0 1 S2 S3 Tabla1. Para que el motor este girando en un sentido esta secuencia debe ser enviada a sus terminales en ese orden (0.

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

IB 
Substituimos valores:

Ic _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _(3) B

IB 

1A 60

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

R

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

Substituyendo valores:

R

V 1  VBE 12V  .7V   678ohms 1A IB 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 Naranja Rojo Amarillo 1 0 0 0 0 0 1 0 0 Tabla 2. Secuencia del motor a pasos 0 1 0 0 1

25

end conta. end process. y un contador para que se pueda dar la secuencia y así generar el movimiento. end if. end if.std_logic_1164. q: out std_logic_vector(1 downto 0). architecture logica of conta is begin --contador process(clk. end process. 26 . else if(dir='1')then q<=q+1. when "01" => s <= "0100". s: out std_logic_vector(3 downto 0)). else q<=q-1. dir: in std_logic.std_arith. use ieee.all.paro) begin if(clk'event and clk='1')then if(paro='1')then q<=q. entity conta is port(clk:in std_logic. end logica.Proyecto de 5° Semestre Seguidor de Intrusos Como se observa se necesita una diagonal de unos. use work. when others => s <= "0000". --decodificador process(q) begin case q is when "00" => s <= "1000". when "10" => s <= "0010". end case. El código VHDL para implementar el control del motor a pasos es: library ieee.all. end if. when "11" => s <= "0001". paro: in std_logic.dir.

16 Disposición de las terminales de la GAL.3.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. paro es nuestra entrada para parar o detener el motor a pasos. S(3) en orden de la secuencia la matriz. S(2). Para realizar la conexión física de la GAL.0. donde el subíndice indica el para generar la diagonal de de el contador ascendente secuencia 0. 16. y dir es la entrada para cambiar la dirección de giro.1.1… . donde CLK es nuestro reloj u oscilador. con la ayuda de MOD-4 con la Para invertir el giro el descendente.2. 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. Se realiza la asignación de las variables de entrada. 17. contador cambia a el circuito que se muestra en 27 . Las salidas están S(1). Fig. Con todo esto armamos la Fig. denominadas como s(0). tal y como se muestra a continuación en la Fig.

Nota: el circuito oscilador que esta acoplado a las GAL´s se explica a continuación. el cual consta de 6 inversores con su pin de VCC y su pin GND. el inversor que se uso fue el HD74HC14P de Hitachi Fig. Circuito de las GAL’s acoplado con el circuito oscilador. 17.Proyecto de 5° Semestre Seguidor de Intrusos La Fig. se uso un circuito básico oscilador. y tres capacitares de 22uF. Se usaron tres de estos para representar cada velocidad. Osciladores para control de velocidad Para seleccionar las velocidades de los motores de nuestro proyecto. el cual consiste en un inversor. conectado un capacitor en la entrada y una resistencia como retroalimentación de la salida a la entrada. el cual es un circuito integrado. 28 . un inversor de Schmitt. 18.

Proyecto de 5° Semestre Seguidor de Intrusos Fig. resultando en las tres diferentes velocidades. Configuración de HD74HC14P de Hitachi Las salidas de los tres osciladores están conectadas entre sí. 18. pero separados por medio de tres transistores BC547C que actúan como interruptores. Como se puede ver en la Fig. así se podrá elegir entre tres diferentes frecuencias. La salida a su vez se conecta al pin de la señal de reloj de las GAL´s que controla los motores. 29 . 19.

Este más adelante se controlara digitalmente por medio de un multiplexor dependiendo la señal de control que le entre a este. La velocidad media de 10Hz. y la velocidad lenta de 2 Hz. Los cálalos son los siguientes: Para la velocidad rápida: F 1. las velocidades que se eligieron fueron: La velocidad rápida de 20 Hz.2 RC 1. 19 Circuito para el control de frecuencias de la señal de reloj de la GAL.73 k 20 Hz (22 F ) 30 . Para cada oscilador se le calculo la frecuencia de salida.Proyecto de 5° Semestre Seguidor de Intrusos Fig.2 R FC R1  1.2  2. dependiendo la velocidad.

2 RC 1. que serán activados mediante una señal eléctrica. estos componentes se utilizaron para suplantar dos push botton que activaban el sentido de giro del motor y el paro del motor respectivamente. En particular para el circuito de las GAL´s. para que de esta manera cada GAL tenga sus propias señales de reloj. esto con ayuda del mismo circuito integrado.2  27 k 2 Hz (22 F ) Nota: Para esta última entrega los circuitos tienen algunos ajustes.Proyecto de 5° Semestre Seguidor de Intrusos Para la velocidad media: F 1.45 k 10 Hz (22 F ) Para la velocidad lenta: F 1. usados como interruptores. de poder acoplar las señales tanto de entrada como de salida de la computadora lo cual se explica a continuación.2 R FC R3  1.2 R FC R2  1. es la implementación de transistores. estos con el fin. Usando el mismo método para generar tres señales de reloj diferentes (para una GAL). Circuito de GAL´s acoplado con osciladores Para el caso del circuito de las GAL’s y del oscilador.2  5.2 RC 1. 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. Otro cambio importante que se les dio a estos circuitos. 31 . con la ventaja de poder mandar la señal de reloj deseada a cada una de las GAL´s. se tomo la decisión de acoplarlos en una sola placa. se diseñó un circuito que contenga 6 señales de reloj diferentes.

Proyecto de 5° Semestre Seguidor de Intrusos La Fig. Circuito de las GAL’s acoplado con el circuito oscilador. 20. 32 .

el 0 representa la izquierda y el 10 la derecha. Como se puede observar. ya que las variables que queremos controlar de los motores son sus velocidades y sus direcciones. sabiendo estas dos cosas se le puede ordenar al motor hacia donde se mueva y que tan rápido lo haga. es necesario saber primero dos cosas. El programa de control se realizo en el software matemático Matlab 2008b. en donde está el objeto al momento de sensar. ya sea izquierda. o hacia donde estaba viendo la cámara anterior al sensado. en la figura 21 se muestra los conjuntos difusos de entrada. Para el motor 1. 33 . Los conjuntos difusos de salida propuestos se muestran en la figura 22. y a que estas son fáciles de programar y de usar. estas explican posiciones. Como se puede observar están los dos conjuntos con tres funciones de membrecía cada uno. tanto del motor como del objeto. 21 Conjuntos difusos de entrada. en este caso. 2 de entrada y dos de salida. y en donde se encontraba el motor. en medio o derecha.Proyecto de 5° Semestre Seguidor de Intrusos Lógica Difusa (Sistema de Control Difuso) Para el control difuso se decidió usar 4 conjuntos difuso. estos representaran sectores de nuestra área de trabajo. Fig. Se decidió usar funciones exponenciales debido a su suave transición.

lenta. 34 . 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. media y rápida. la superficie de control queda como sigue. como se puede ver cuando el conjunto cae en cinco. Como se puede observar en el programa se utiliza composición max-min. las dos funciones tienen el mismo grado de pertenencia. junto con sus respectivas superficies de control en el ANEXO E. que es lo que queremos cuando controlamos el sentido de giro del motor.Proyecto de 5° Semestre Seguidor de Intrusos Fig. Se muestra el programa que controla el motor uno. en este caso se decidió usar solo tres. se siguió usando funciones gaussianas. donde estas ahora representan velocidades. es decir que giro a un lado o a otro. esto se ve mejor. y se defuzzyfica por medio del método del centroide. Como se muestra en la figura 23. 22 Conjuntos difusos de salida del motor 1 Para el conjunto de velocidad. en la superficie de control. esto quiere decir que el motor no se moverá hacia ningún lado.

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. si el motor está apuntando hacia la derecha y el objeto esta es la izquierda. como prueba podemos observar que si el motor esta en 10 y el objeto en 0. la superficie de control nos dice a qué velocidad se mueve el motor dependiendo de los dos conjuntos difusos de entrada. el motor se debe mover rápido.Proyecto de 5° Semestre Seguidor de Intrusos Fig. el color rojo indica que se es una velocidad rápida. es decir. La superficie de control del sentido de giro se muestra en la figura 25: 36 . el azul lenta.

37 . es decir antihorario y el azul el sentido CW o sentido horario. y en las figuras 26.Proyecto de 5° Semestre Seguidor de Intrusos Fig. aquí solo se muestra de nuevo el programa. para el motor 2 se decidió que los conjuntos fueran los mismos por lo que el programa y las superficies son las mismas. 25 Superficie de control del sentido de giro del motor 1 Aquí. 28 las imágenes de los conjuntos difusos así como las superficies de control. de la misma forma que en la anterior el color rojo representa el sentido ACW. con excepción que las funciones de membrecía de los conjuntos de entrada ya no son izq. en medio y de r. 27. 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. si no arriba. Ahora. e medio y abajo.

26 Conjuntos difusos de salida y entrada del motor 2 Fig.Proyecto de 5° Semestre Seguidor de Intrusos Fig. 27 Superficie de control 38 .

Proyecto de 5° Semestre Seguidor de Intrusos Fig. 28 Superficie de control 39 .

La librería #include “. la cual se encarga de abrir el puerto del PIC 18F2550 el cual tiene capacidad USB 2. por ello se necesita invertir la salida del decodificador para mandar la señal al oscilador: Fig. borrado y asignado para poder leer y escribir atreves de 8 bits de entrada y 8 bits de salida . las salidas del PIC van conectadas a un decodificador (74LS139) acoplado a una compuerta NOT (ya que el decodificador trabaja con lógica negativa). El programa está en lenguaje C. Diagrama esquemático de la comunicación serial. En la figura 29 se muestra el diagrama esquemático para la conexión del PIC 18F2550 hacia la PC mediante el puerto USB.h” que esta grabada en el PIC se encuentra en el anexo F. contiene una librería llamada #include ". 40 .h".0. con este programa se puede hacer lo antes mencionado.\USBCCS2.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. 29. para después cerrar el puerto hasta que sea requerido. donde las entradas van conectadas a una compuerta AND como acoplamiento entre los sensores. así como las salidas (Pin 1 – Pin 7) y entradas (Pin 21 – Pin 28).\USBCCS2. el cual es configurado .

30. fwrite(s. Para recibir y mandar datos desde Matlab utilizamos el siguiente código: s = serial('COM4'.'BaudRate'. El programa simplemente abre el puerto serial configurándolo para así escribir y luego leer datos y guardarlos en una variable.1).1.'StopBits'. con una velocidad de Baudios de 9600. 41 .'none'.'DataBits'. variable Con la variable s se configura el puerto como COM4. variable=fread(s. ninguna paridad y para detener el USB con 1. fopen(s). fclose(s). 8 bits de datos.8.'uint8').Proyecto de 5° Semestre Seguidor de Intrusos El diagrama de la comunicación serial en PCB se muestra en la figura 30: Fig. delete(s). para después cerrar el puerto. Diagrama PCB de la comunicación serial con PIC.'Parity'.255).9600.

ocupando solo 3 de las 4 que me da cada DeMux de salida. misma que se diseño para PCB. usamos un decodificador que tiene dos DeMux 2x4 para así tener hasta 10 bits. ocupando la diagonal del decodificador del DeMux.Proyecto de 5° Semestre Seguidor de Intrusos Decodificador Para poder obtener más salidas del puerto USB. lo anterior se muestra en la figura 31. 42 . por ello se necesita invertir la salida del decodificador para mandar la señal al inversor y así mandarla posteriormente al oscilador. Fig. Decodificador de acoplamiento entre PIC y compuerta NOT. 31. que son solo 8 bits. 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 medio de una instrucción se convierte a una imagen en escala de grises. después se eliminan los pixeles y se calcula el centroide de la imagen blanca. es decir. la cual se muestra en la figura 32. Fig. el adecuamiento también es sencillo. de la matriz de la imagen. 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. se decide que a partir de cierta escala de grises los pixeles serán blancos y los demás negros. Interfaz gráfica El procesamiento de la imagen es bastante sencillo. de los puros 1. con esto se logra que de los 10 datos que tenemos obtenemos 8. Con el dato de donde está el centroide se adecua parta unirlo con la superficie de control. cabe mencionar que son dos matrices de control la de velocidad y la de posición. El programa está en el anexo G.Proyecto de 5° Semestre Seguidor de Intrusos Programa Final del seguidor de intrusos. Para el programa final. 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. ya adecuada la posición. donde con comentarios se va explicando el código. se programa para acondicionar el dato para implementar un multiplexor. se toma el valor de la matriz de control en las coordenadas recién calculadas. que es de 160x120 a la de control que es de 101x101. se toma una foto. donde se hace todo el procesamiento de la imagen. y se repite el proceso nuevamente. y tenemos dos vectores de 5 datos. y esto es lo que manda la salida directamente a los actuadores haciendo que se mueva hacia el centroide de la figura. Debido a que el bus salida del USB son solo ocho. paro. 43 . la cual está en RGB. las tres velocidades y el sentido del giro. se decidió usar una interfaz gráfica en Matlab. 32. una vez sabiendo el valor de la coordenada. después. después toma otra foto.

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. para que de esta manera nosotros podamos cumplir con nuestro propósito como ingenieros. aunque complicados. aprendimos a hacer tolerantes. Aun así para dar seguimiento a la idea original se trato de darle mejoramiento a cada una de las ideas planteadas desde el principio.Proyecto de 5° Semestre Seguidor de Intrusos Conclusiones Aguilar Escorza Javier Antonio En esta última etapa. creo que nuestro trabajo en equipo se ve reflejado en nuestro propio prototipo. 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. pero no por ello dejamos de enfocarnos en lo que verdaderamente se tenía que entregar. 44 . pero también nos dieron la pauta para buscar nuevas soluciones y así estar preparados para nuevos retos. la satisfacción de lograrlos y hacer que funcionen como lo pensamos es un buen incentivo. 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. el trabajo en equipo fue arduo. 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. en otros nos falto un poco más. todos nos apoyábamos teniendo en cuenta en que tal vez nos equivocaríamos en algún proceso del proyecto. componentes y software. solidarios en fin. Para la realización de este tuvo mucho que ver el trabajo en equipo que llevo acabo de principio a fin. Los conocimientos adquiridos en el aula ayudaron y nos simplificaron el trabajo. las tareas y actividades fueron divididas y así es como se logro con éxito del ensamblado de los componentes. Pero como todo producto y más en los de tipo tecnológico. El mayor conocimiento adquirido para mi persona fue el uso de nuevos dispositivos. Quizás fue una prueba más para nosotros ya que aprendimos a trabajar como equipo.

Después de todo. pudimos lograr construirlo y hacer que funcionara. toda la elaboración del proyecto. claro que hubo problemas en su realización. pero consultando libros. muy gratificante. fue bueno ver como todo lo que he visto hasta ahora rindió frutos. En sí. la experiencia de todo el proyecto me dejo una sensación muy agradable .Proyecto de 5° Semestre Seguidor de Intrusos Maldonado Sánchez José Argenis Fue una experiencia. la programación del proyecto fue lo que me pareció más relevante. 45 . a su vez. el trabajo de equipo. fue unido y gratificante. compañeros y profesores. retador y fue una gran práctica con la cual aprendí muchísimas cosas. el proyecto me aprecio interesante. cosas que me servirán más adelante como ingeniero.

nmbtc. TIP42A.com/ http://www.com Última visita 20 de marzo última visita 30 de marzo última visita 8 de http://www.todorobot.x-robotics.com En donde buscamos los datasheet de: LM317. PIC18F22550.Proyecto de 5° Semestre Seguidor de Intrusos Bibliografía www. Nota: La mayor información consultada fue a base de los apuntes de materias involucradas así como de materias anteriores. BC547C http://www. LM7905. LM7805.ar/informacion/tutorial%20stepper/stepper-tutorial. ATMEGA8535.htm mayo. TIP32C.alldatasheet. LM337. 46 . TIP31C. 74LS139.com. 74LS08.

Fig.Proyecto de 5° Semestre Seguidor de Intrusos ANEXO A Características principales de la cámara. 47 . 33 Hoja de especificaciones de la cámara web.

35 Base de la cámara con los motores. 48 .Proyecto de 5° Semestre Seguidor de Intrusos ANEXO B Diagramas mecánicos Fig. 34 Base del proyecto. Fig.

Fig. 49 . 36 Cámara web. 37 Montaje final del proyecto con la cámara y motores.Proyecto de 5° Semestre Seguidor de Intrusos Fig.

2 M ohms 2 Resistencias de 10 K ohms 4 resistencias 2. 2 de 5k. 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. 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. Solera de aluminio de ½ pulgada. Una tuerca de ½ pulgada Una barra de aluminio de ½ pulgada.1µF 2 capacitores de 1µF 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.3V 2 preset de 2. Lamina de cintra Bisagras para madera No. 1(tamaño: chico). 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.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: Tubo de acero cromado de ½ pulgada.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 . a 500mA 1 transformador de 127V A 18V con devanado central. Tornillos con rondanas planas y tuercas de 1/8 de pulgada.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 50 1 resistencia de 1KΩ . Lamina de acero galvanizado para tapa de cableado eléctrico domestico.1v y 2 de 3. Un tornillo de 3/8 de pulgada.

Diagrama de disposición de pines.Proyecto de 5° Semestre Seguidor de Intrusos ANEXO D Especificaciones de la Gal 22V10D. Fig. 51 . 38. Especificaciones de la Gal 22V10D.

i8=1.i5=1.1:10.i6=1. i5=i5+1.1:10 y5(i5)=exp(-0.cg1=0. clc.i3=1. i1=i1+1.1:10 y3(i3)=exp(-0.i4=1. %%%%%DER for x3=0:0. %%%%%%%%%%%%%%POSICION MOTOR %%%%IZQ for x4=0:0.6.5*(((x1-cg1)/sigma1)^2)).1:10.y=0:.5*(((x4-cg1)/sigma1)^2)).z=0:.1:10 y6(i6)=exp(-0.i10=1.clear all. 52 . %%%%Detector de intrusos.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. end x2=0:0. %%%%%MEDIO for x2=0:0. para el proyecto de 5to.1:10 y4(i4)=exp(-0.1:10.1:10.m2=-3. i4=i4+1.5*(((x6-cg3)/sigma1)^2)).1:10 y1(i1)=exp(-0.1:10. %%%%%%MEDIO for x5=0:0.cg3=10.1:10.i11=1. m1=3.sigma2=1. i1=1.1:10 y2(i2)=exp(-0. %%%%%DER for x6=0:0.cs=5.cg2=5.1:10. x=0:.i2=1.i9=1. i3=i3+1. i2=i2+1.1:10. i6=i6+1.5*(((x5-cg2)/sigma2)^2)).close all. end x5=0:0.7. end x1=0:0. end x3=0:0.sigma1=2.5*(((x3-cg3)/sigma1)^2)). end x4=0:0.5*(((x2-cg2)/sigma2)^2)).i7=1. %%%Posicion Objeto %%%%IZQ for x1=0:0.

3 y10(i10)=1.5 y10(i10)=((5. elseif x11>4.5*(((x9-cg3)/sigma1)^2)).1:10.1:10.1:10. %%%%%RAPIDA for x9=0:0.6 y11(i11)=((x11-4.1:10 y7(i7)=exp(-0.5-3.5*(((x7-cg1)/sigma1)^2)). end x9=0:0. elseif x10>3. end i11=i11+1. end x11=0:0.1:10. %%%%%Direccion motor %%%%Clockwise for x10=0:.1:10.5 && x11<=6. %%%%%%MEDIA for x8=0:0.1:10 y8(i8)=exp(-0. else y10(i10)=0.Proyecto de 5° Semestre Seguidor de Intrusos end x6=0:0. else y11(i11)=1. end x7=0:0. %%%%%%%%%%%%%%%Velocidad Motor %%%%%%LENTA for x7=0:0.3 && x10<=5. end x10=0:. end i10=i10+1.6-4.5-x10)/(5. 53 .1:10 if x10<=3.1:10. i8=i8+1. i7=i7+1. i9=i9+1.1:10 if x11<=4. end x8=0:0.5)/(6.3)).5 y11(i11)=0.1:10 y9(i9)=exp(-0.5*(((x8-cg2)/sigma2)^2)).5)). %%%Anticlockwise for x11=0:.

y10.'b'.R8).'g') title('Conjunto difuso de la velocidad del motor') legend('LENTA'.y5(Y)).x2.1) ylabel('Grado de pertenencia') plot(x1.'b'. if CorteL<y7(Z) ya7(Z)=CorteL.y5(Y)).R7).y3.R6).x8. R8=min(y3(X). R1=min(y1(X).R9).2) ylabel('Grado de pertenencia') plot(x4.y4(Y)).y6(Y)).y4(Y)).'MED'.'MED'.'r'.'DER') title('Conjunto difuso de la posicion del motor') subplot(2.R4).4) plot(x10.y1. R7=min(y3(X).y9.x3.y6(Y)).2.'MED'.Proyecto de 5° Semestre Seguidor de Intrusos figure(1) subplot(2. end if CorteM<y8(Z) 54 . R9=min(y3(X). R2=min(y1(X).2.y4. CorteL1=max(R1.x11.3) plot(x7. for Y=1:length(y).y6(Y)).x9.x5. R4=min(y2(X). R5=min(y2(X).y5(Y)).y7.'DER') title('Conjunto difuso de la posicion del objeto') subplot(2.'b'.'r'. for Z=1:length(z).2.'r'. else ya7(Z)=y7(Z). CorteM2=max(CorteM1.'ACW') %%%%Superficie de control de la velocidad for X=1:length(x). CorteL=max(CorteL1. CorteM=max(CorteM2.x6.2.y4(Y)).'g') legend('IZQ'.'RAPIDA') subplot(2.y11.'b') title('Conjunto difuso de Direccion del motor') legend('CW'. CorteM1=max(R2. R3=min(y1(X).'r'.R5).y8.'g') legend('IZQ'.y5.y2. R6=min(y2(X). CorteR=max(R3.y6.

'centroid'). else ya10(Z)=y10(Z). else ya9(Z)=y9(Z). R9=min(y3(X). R6=min(y2(X). end 55 .y.y4(Y)). else ya8(Z)=y8(Z).y5(Y)).y5(Y)).y4(Y)). for Z=1:length(z). R1=min(y1(X). end end CQ=max([ya7.R3).y6(Y)). CorteACW1=max(R4.ya9]).y4(Y)). R3=min(y1(X).R7).Proyecto de 5° Semestre Seguidor de Intrusos ya8(Z)=CorteM.C. R8=min(y3(X). CorteCW1=max(R2.R8). R2=min(y1(X).R6).y6(Y)). for Y=1:length(y). certero(X.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). end end figure(2) mesh(x.y5(Y)). end if CorteR<y9(Z) ya9(Z)=CorteR. R7=min(y3(X). C=max([CQ. if CorteACW<y10(Z) ya10(Z)=CorteACW.ya8]). CorteACW=max(CorteACW1.Y)= defuzz(z. R5=min(y2(X).y6(Y)). CorteCW=max(CorteCW1. R4=min(y2(X).

else ya11(Z)=y11(Z).y. end end figure(3) mesh(x.ya11]). end end C1=max([ya10.certero1) title('Superficie de Control de giro Motor 1') ylabel('Posicion Objeto') xlabel('Posicion Motor') zlabel('Direccion') return 56 .'centroid').Y)= defuzz(z.C1.Proyecto de 5° Semestre Seguidor de Intrusos if CorteCW<y11(Z) ya11(Z)=CorteCW. certero1(X.

float get_float_usb(). signed long get_long_usb(). void usb_cdc_putc(char c).USBDIV. void usb_isr_tok_in_cdc_data_dne(void).c #endif #else 57 . void usb_cdc_flush_out_buffer(void). void usb_isr_tok_out_cdc_control_dne(void).h> //Microchip 18Fxx5x hardware layer for usb.h #include <18F2550. void get_string_usb(char* s. #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.CPUDIV1. signed int get_int_usb().NOWDT. void usb_cdc_init(void).NODEBUG. void usb_isr_tok_out_cdc_data_dne(void). int max).Proyecto de 5° Semestre Seguidor de Intrusos ANEXO F Librería #include ".VREGEN #use delay(clock=2000000) #define usb_cdc_kbhit() (usb_cdc_get_buffer_status. void usb_isr_tkn_cdc(void).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).h> #fuses HSPLL.PLL5. BYTE gethex1_usb().NOPROTECT. BYTE gethex_usb().\USBCCS2.NOMCLR. char usb_cdc_getc(void).NOLVP.

h" //USB Configuration and Device descriptors for this UBS device #include <usb. 0=DTE not present int1 active. } usb_cdc_carrier.\USBCCS2_1. //1=activate carrier. 58 . #if USB_CDC_DATA_IN_SIZE>=0x100 int16 usb_cdc_put_buffer_nextin=0. #else int8 usb_cdc_put_buffer_nextin=0. int1 usb_cdc_put_buffer_free. int8 usb_cdc_get_buffer_status_buffer[USB_CDC_DATA_OUT_SIZE].c> //handles usb setup tokens and get descriptor reports struct { int32 dwDTERrate. 4=space) int8 bDataBits. #if USB_CDC_DATA_OUT_SIZE>=0x100 int16 len. #endif } usb_cdc_get_buffer_status. 3=mark. 0=deactivate carrier int reserved:6. //data terminal rate. int8 usb_cdc_put_buffer[USB_CDC_DATA_IN_SIZE].c #endif #include ".c> //National 960x hardware layer for usb. //num of stop bits (0=1. int8 usb_cdc_encapsulated_cmd[8]. //parity (0=none. int8 index.Proyecto de 5° Semestre Seguidor de Intrusos #include <usbn960x.6. 2=2) int8 bParityType. #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. //data bits (5.5. int16 usb_cdc_break. //1=DTE present. #else int8 len.7.8 or 16) } usb_cdc_line_coding. #endif struct { int1 got. struct { int1 dte_present. 2=even. in bits per second int8 bCharFormat. 1=1. int16 index. 1=odd.

usb_request_send_response(usb_ep0_rx_buffer[6]). usb_request_get_data(). default: __usb_cdc_state=0. break. usb_ep0_rx_buffer. __usb_cdc_state=USB_CDC_OUT_LINECODING. //send wLength bytes break. break. __usb_cdc_state=0. #if USB_MAX_EP0_PACKET_LENGTH==8 __usb_cdc_state=USB_CDC_WAIT_0LEN. #endif case USB_CDC_OUT_LINECODING: memcpy(&usb_cdc_line_coding."CDC %X ".7 void usb_isr_tok_out_cdc_control_dne(void) { debug_usb(debug_putc. usb_ep0_rx_buffer.7). USB_CDC_WAIT_0LEN=3} __usb_cdc_state=0. __usb_cdc_state=0. usb_cdc_encapsulated_cmd. USB_CDC_OUT_LINECODING=2. #if USB_MAX_EP0_PACKET_LENGTH==8 case USB_CDC_WAIT_0LEN: usb_put_0len_0().__usb_cdc_state). 59 . #endif break. case 0x20: //set_line_coding debug_usb(debug_putc.8). switch (__usb_cdc_state) { case USB_CDC_OUT_COMMAND: memcpy(usb_cdc_encapsulated_cmd.Proyecto de 5° Semestre Seguidor de Intrusos enum {USB_CDC_OUT_NOTHING=0. #else usb_put_0len_0(). break. break. 8). __usb_cdc_state=0. case 0x01: //get_encapsulated_command memcpy(usb_ep0_tx_buffer. USB_CDC_OUT_COMMAND=1."!GSLC!"). usb_init_ep0_setup(). usb_request_get_data(). usb_put_0len_0(). }} 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. #byte INTCON=0xFF2 #bit INT_GIE=INTCON.

break.&usb_cdc_get_buffer_status_buffer[0]. usb_cdc_get_buffer_status.Proyecto de 5° Semestre Seguidor de Intrusos usb_cdc_got_set_line_coding=TRUE. #endif #else usb_cdc_get_buffer_status. case 0x22: //set_control_line_state usb_cdc_carrier=usb_ep0_rx_buffer[2]. #if (defined(__PIC__)) #if __PIC__ usb_cdc_get_buffer_status.index=0. #endif } void usb_isr_tok_in_cdc_data_dne(void) { if (usb_cdc_put_buffer_nextin) { usb_cdc_flush_out_buffer(). sizeof(usb_cdc_line_coding)). } } } void usb_isr_tok_out_cdc_data_dne(void) { usb_cdc_get_buffer_status.len=usb_get_packet_buffer( USB_CDC_DATA_OUT_ENDPOINT.len=usb_rx_packet_size(USB_CDC_DATA_OUT_ENDPOINT). case 0x21: //get_line_coding memcpy(usb_ep0_tx_buffer. usb_put_0len_0(). #else usb_cdc_get_buffer_status.len=usb_get_packet_buffer( USB_CDC_DATA_OUT_ENDPOINT. usb_put_0len_0(). &usb_cdc_line_coding.usb_ep0_rx_buffer[3]). case 0x23: //send_break usb_cdc_break=make16(usb_ep0_rx_buffer[2]. usb_request_send_response(sizeof(usb_cdc_line_coding)).&usb_cdc_get_buffer_status_buffer[0]. break. default: usb_request_stall(). //send wLength bytes break. usb_request_get_data(). break. break.got=TRUE.USB_CDC_DATA_OUT_SIZE).USB_CDC_DATA_OUT_SIZE). }} void usb_cdc_flush_out_buffer(void) { if (usb_cdc_put_buffer_nextin) { 60 . } else { usb_cdc_put_buffer_free=TRUE.

dwDTERrate=9600. USB_DTS_TOGGLE). INT_GIE=0. usb_cdc_put_buffer_free=TRUE. usb_cdc_line_coding. if (usb_cdc_put_buffer_free) { usb_cdc_flush_out_buffer(). if (usb_cdc_put_buffer_nextin >= USB_CDC_DATA_IN_SIZE) { usb_cdc_put_buffer_nextin=USB_CDC_DATA_IN_SIZE-1.got=FALSE. old_gie=INT_GIE. if (usb_cdc_get_buffer_status. usb_flush_out(USB_CDC_DATA_OUT_ENDPOINT.len) { usb_cdc_get_buffer_status. usb_cdc_put_buffer_nextin=0. usb_put_packet(USB_CDC_DATA_IN_ENDPOINT.usb_cdc_put_buffer_nextin. usb_cdc_got_set_line_coding=FALSE. while (!usb_cdc_kbhit()) {} c=usb_cdc_get_buffer_status_buffer[usb_cdc_get_buffer_status. INT_GIE=old_gie. //we just overflowed the buffer! } usb_cdc_put_buffer[usb_cdc_put_buffer_nextin++]=c.bCharFormat=0.USB_ DTS_TOGGLE). } return(c). } void usb_cdc_putc_fast(char c) { int1 old_gie. 61 .Proyecto de 5° Semestre Seguidor de Intrusos usb_cdc_put_buffer_free=FALSE.index++]. } } void usb_cdc_init(void) { usb_cdc_line_coding.bParityType=0.usb_cdc_put_buffer.got=0. usb_cdc_break=0. } } usb_cdc_putc_fast(c).index >= usb_cdc_get_buffer_status. usb_cdc_get_buffer_status. }} void usb_cdc_putc(char c) { while (!usb_cdc_putready()) { if (usb_cdc_put_buffer_free) { usb_cdc_flush_out_buffer().bDataBits=8. usb_cdc_line_coding. usb_cdc_line_coding. (int8)usb_cdc_carrier=0. usb_cdc_put_buffer_nextin=0. } char usb_cdc_getc(void) { char c.

char c. signed int i. do { c=usb_cdc_getc(). if(c==8) { // Backspace if(len>0) { len--. usb_cdc_putc(c).hi. usb_cdc_putc(c). 62 . --max.Proyecto de 5° Semestre Seguidor de Intrusos } #include <ctype. else return((toupper(digit)-'A')+10). get_string_usb(s.h> BYTE gethex1_usb() { char digit. s[len]=0. int max) { int len. } #ifdef _STDLIB signed int get_int_usb() { char s[5]. hi = gethex1_usb(). } BYTE gethex_usb() { int lo. usb_cdc_putc(digit). if(lo==0xdd) return(hi). } void get_string_usb(char* s. digit = usb_cdc_getc(). usb_cdc_putc(c). usb_cdc_putc(' '). } } while(c!=13). 5). len=0. lo = gethex1_usb(). else return( hi*16+lo ). if(digit<='9') return(digit-'0'). } } else if ((c>=' ')&&(c<='~')) if(len<max) { s[len++]=c.

} signed long get_long_usb() { char s[7]. l=atol(s)."%c".h" void main() { byte ent. usb_init(). } if(input(PIN_C0)) { ent=ent|(byte)128. return(i). get_string_usb(s. return(f). get_string_usb(s. delay_ms(300).Proyecto de 5° Semestre Seguidor de Intrusos i=atoi(s). if(usb_enumerated()) { output_b(usb_cdc_getc()). ent=(input_a()&(byte)63)<<1. } float get_float_usb() { char s[20].ent). signed long l. 20). f = atof(s). } printf(usb_cdc_putc_fast. while(!usb_cdc_connected()){} do { usb_task(). } #endif %%%%%%%%%%%%%%%%%%%%%%%%% #include ". 7). if(input(PIN_E3)) { ent=ent|(byte)1. } } 63 . return(l). float f. } } while (1). usb_cdc_init().\USBCCS2.

1:10. m1=3.Proyecto de 5° Semestre Seguidor de Intrusos ANEXO G Programa Final del seguidor de intrusos con interfaz gráfica. end x1=0:0.i8=1.cg1=0. %%%%Programa final de seguidor de intrusos del equipo iMex.i2=1..z=0:. 'gui_Callback'. 'gui_LayoutFcn'. %%%%%MEDIO 64 . eventdata.1:10.i4=1. i1=1.. %%%%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.1:10.y=0:. 'gui_Singleton'. @imex3_OutputFcn. @imex3_OpeningFcn. x=0:..i6=1..i10=1.i11=1.cs=5.5*(((x1-cg1)/sigma1)^2)). [] .i7=1.cg2=5.7. end % --.. varargin{:}). varargin{:}). i1=i1+1.Executes just before imex3 is made visible. 'gui_OutputFcn'.1:10 y1(i1)=exp(-0. gui_State = struct('gui_Name'. %%%Posicion Objeto %%%%IZQ for x1=0:0. varargin) clc. mfilename. .sigma2=1. function imex3_OpeningFcn(hObject. end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State. else gui_mainfcn(gui_State... .i3=1.. handles.m2=-3. .i5=1.cg3=10.6. []). .gui_Callback = str2func(varargin{1}). if nargin && ischar(varargin{1}) gui_State..sigma1=2. 'gui_OpeningFcn'.1:10. gui_Singleton..i9=1. .

%%%%%%%%%%%%%%%Velocidad Motor %%%%%%LENTA for x7=0:0. end x5=0:0.1:10 y2(i2)=exp(-0. Seguidor de Intrusos %%%%%%%%%%%%%%POSICION MOTOR %%%%IZQ for x4=0:0. %%%%%%MEDIO for x5=0:0.1:10 y3(i3)=exp(-0.5*(((x5-cg2)/sigma2)^2)). end x3=0:0.1:10.1:10 y4(i4)=exp(-0.5*(((x3-cg3)/sigma1)^2)). i4=i4+1. i5=i5+1.1:10.1:10 y7(i7)=exp(-0. i7=i7+1.1:10. end x6=0:0. %%%%%DER for x6=0:0.1:10. end x2=0:0.1:10.1:10. i2=i2+1.5*(((x6-cg3)/sigma1)^2)).Proyecto de 5° Semestre for x2=0:0.1:10 y5(i5)=exp(-0.5*(((x2-cg2)/sigma2)^2)). %%%%%%MEDIA 65 . i3=i3+1. end x7=0:0.1:10 y6(i6)=exp(-0.5*(((x4-cg1)/sigma1)^2)).5*(((x7-cg1)/sigma1)^2)). %%%%%DER for x3=0:0. i6=i6+1. end x4=0:0.

5*(((x8-cg2)/sigma2)^2)).1:10 y9(i9)=exp(-0. else y11(i11)=1.y5(Y)).5*(((x9-cg3)/sigma1)^2)).1:10 y8(i8)=exp(-0. %%%%%Direccion motor %%%%Clockwise for x10=0:. elseif x10>3. R2=min(y1(X).5-x10)/(5.y5(Y)).y6(Y)).5)/(6.1:10. R6=min(y2(X). %%%%Superficie de control de la velocidad for X=1:length(x).5 y11(i11)=0.6-4. end x11=0:0.1:10.1:10 if x10<=3.1:10 if x11<=4. R5=min(y2(X).5)). R3=min(y1(X).y4(Y)). end x10=0:.5-3. end i10=i10+1. i8=i8+1. end x8=0:0. R1=min(y1(X).y4(Y)).3 && x10<=5. R4=min(y2(X).1:10.y4(Y)).3)). 66 . else y10(i10)=0. end i11=i11+1.Proyecto de 5° Semestre Seguidor de Intrusos for x8=0:0.3 y10(i10)=1.y6(Y)).1:10.5 y10(i10)=((5.5 && x11<=6. %%%Anticlockwise for x11=0:. elseif x11>4.6 y11(i11)=((x11-4. R7=min(y3(X). i9=i9+1. %%%%%RAPIDA for x9=0:0. for Y=1:length(y). end x9=0:0.

Seguidor de Intrusos for Z=1:length(z).R6).y4(Y)).R9). CorteACW1=max(R4. CorteACW=max(CorteACW1. if CorteACW<y10(Z) 67 .y5(Y)). R8=min(y3(X).R7). certero(X. for Z=1:length(z). R7=min(y3(X).R3).R8). R2=min(y1(X). for Y=1:length(y). else ya7(Z)=y7(Z). else ya8(Z)=y8(Z). R9=min(y3(X). end if CorteR<y9(Z) ya9(Z)=CorteR. end if CorteM<y8(Z) ya8(Z)=CorteM. CorteCW=max(CorteCW1.y5(Y)). CorteM=max(CorteM2.R4).y6(Y)).y4(Y)). if CorteL<y7(Z) ya7(Z)=CorteL.'centroid').y5(Y)). R3=min(y1(X).y5(Y)).y6(Y)).y6(Y)).y4(Y)). R1=min(y1(X). R5=min(y2(X). CorteM1=max(R2.y6(Y)). CorteCW1=max(R2. CorteM2=max(CorteM1.R5). else ya9(Z)=y9(Z).Proyecto de 5° Semestre R8=min(y3(X). R9=min(y3(X).ya8]).R8).ya9]). CorteL=max(CorteL1. C=max([CQ. CorteL1=max(R1. CorteR=max(R3.R6).C.R7). end end %%%Superficie de control de Direccion for X=1:length(x). R4=min(y2(X).Y)= defuzz(z. R6=min(y2(X). end end CQ=max([ya7.

function varargout = imex3_OutputFcn(hObject.certero1.Proyecto de 5° Semestre ya10(Z)=CorteACW. tic %Inicio del contador de tiempo %Bucle del sensor Entrada=0. end if CorteCW<y11(Z) ya11(Z)=CorteCW. end for a=1:10 68 . handles). function pushbutton2_Callback(hObject.handles) handles. while Entrada==0 s = serial('COM6'. guidata(hObject. % --.output.certero1=certero1. eventdata. %% Se lee Entrada=fread(s. end end C1=max([ya10.handles) handles.'none'.certero. certero1=handles.C1.'uint8'). %% Se abre el puerto fopen(s).certero=certero.output = hObject.9600. %% Se escribe fwrite(s.1.'StopBits'.'Parity'. %% Se cierra el puerto fclose(s).1). guidata(hObject. certero=handles. delete(s). eventdata.'centroid'). certero1(X.ya11]). end end handles. handles) varargout{1} = handles.Outputs from this function are returned to the command line.Y)= defuzz(z. else ya10(Z)=y10(Z).'BaudRate'. % Update handles structure guidata(hObject. handles) %Inicio clc.'DataBits'.1). Seguidor de Intrusos % --.Executes on button press in pushbutton2.8. else ya11(Z)=y11(Z).

%Muestra la imagen imshow(gris) %Limpia la variable.centroid(2).'noholes'). conversionx=(101/160). posicionx=cent1(1)*conversionx.L] = bwboundaries(bw.joinpos2). motory=120-cent1(2). bw = imclose(bw.30).2). 69 . joinmot1=int8(posmotx). P1=certero1(joinmot1.1. V2=certero(joinmot2. for k = 1:length(B) centroid = stats(k). % Llena cualquier hoyo bw = imfill(bw. %Toma una foto y los valores los garda en una variable foto=getsnapshot(A). posiciony=cent1(2)*conversiony.'YUY2_160x120'). joinpos1=int8(posicionx). figure(2) imshow(foto) %Convierte a escala de grises la variable gris=rgb2gray(foto). motorx=160-cent1(1).Proyecto de 5° Semestre Seguidor de Intrusos %Muestra el video A=videoinput('winvideo'.Centroid.joinpos2). posmoty=motory*conversiony.'holes').se). %Conexion con la superficie de control V1=certero(joinmot1. plot(centroid(1). %Muestra la imagen figure(3) imshow(C) % Remueve todos los objetos de menos de 30 pixeles bw = bwareaopen(C. P2=certero1(joinmot2.'Centroid'). stats = regionprops(L. joinmot2=int8(posmoty).joinpos1). % Llena un espacio en la capa se = strel('disk'.'ko') end %Acondicionamiento del dato del centroide cent1=int8(centroid). joinpos2=int8(posiciony).joinpos1). conversiony=(101/120). 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. posmotx=motorx*conversionx. figure(4) imshow(bw) hold on %Se crea una matriz para utilizar la funcion para encontrar el centroide de %la imagen [B.

M2=zeros(size(1:5)). Out(8)=1. %Arriba else M2(5)=1.5 %Lenta M1(2)=1.Out(4)=M2(1). %Izq else M1(5)=1.5<V2 && V2<5 %Lento M2(2)=1.M2 %%Se crea el arreglo de los ochobits de salida para el USB Out=zeros(size(1:8)). elseif 5<=V2 && V2<6.5<V1 && V1<4. elseif M1(3)==1 Out(5)=0. elseif M2(4)==1 Seguidor de Intrusos 70 .5<=V1 && V1<6 %Media M1(3)=1. %Rapida end %Direccion if P1<=5 M1(5)=0. elseif M1(4)==1 Out(5)=1. elseif M2(3)==1 Out(7)=0. else M2(4)=1. %Rapido end if P2<=5 M2(5)=0. end if M2(2)==1 Out(7)=0.5 %Medio M2(3)=1. Out(6)=0. elseif 4. %Der end %Segundo Motor %Calculo de las velocidades if V2<=2.Out(3)=M2(5). Out(6)=1. if M1(2)==1 Out(5)=0. Out(6)=0.5 %Paro M2(1)=1. else M1(4)=1. Out(8)=0.Out(2)=M1(1).Proyecto de 5° Semestre M1=zeros(size(1:5)). elseif 2. Out(1)=M1(5). %Abajo end M1. elseif 2.5 %Paro M1(1)=1. %Primer motor %Calculo de las velocidades if V1<=2.

function pushbutton4_Callback(hObject.certero1) 71 . delete(s). %% Se abre el puerto fopen(s).''.9600.Executes on button press in pushbutton3. eventdata.'iMex'). handles) certero1=handles. function pushbutton6_Callback(hObject.'Parity'. %% Se lee Entrada=fread(s. handles) close(gcbf) % --. Out Decimal s = serial('COM6'. function pushbutton3_Callback(hObject. for l=0:7 if Out(l+1)==1 Decimal=Decimal+2^(7-l).Executes on button press in pushbutton5. eventdata.y.Executes on button press in pushbutton4.y. eventdata.1:10.'uint8'). %% Se escribe fwrite(s.Executes on button press in pushbutton6.1:10.'DataBits'.certero) % --.'none'. mesh(x.'BaudRate'.1).''. handles) certero=handles.y=0:. % --. else Decimal=Decimal+0.1:10. end end %Muestra el no binario y su decimal. handles) msgbox({'iMex:'. Entrada delete(A) toc %Finaliza el contador del tiempo end % --. function pushbutton5_Callback(hObject.' Antonio Aguilar Escorza '.''.1:10. Out(8)=0. eventdata.' Miguel Hernadez Feliciano '. x=0:.8. x=0:.certero.' Argenis Maldonado Sánchez '}.'StopBits'.Proyecto de 5° Semestre Out(7)=1. Seguidor de Intrusos end %Del numero binario se pasa al decimal para que que se envie al puerto Decimal=0.''.y=0:.' Eliuth Lopez Garcia '.certero1.1.Decimal). mesh(x. %% Se cierra el puerto fclose(s).

exposición.Proyecto de 5° Semestre Seguidor de Intrusos 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 3 Recepción Documento informativo Reglas del Proyecto mié 4 Propuesta de construcción (lluvia de ideas) jue vie sáb 1 2 Lectura y análisis grupal del reglamento informativo 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 Ensamble previo e n talle r. en software de Armado de la diseño base 16 17 18 Comienzo del reporte escrito 19 20 Finalización 21 del reporte Trabajo en escrito y trabajo taller en taller 22 23 24 25 Primer entrega del proyecto 26 27 28 Trabajo en Presentación taller y para presentación para exposición. 72 .

10 11 Armado de oscilador en protoboard.Proyecto de 5° Semestre Seguidor de Intrusos Marzo 2009 dom lun mar mié jue vie sáb 1 2 Planeación para Diseño de la segunda puente H 1 entrega 3 4 5 Diseño de puente H2 6 7 Armado de comunicación serial con AVR 8 9 Diseño de oscilador para control de velocidades de motor PAP. 73 . 17 18 Diseño del sistema de control 19 20 Control Difuso 21 22 29 23 30 24 31 25 Diseño de sensores 26 27 28 Compra de material Diseño de fuentes de alimentación Abril 2009 dom lun mar mié jue vie sáb 1 Prueba de comunicación serial 2 3 4 5 12 6 13 7 14 8 15 Pruebas y ajustes 9 16 10 17 Segunda entrega de proyecto 11 18 Prueba del funcionamiento de cada parte del proyecto. 12 13 Programación de Compra de GALS para material control de M. PAP. 14 15 16 Prueba de M. PAP con la GAL.

Mayo 2009 dom lun mar mié jue vie sáb 1 3 10 4 11 5 12 6 13 7 14 8 15 2 9 16 Se analiza la forma de trabajo para la entrega final. Se da a conocer la Influenza en México. Se empiezan a desarrollar las placas PCB. 28 29 Pruebas de las placas PCB 30 Realización de reporte final. Placas PCB de puente H 1 y 2. 74 . 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. Placas PCB de sensores 17 18 Placa PCB de fuente de alimentación 19 20 PCB de GALS.Proyecto de 5° Semestre Seguidor de Intrusos 19 26 20 27 21 28 22 29 23 30 24 25 Se decide cambiar la comunicación serial con PIC.

Proyecto de 5° Semestre Seguidor de Intrusos Junio 2009 dom lun mar mié jue vie sáb 31 7 14 21 28 1 Pruebas 8 15 22 29 2 Pruebas 9 16 23 30 3 Entrega de Proyecto Final 4 11 18 25 5 12 19 26 6 13 20 27 10 17 24 Inicio de semestre Revisión de proyecto Vacaciones Influenza 75 .