Beruflich Dokumente
Kultur Dokumente
El siguiente trabajo est orientado a la explicacin del desarrollo de un seguidor de intrusos a travs de una web-cam con ayuda de programacin para anlisis de imgenes desde el software Matlab, as como para el control de los mecanismos de seguimiento y movimiento de un intruso previamente definido dentro de un rea de trabajo de igual manera previamente ya establecida por los desarrolladores del proyecto. Con dicho proyecto se pretende lograr la implementacin conjunta de distintas asignaturas y conocimientos para crear un sistema capaz de operar en tiempo real que puede ser de gran utilidad en sistemas de seguridad.
ABSTRACT
The following work is oriented to the explanation about the development of a follower of intrudes through a web-cam with help of programming for image analysis from software Matlab, as well as for the control of the mechanism of pursuit and movement of the intruder previously defined within a work previously established by de developers of the project. With this project it pretends to get the joint implementation of different subjects and knowledge to create a system able to operate in real time that can be very useful in security systems.
INTRODUCCION
La interdisciplinariedad de las ciencias y tecnologas en la actualidad se ha convertido en un aspecto que se debe tener muy en cuenta para cualquier carrera sea cual sea el rea de especialidad, ya que es importante conocer el principio de funcionamiento de todo lo que nos rodea y la manera en la que este puede llegar a afectar nuestras vidas. En el desarrollo de este proyecto podremos observar sin duda como es que el manejo de la informacin en la actualidad tiende a la digitalizacin, tal y como sucede con todos los dispositivos, seales, electrnica e imgenes, lo cual observramos a lo largo de la descripcin de nuestro seguidor de intrusos. Podremos darnos cuenta la manera en la que se pueden manejar dispositivos, en este caso motores de CD, de manera digital, el tratamiento de imagen a travs de la digitalizacin o binarizacion para su fcil y rpido anlisis, adems de poder observar de manera sencilla un control ON-OFF que se implementara a travs de un controlador difuso programado en una PC que mandara
seales digitales a los dispositivos utilizados, y todo esto para lograr un rpido y eficaz sistema que sea capaz de trabajar en tiempo real. Sin embargo, en todo proyecto desarrollado a nivel escolar se llegan a tener limitaciones debido a los elementos y dispositivos utilizados, por ejemplo en el hardware de la PC para el tratamiento de las seales, lo que podra implicar que el sistema reaccione un poco lento al seguimiento del intruso.
JUSTIFICACIN
Como se menciono anteriormente, en la actualidad la interdisciplinariedad de las ciencias es un aspecto muy importante, y en gran parte esa fue la razn por la que se eligi este proyecto, ya que en comparacin con los otros dos proyectos propuestos, el equipo cree que en este seguidor de intrusos se aplica un poco de las dos especialidades de mecatronica y telemtica. Razn por la cual y debido a que el equipo est compuesto por estudiantes que estarn en la especialidad de mecatronica y otros en la de telemtica, se opto por el desarrollo de este proyecto, pudiendo lograr as que los compaeros de mecatronica aprendan un poco sobre tratamiento de seales lo cual puede ser ms til para los de telemtica y al mismo tiempo los compaeros de telemtica aprendan un poco sobre control mecnico o sensores que en su momento sern ms usados por los mecatronicos. Por otra parte y sobre la misma base, la industria en la actualidad exige un amplio conocimiento general de ingeniera, por lo que este proyecto servir a ambas especialidades mencionadas anteriormente para algn proyecto dirigido a la industria, por ejemplo para la automatizacin de seguridad de un empresa.
ANTECEDENTES
Sin duda la seguridad en cualquier parte es muy importante, ya sea en el hogar, en un pequeo establecimiento, en alguna empresa o incluso en un gran complejo como podra ser un aeropuerto, por lo que se podra pensar en distintas maneras de solucionar este que puede resultar un gran problema en muchas ocasiones.
Por ejemplo uno podra pensar en poner mucha gente de seguridad para mantener todo a salvo, sin embargo esto no siempre puede resultar eficaz ni constante, para el reconocimiento de algn rostro, los seres humanos no cuentan con la suficiente memoria o atencin para recordar a alguien de entre millones de personas. Otro ejemplo puede ser la localizacin de personas en un lugar donde existe amontonamiento de masas, el ojo humano no podra procesar tanta informacin o caractersticas con tantos distractores. Por estas razones y como es costumbre del ser humano, siempre se busca una solucin a sus problemas para hacer la vida ms fcil y gracias a la tecnologa y su creatividad se pens en algn momento en un sistema de seguridad. Con el desarrollo de las cmaras, la ingeniera de control, la automatizacin y la digitalizacin estos sistemas de seguridad han mejorado, logrando cada vez una mejor aplicacin, resolucin y procesamiento. Algunas de las tcnicas desarrolladas y usadas en la actualidad para tratamiento de imgenes o video implican utilizar grandes bases de datos, redes neuronales, trackeo por contorno o por centroide, procesamiento binarizado, filtros digitales, etc. Todas estas tcnicas necesitan de un potente hardware para ser controlado, el cual dependiendo de la aplicacin, presupuesto y necesidades se elige. En desarrollo de nuestro seguidor de intrusos se utiliza el tratamiento de seales por binarizacion debido a que es ms fcil manejar solo 1 y 0, se utiliza un trackeo por centroide, esto con el fin de dar solo un punto exacto de localizacin del intruso y el control de motores y dispositivos se hace a travs de un puerto USB y no serial o paralelo, esto debido a la tendencia que surge con el uso del USB y la rapidez con la que se puede mandar una seal. Un ejemplo a gran escala del alcance que puede llegar a tener este tipo de tecnologas es la nueva red de seguridad que se est implementando en el DF, la cual utiliza cmaras en postes de cruces principales para el reconocimiento y seguimiento de placas y rostros que en su momento pueden llegar a ser de gran importancia para resolver algn problema. O sin ir tan lejos y en una escala menor, podramos ver el sistema de seguridad que se implementa en las empresas, con las cuales se puede grabar, seguir algn elemento ajeno a la unidad en la que se trabaja.
10
3.- CARACTERIZACION Y JUSTIFICACION DEL USO DE FUENTES DE ALIMENTACION Y DISPOSITIVOS ELECTRONICOS. 3.1Justificacin del uso de la fuente de alimentacin.
Debido a que la etapa de diseo de control y etapas de potencia y/o acoplamiento de seales no ha quedado completamente diseada y caracterizada tan solo podemos hacer una aproximacin del consumo total de potencia del sistema, as que se decidi seleccionar una fuente que cubriera de manera sobrada un requerimiento de potencia del sistema y que a su vez dispusiramos de las tensiones de alimentacin ms comunes para polarizar dispositivos que se utilizaran en las etapas electrnicas, estas alimentaciones seleccionadas son 3.3v para los dispositivos de ultra bajo consumo, 5v para los sistemas digitales ms comunes, +12v y -12v para alimentar dispositivos diversos como amplificadores operacionales o cierto tipo de motores. As entonces la fuente seleccionada fue la HPD2537F3R de la marca HIPRO, una fuente diseada para alimentar una computadora
personal, esta fuente ofrece las salidas de tensin dichas y potencias mximas de hasta 218 Watts lo cual nos ofrece una gran practicidad y potencia en un espacio muy reducido y a un costo equilibrado.
11
cuidadosamente minimizado para no causar interferencias a equipos prximos a estas fuentes. Caractersticas de entrada elctricas del fabricante Inputs AC Input 1 AC Input 2 Tensin 100-127 Vrms 200-240 Vrms Corriente 6A 4A Frecuencia 47Hz-63Hz 47Hz-63Hz
Tabla 3.1 Caractersticas de entrada elctricas de fuente conmutada dadas por el fabricante
Caractersticas de salida elctricas del fabricante Salida Tensin de salida 3.3v 5v 12v -12v Corriente de salida Mxima 18A 25A 14A 0.8A Potencia mxima 165W 218W 218W 218W
12
Donde la fuente de tensin V1 tiene los valores de 3.3v, 5v, +12v, -12v midiendo la tensin en la resistencia y por ley de Ohm su corriente. Salida Sd1 Sd2 Sd3 Sd4 Tensin Ideal 3.3v 5v 12v -12v Tensin real 3.38V 5.12v 11.97v -11.88v Corriente real 59.9mA 89.8mA 210.35mA -208.42mA
13
Con estos datos podemos realizar interpolaciones para encontrar aproximaciones lineales para el comportamiento de la fuente de diversas tensiones en un rango de corrientes dado los cuales se extiende de 0A 1A que fueron los rangos mximos que fue posible comprobar prcticamente aunque el fabricante de la fuente garantiza hasta 165 Watts de potencia.
14
15
16
Para encontrar los valores de la resistencia de carga tomas la fuente ideal como el valor de la tensin de la fuente sin carga y posteriormente encontrar la cada de tensin en la resistencia de carga para obtener el valor de la impedancia de salida de cada salida de la fuente Para obtener los valores de la resistencia de carga tenemos la siguiente formula
Donde Vsq es la tensin de la fuente sin carga; Vcqm es la tensin medida en la resistencia de carga; e icq es la corriente que circula por la resistencia de carga. Con los datos medidos y mostrados en la tabla obtenemos los siguientes valores: Salida Sd1 Sd2 Sd3 Sd4 Impedancia de salida 0.168 Ohm 0.556 Ohm 0.142 Ohm 0.625 Ohm
17
Por su buena velocidad de respuesta y consumo de energa equilibrado el motor de corriente continua es el actuador seleccionado para dar fuerza motriz al proyecto, adems de sus caractersticas antes mencionadas tambin tiene mtodos de control electrnico fciles de implementar como lo son la modulacin por ancho de pulso, Puente H, relevadores etc. Dado que un motor de corriente continua no puede utilizarse solo para los requerimientos de nuestro proyecto en algunos casos especiales se utilizara moto-reductores los cuales se definirn en cada caso. Es importante mencionar que para la seleccin de motores entre la gran variedad disponible se realizo un estudio de la fuerza necesaria en cada uno para realizar su trabajo e manera aceptable y dado que estos motores estaban ya en nuestro poder se acudi a probar cada uno con un aproximado de la carga final siendo los
siguientes motores los que tuvieron el desempeo deseado para su propia funcin dentro del proyecto.
El motor angular del intruso e uno de los motores que mas torque y firmeza necesitan a su vez que los requerimientos de velocidad son realmente bajos por lo que se decidio sacrificar un poco ve velocidad para ganar el torque optimo para el sistema. El motor utilizado tiene su origen de venta en la comercializadora Robodacta la cual nos proporciona informacion sobre su comportamiento la cual se presenta a continuacion Caracterisitica Tension de alimentacion Consumo de corriente sin carga Velocidad angular Torque Valor 5Vcd 75 mA. 43rpm 3 KgF*cm
Dado que nos interesa saber el comportameitno del motor con la carga especifica del sistema y saber los tiempos de barrido del angulo que barrera el area de trabajo. Por lo que se decidio medir los siguientes parametros especificos del proyecto:
18
Caracteristica Tension de alimentacion Consumo de corriente con carga de intruso Tiempo de barrido de 90 grados
Ida 1.94s
Es importante pensar en que sucederia con el consumo de corriente de nuesto motor si aumentamos o disminuimos la carga asique tomando la carga medida actualmente n la estructura como el 100% de carga realisaremos una aproximacion lineal para variaciones de carga de hasta un aumento de 50% donde el eje x muestra el procentaje de carga y el y el porcetnaje en mA.
Grafica 4.1 Variaciones de corriente del motor para variaciones porcentuales de carga
19
Caracterisitica Valor Tension de alimentacion 4 a 8 Vcd Consumo de corriente sin carga 100 mA. Velocidad angular 8000 rpm Torque 10 gF*cm Tabla 4.3 Caracteristcas del motor radial del intruso
Dado que estos datos son aproximados y necesitamos saber el comportamietno real del motor en nuestro sistema en las condiciones de operacin es necesario medir algunos parametros que son de gran interes para esta etapa debido a que con ellos se diseara el control electronico y la interface computacional asi que se realizan las siguientes mediciones Caracteristica Tension de alimentacion Consumo de corriente con carga de intruso Tiempo de distancia (29cm) Valor 5.17 Vcd 314.6mA Ida 1.09 Regreso 1.22s
20
De nuevo incluimos las proyecciones de consumo de corriente para variaciones de carga para este motor en el mismo formato mencionado anteriormente
Estos motores debend e ser un poco mas grandes debido a que deberan mover inmersos en el campo graviatacional la masa de la camara y la estructura de soperte de esta asi como el motor y mecanismo de desplzamiento longitudinal por lo que se seleciono un motor mucho mas robusto utilizando un motor de 12 volts de alimentacion y aproximadamente 500Ma. Igualmente se encontraron datos aproximados y se seleccionaron los mas cercanos a los datos medidos siendo los datso investigados los siguientes: Caracterisitica Tension de alimentacion Consumo de corriente sin carga Velocidad angular Torque Valor 6 a 12 Vcd 200 mA. 1150rpm(12v) No encontrado
Tabla 4.5 Caracteristicas del motor del eje fijo del seguidor
21
De igual manera que en casos anteriores medimos los tiempos de respuestatay consumos de nuestro motor con la carga definitiva que iba a tener en su funcionameinto definitivo presentando la siguiente tabla:
Caracteristica Tension de alimentacion Consumo de corriente con carga de intruso Tiempo de distancia (29cm)
Ida 0.44s
Tabla 4.6 Caracteristicas de comportamiento del motor del eje fijo del seguidor
Se muestra la proyeccion de consuo de corriente para variacion de carga en el mismo formato que las graficas anteriores
22
Denuevo presentamos los datos mas relevantes de su comportamiento dentro de nuestro sistema: Caracteristica Tension de alimentacion Consumo de corriente con carga de intruso Tiempo de distancia (29cm) Valor 11.99 Vcd 102.2 mA Regreso 11.14s
Ida 9.41 s
23
5.- ACONDICIONAMIENTO DE MOTORES 5.1 Etapa de potencia con uso del driver L298
Como habamos mencionado en la primera entrega decidimos hacer uso del integrado L298 debido a que ya trae integrados dos puentes H completos. Un puente H completo nos permitira conectar un motor de CD y poder moverlo en ambos sentidos. Adems de que el fabricante indica caractersticas del L298 siendo ms que suficientes para nuestras necesidades. Algunos de las caractersticas ms sobresalientes son: Suministro de voltaje a motores de hasta 46 volts. Nosotros trabajaremos a un mximo de 12 volts. Soporta hasta 4 amperes de corriente directa. Nosotros trabajaremos a un mximo de 1 ampere para los motores a utilizar. Proteccin contra sobretemperatura. Alta inmunidad al ruido Voltaje de entrada lgico 0 hasta 1.5 v.
Se opt por utilizar un puente H completo para cada motor ya que un puente H nos permite el cambio de sentido de giro de nuestros motores de CD .El hecho de utilizar el circuito integrado L298 y no construir nuestro propio puente H radica en cuestiones prcticas y econmicas. Adems el fabricante nos indica unos rangos de operacin que caen dentro de
24
las caracterizaciones de los motores de CD que utilizaran nuestros mecanismos de la cmara y del intruso. El fabricante nos indica que el voltaje de suministro puede ir de 0V a 46V. Y puede soportar una corriente de hasta 4 A. Estos rangos son aptos para nuestros mecanismos.
estaramos ubicando en un lmite muy cercano a su lmite de corriente as que por seguridad y por eficiencia se diseo el siguiente arreglo en donde el regulador variable LM317 nos aporta la regulacin de tensin con muy poca corriente de aportacin y la mayora de la corriente de salida es aportada por el transistor PNP de TIP32C dando corrientes de salida de hasta 3 Amperes y tensin de 1.25v a 12v La configuracin y datos ms significativos se muestran a continuacin
25
Los componentes usados son los siguientes: *TIP32C .- Transistor PNP de propsito general y aplicaciones de switcheo a mediana potencia *LM317.- Regulador de Voltaje positivo ajustable. *R1.- Resistencia fija de 1 . *R2 .- Potencimetro de 20K para regular el voltaje de salida. *R3.- Resistencia de la cual el valor se calcula dependiendo el voltaje deseado.
El transistor TIP32C el cual esta polarizado en la regin de saturacin aporta la mayora de la corriente aportada por el regulador y la tensione es fijada por el regulador LM317 la resistencia entre base y colector del transistor es til para permanecer polarizada la unin Base colector en polarizacin directa y el divisor de tensin de entrada al ajuste del regulador sirve para fijar la tensin de referencia de regulacin lo que permite realizar la regulacin variable dependiendo del valor de potencimetro
26
Para aproximar el clculo ya que en la realidad siempre existen diferencias de los componentes utilizamos la siguiente frmula: ( )
Y aproximando a los voltajes que se pensaron en un primer instante obtenemos los siguientes resultados: *Para Vo=7V R1=330 R2= 1.5K
Donde la salida nos da de 10V aproximadamente lo cual es correcto ya que debido a las etapas de potencia utilizadas y explicadas posteriormente, el driver utilizado consume 2V, lo que nos dejara aproximadamente 8V para la alimentacin del motor pudiendo por medio del potencimetro ajustar a mayor o menor voltaje.
27
En este caso vemos que la salida es de aproximadamente 9V, y tomando en cuenta los 2V consumidos por la etapa de potencia para el motor, nos quedan 7V lo cual es correcto segn nuestros clculos y brindndonos la posibilidad de realizar ajustes sobre este punto de operacin del regulador para sincronizar mejor los tiempos de respuesta de los motores y del controlador 5.4 Datos tcnicos de los componentes utilizados
28
29
6.- FRONTERAS DE MOVIMIENTO DE LA CAMARA E INTRUSO 6.1 Diseo y caractersticas del circuito lgico para limitar movimientos de los motores
Los motores utilizados tienen un movimiento en directo y otro en inverso para que permita moverse alrededor de toda el rea limitada. Se utilizan switches con lamina que al ser tocados por el actuador evitaran que estoy sigan movindose ms all del rea deseada aunque se le est indicando la orden de que siga avanzando. Generalizaremos la descripcin del circuito limitador de movimiento aplicado a un motor, ya que la limitacin de movimiento de los dems motores es anloga para todos. Se utilizan dos push botones para controlar el movimiento en sentido directo e inverso de cada motor, y dos limitadores para cada sentido hacia los que acta el mismo.Estos 4 push botones son las entradas para nuestro circuito lgico y actan de la siguiente manera: Push A (PA): o o o o 1=Mueve en sentido inverso el motor 0=Motor detenido
30
Limitador A (LA): o o 1=Detiene el motor y evita que se siga moviendo en sentido inverso 0=Permite el movimiento del motor en sentido inverso
Limitador B (LB): o o 1= Detiene el motor y evita que se siga moviendo en sentido directo 0= Permite el movimiento del motor en sentido directo
Cabe hacer dos aclaraciones: Si presionamos PA y PB para que los dos estn activos en 1, el motor no se mover.
Si el limitador LA est activado, solo nos limitara el movimiento de PA mas no el de PB. De manera anloga LB limitara a PB y no a PA.
6.2 Tabla de verdad y Mapa de Karnaugh para el circuito lgico limitador de movimientos
De este circuito lgico tendremos 2 salidas MA (Motor A) y MB (Motor B) que cada una ser conectada a un terminal del motor y lo controlaran de la siguiente manera: MA 0 0 1 1 MB 0 1 0 1 Descripcin Motor detenido. No se est presionando ningn interruptor Motor en sentido directo. Se est presionando PB, es decir, esta en 1 Motor en sentido inverso. Se est presionando PA es decir, est en 1 Motor detenido. PA y PB estn en 1
Tabla 6.1 Descripcin de sentidos de giro de los motores
Para desarrollar nuestro circuito lgico analizamos el diseo mediante una tabla de verdad y mapas de Karnaugh. A continuacin se muestra la tabla de verdad: Posicin Decimal 0 1 2 3 4 Entradas PA 0 0 0 0 0 PB 0 0 0 0 1 LA 0 0 1 1 0 LB 0 1 0 1 0 MA 0 0 0 0 0 Salidas MB 0 0 0 0 1
31
5 6 7 8 9 10 11 12 13 14 15
0 0 0 1 1 1 1 1 1 1 1
1 1 1 0 0 0 0 1 1 1 1
0 1 1 0 0 1 1 0 0 1 1
1 0 1 0 1 0 1 0 1 0 1
0 0 0 1 1 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0
Los valores en MA y MB se obtienen a partir de nuestras entradas PA, PB, LA, y LB y de las condiciones establecidas anteriormente de acuerdo a los valores posibles. Obtenemos una funcin para cada salida a partir de mini-trminos y usando mapas de Karnaugh:
------------------------------------
1
| | | |
| | | | (
32
------------------------------------
1
| | | |
| | | |
33
Se utilizan compuertas TTL 74LS04 (NOT) y 74LS11 (AND de 3 entradas) A continuacin se muestra el circuito implementado con los push botones, limitadores y actuador.
Para controlar los niveles lgicos de las entradas se usaron resistencias en pull-on y el circuito L298.
6.5 Implementacin de circuitos lgicos a travs de una GAL22V10 para la limitacin de movimiento de los motores.
Para esta parte del proyecto se mantuvo la lgica y las condiciones establecidas en la primera entrega del proyecto, es decir, hicimos uso de la misma tabla de verdad con las mismas entradas y salidas que propusimos. Simplemente en esta segunda entrega decidimos hacer uso de la GAL22V10D para sustituir todos los circuitos TTL con los que habamos hecho la implementacin de las funciones obtenidas de los mapas de Karnaugh. Optamos por la GAL22V10D para simplificar la circuitera y poder ahorrar espacio. Adems de que el programa que se tiene que realizar el VHDL tambin es muy prctico y sencillo. Como habamos mencionado en la primera entrega tenemos deseamos limitar el
movimiento de dos motores para el intruso y otros dos motores para la cmara, as que el diseo propuesto a continuacin, es el mismo que se utilizara para los cuatro motores.
34
La tabla de verdad contina tal como se propuso en la primera entrega y es anloga para los 4 motores utilizados en el proyecto. El algoritmo diseado en VHDL fue diseado para cumplir con la tabla de verdad mostrada, solo que consideramos que se controlaran 2 motores con la misma GAL, por esto tendremos 8 entradas, 4 por cada motor, y 4 salidas, 2 por cada motor. A continuacin el cdigo:
---Circuito proyecto 5 library ieee; use ieee.std_logic_1164.all; entity decod is port( e: in std_logic_vector(3 downto 0);--4 entradas para el motor 1 f: in std_logic_vector(3 downto 0);--4 entradas para el motor 2 s: out std_logic_vector(1 downto 0);--2 salidas para el motor 1 r: out std_logic_vector(1 downto 0)); --2 salidas para el motor 2 end decod; architecture logica of decod is begin process(e,f)---se ejecuta cada vez que cambie el valor del vector e begin --En este primer case se muestras los casos que se esperan para el vector de entradas e y lo que deseamos que exista a la salida s case e is when "0000" => s <="00";-para0when "0001" => s <="00";--para 1-when "0010" => s <="00";--para 2-when "0011" => s <="00";--para 3-when "0100" => s <="01";--para 4-when "0101" => s <="00";--para 5-when "0110" => s <="01";--para 6-when "0111" => s <="00";--para 7-when "1000" => s <="10";--para 8-when "1001" => s <="10";--para 9-when "1010" => s <="00";--para 10-when "1011" => s <="00";--para 11-when "1100" => s <="00";--para 12 when "1101" => s <="00";--para 13-when "1110" => s <="00";--para 14-when "1111" => s <="00";--para 15-when others => s <= "00"; ---casos sin considerar end case;
35
--En este primer case se muestras los casos que se esperan para el vector de entradas f y lo que deseamos que exista a la salida r case f is when "0000" => r <="00"; when "0001" => r <="00";--para 1-when "0010" => r <="00";--para 2-when "0011" => r <="00";--para 3-when "0100" => r <="01";--para 4-when "0101" => r <="00";--para 5-when "0110" => r <="01";--para 6-when "0111" => r <="00";--para 7-when "1000" => r <="10";--para 8-when "1001" => r <="10";--para 9-when "1010" => r <="00";--para 10-when "1011" => r <="00";--para 11-when "1100" => r <="00";--para 12-when "1101" => r <="00";--para 13 when "1110" => r <="00";--para 14-when "1111" => r <="00";--para 15-when others => r <= "00"; ---casos sin considerar end case; end process; end logica;
Para el desarrollo del cdigo se planteo hacer el algoritmo, mediante un decodificador, el cual a determinada entrada nos entrega determinada salida. Se eligi este algoritmo debido a la facilidad de programar y comprender. El cdigo implementado contiene el algoritmo para realizar una misma accin pero en dos motores diferentes, es decir, En la primera parte del programa se declaran dos vectores de entrada y dos vectores de salida. Posteriormente en la arquitectura del bloque, se establece que se realicen los casos cada vez que el vector e o f cambia, ya que estos son las entradas. Para la siguiente parte solo se meti toda la tabla de verdad con su respectivas entradas y salidas. Repitindose lo mismo para el vector f.
36
La distribucin de los pines se acomoda de la siguiente forma, para realizar ms fcilmente el circuito:
Antes de llevarlo a la prctica decidimos simular el algoritmo para verificar que el programa corre perfectamente.
37
Para comprobar si el programa realizaba lo deseado, en el vector e se introdujo un pulso en e(2) obteniendo la siguiente combinacin 0100 la cual observando en s la salida es 01, que corresponde al valor asignado en la tabla de verdad. Se introduce una combinacin mas 1000 y en la salida se tiene 10. En la entrada f tambin se prueba para la siguiente combinacin 0100 y nos da por salida 01. Con esto podemos concluir que la programacin de la GAL22V10 para este algoritmo resuelve nuestra tabla de verdad. Ya teniendo la parte de programacin de la GAL se procedi a conectar los push botones con las cuales se activaran las diferentes combinaciones para las entradas. Y la parte de las salidas van hacia un driver L298 el cual es nuestra etapa de potencia para los motores. El circuito quedo de la siguiente manera:
38
infrarrojo se genera con una frecuencia pulsante de 38Khz y cuando este es continuamente recibido por el modulo TSOP1738 este entrega a su salida una tensin aproximada de 0 v y cuando se interrumpe la transmisin entrega aproximadamente 1 volts. A continuacin se muestra un diagrama a bloque interno del modulo utilizado donde se observa el receptor infrarrojo que es la entrada al sistema donde a un control automtico de ganancia se encarga del reacondicionamiento de la seal entregada al filtro paso bandas centrado en 38Khz por un sistema maestro entregando la seal un demodulador para entregar la informacin a la red transistorizada de salida que despliega los valores antes mencionados.
La curva de respuesta en frecuencia de el filtro paso bandas para los haces de infrarrojo modulados es la que se muestra en la figura.
39
Algunos datos interesantes para el proyecto son la direccin de receptor y la distancia mxima de transmisin siendo esta ultima de hasta 35m dependiendo de las
configuraciones y potencias de emisin, os patrones de recepcin del modulo TSOP1738 se muestran en la siguiente grafica
7.2 Justificacin de sensores pticos Dado que las caractersticas de iluminacin son por razones obvias muy importantes para nuestro proyecto se decidi utilizar sensores de barrera pticos que no interfirieran con la captura de imgenes de la cmara por lo que se decidi utilizar sensores de tipo infrarrojo y de entre esta gran gama de posibilidades se selecciono el dispositivo TSOP1738 el cual es un modulo de recepcin infrarrojo codificado el cual solo capta las seales de infrarrojo en trenes de pulso con de frecuencia de 38Khz.
40
Usamos dos sensores IR y dos mdulos TSOP1738, cada par detectara si es que pasa por algunas de las dos posibles entradas establecidas.
8.- ACONDICIONAMIENTO DE SENSORES 8.1 Circuito implementado para acondicionamiento de los sensores
En la hoja de datos oficial de Vishay se proporciona una propuesta general de circuito de aplicacin el cual se implementa a continuacin con sus debidas modificaciones para la correcta adaptacin a nuestro proyecto. Usamos dos sensores IR y dos mdulos TSOP1738, cada par detectara si es que pasa por algunas de las dos posibles entradas establecidas. Solo necesitamos generar una seal cuadrada de 38 kHz que ser emitida por el LED IR hacia el modulo TSOP1738. Esta seal es generada por un microcontrolador AVR ATMEGA8. El cdigo creado en lenguaje BASIC en el compilador BASCOM es el siguiente:
Definimos el AVR a utilizar Establecemos la frecuencia del reloj Configuramos el Puerto D como salida
Do En este ciclo infinito ponemos en un nivel alto y un nivel bajo durante cierto tiempo la salida del pin 0 del puerto D, de esta manera se generara la seal cuadrada a la frecuencia de 38 kHz
41
Portd.0 = 1 Waitus 9.2 Portd.0 = 0 Waitus 9.2 Loop End Fin del programa
Ambos sensores trabajan con 5 volts esto nos favorece ya que la mayora de los circuitos que estamos utilizando trabajan a esos niveles. Cuando el modulo TSOP1738 est recibiendo la seal a 38 kHz tendremos a su salida un nivel de voltaje en bajo, un 0 lgico. Cuando la seal sea interrumpida a la salida del TSOP1738 tendremos un nivel en alto, un 1 lgico. Como esta salida debemos mandarla hacia nuestra interfaz USB para que sea analizada por el programa del controlador difuso, es necesario que la acondicionemos de tal manera que realmente nos aseguremos que se encuentre a un voltaje de 0 v para un nivel bajo que corresponde a un 0 lgico, corresponde a un 1 lgico. Para asegurar estos voltajes empleamos un circuito con histresis de tal modo que de acuerdo a los niveles lgicos TTL el circuito determine si el voltaje de entrada correspondera a un 0 o 1 lgico. El circuito empleado fue el 74LS14, que es un circuito inversor con histresis. El diagrama de este circuito es el que se muestra a continuacin y que este a un voltaje de 5 v para un nivel alto que
42
No importa si el dato utiliza una lgica negativa o positiva ya que ese dato ledo ser utilizado por el programa y esto hace que sea fcilmente manipulable. Al conectar la salida del TSOP1738 al 74LS14 aseguraremos una salida de 0 v para un 0 lgico, y 5 v para un 1 lgico. Pero al tener inversores cambia las ideas establecidas anteriormente: Cuando el TSOP1738 este detectando la seal a 38 kHz obtendremos un 1 lgico. Caso contrario cuando el TSOP1738 no detecte dicha seal obtendremos un 0 lgico.
Estos datos al ser enviados directamente a la computadora a travs de la interfaz USB nos permitir saber cuando el intruso ha entrado o salido a la zona de deteccin de la cmara. A continuacin se muestra el circuito donde vemos involucrados todos los elementos para esta etapa:
43
9.- ADQUISICION DE LA IMAGEN Y SU POSICION ENMATLAB 9.1 Versin de Matlab y Caractersticas de la Webcam
Para la adquisicin de imgenes a travs de Matlab se requiere contar con la versin 2009 o 2010, debido a que las funciones utilizadas no se encuentran disponibles en versiones anteriores. Las especificaciones de la cmara utilizada son: 1.3 mega pixeles de resolucin Enfoque manual Interface USB 2.0 Tipo de formato JPEG/WMV Resolucin soportada: 1280x1024, 1024x960, 800x600, 640x480, 352x288, 320x240, 176x144, 160x120 pixeles. Resolucin en video CIF/30fps, VGA/30fps, 1.3/15fps.
44
Las primeras dos instrucciones nos permiten limpiar el workspace y limpiar todas las variables que se hubiese antes de ejecutar el programa. Esto para no tener ningn conflicto en cuanto a que se llegaran a sobre escribir valores en una variable usada y esto pueda causar algn conflicto. La primera parte se crea una variable con el nombre Cmara la cual nos permite conocer las caractersticas de los dispositivos de entrada de video con que se cuenta , el 1 se refiere al nmero que tiene asignada nuestra cmara como hardware. Dependiendo de la cmara que se utilice nos permite trabajar con diferentes resoluciones.
45
Con la instruccin Camara.SupportedFormats despliega en el workspace los diferentes formatos que soporta la cmara usada. En este caso se utilizara la resolucin ms pequea de la cmara de 160x120, aunque es la resolucin ms baja nos permite detectar el objeto a seguir del entorno de trabajo adems de que al ser ms pequea la resolucin permite al programa realizar los clculos con un tiempo de procesamiento ms corto. Se le asigna la variable Video a la adquisicin de video con la cmara 1 y con la resolucin antes mencionada. Para la adquisicin de video se utiliza el formato grayscale, debido a que facilita la binarizacin de la imagen. El ciclo for solo es para darse una idea de cmo se estara haciendo la adquisicin de imgenes en tiempo real. La captura de una foto se hace con la instruccin getsnapshot(Video), en su argumento se introduce la literal a la cual se asign la cmara que se utiliz. Para graficar imgenes se utiliza la instruccin imshow, ya que es especial para graficar imgenes en Matlab. Para la localizacin del centro de la figura se debe binarizar la imagen. Esto se realiza con la instruccin im2bw, esto es como un filtro ya que lee la imagen y establece 0 o 1 dependiendo del nmero de intensidad de cada pixel arrojndonos asi una matriz con 0 y 1.La posicin de los 1 en la matriz permite diferenciar donde se encuentra el objeto que se desea encontrar su posicin. Utilizando bwlabel se permite crear la imagen en regiones, esto le permite a la funcin eficientar el tiempo de localizacin del objeto. La instruccin imfeature que permite calcular ciertas caractersticas del objeto que se est visualizando como es rea, permetro, centro. En este caso nos importa el centro, por lo tanto se especifica introduciendo el texto Centroid. Este nos regresa una vector con la posicin de su centro en (x,y) , este valor se le asignan a dos variables y se grafica en la imagen binarizada con el smbolo + comprobando que el punto obtenido es el centro del objeto. Se realizaron pruebas y se puedo concluir que la iluminacin debe ser constante para eliminar las sombras, debido a que se presenta como ruido en la imagen, impidiendo la localizacin del centro del objeto. En el siguiente ejemplo se muestran las imgenes que se desarrollan al correr el programa.
46
Ejemplo: La primera imagen es la foto que se adquiere con una escala de grises.
La matriz que se obtiene con esta foto se pasa por un filtro para obtener 0 y 1, y as localizar el centro del crculo como se mencion.
Los 1 en la matriz representa al blanco, mientras que los 0 representas segmentos negros de la imagen. Por ltimo se utiliza imfeature con la instruccin Centroid. Lo que hace esta funcin principalmente es leer la matriz y obtener la posicin donde se encuentran 1;la instruccin realiza una aproximacin sobre la forma de la figura. En este caso se trata de un circulo por lo tanto al conocer su permetro se puede aproximar su radio. La coordenadas se grafican, el punto coincide visualmente con el centro de la figura, por lo tanto se concluye que el programa realiza su objetivo.
47
48
Para nuestra variable x, los valores lingsticos que asignamos son: T(x) = Izquierda Centra Derecha
Para nuestra variable y, los valores lingsticos que asignamos son: T(y) = Abajo Centro Arriba
49
Funcion trapezoidal:
function [membresia]= trap(x,parametros) a = parametros(1); parmetro del primer punto de cruce con el eje x b = parametros(2); parmetro del primer punto maximo c = parametros(3); parmetro del segundo punto maximo d = parametros(4); parmetro del segundo punto de cruce con el eje x [n k]=size(x); for i=1:k; if x(i)<=a && a==b membresia(i)=1; elseif x(i)<=a && a~=b membresia(i)=0; elseif x(i)>a && x(i)<=b membresia(i)=(x(i)-a)/(b-a); elseif x(i)>b && x(i)<=c membresia(i)=1; elseif x(i)>c && x(i)<=d membresia(i)=(d-x(i))/(d-c); elseif x(i)>d membresia(i)=0; end end
Los valores de membreca se otorgan de acuerdo a lo que se espera si el error cae en algun valor como se describi desde un principio.
izquierda=trap(x,[1 1 40 59]); centra=trian(x,[58 60 62]); derecha=trap(x,[61 80 120 120]); figure(1) plot(x,izquierda,x,centra, x,derecha) axis([0 120 0 1.1])
50
Solo se decidi poner tres trminos de control debido a que se espera que los motores solo realicen tres acciones diferentes (Sentido inverso, Detenido y Sentido Directo). El universo de discurso est definido de 0 a 2, porque estos valores son los necesarios para mover el motor como se menciono en la descripcin general.
%Semantica de los terminos lingisticos para la accion de control a=0:0.1:2; izquierdo=trian(a,[1.9 2 2]); centro=trian(a,[0 0 0.1]); derecho=trian(a,[.8 1 1.2]); figure(2) plot(a,izquierdo,a,centro,a,derecho) axis([0 2 0 1.1])
En esta parte se realiza la inferencia y defusificacion para cada valor posible del error y as obtener la curva de control que veramos.
%for eo=1:paso:120 eo=60 b1= min (izquierda(eo),izquierdo); b2= min (centra(eo),centro); b3= min (derecha(eo),derecho); b=max(b3,max(b1,b2)); ao(eo)= defuzz (a,b,'centroid'); %end ao figure(3) plot (ao) axis([0 120 0 2.5])
51
En esta curva podemos observar las direcciones y sentidos que tomara el motor dependiendo del error que arroje la posicin del intruso, esto mismo se realizara con el eje Y, tomando solo en cuenta que el universo de discurso cambiara de [0 160]
52
53
En este otro circuito montamos los push botones que son ocupados para manipular al intruso, esto por comodidad.
close all clear all clc %%%INICIAMOS LA CAMARA%%% %%%Iniciando camara Video=videoinput('winvideo',1,'YUY2_160x120');%definimos la resolucion Video.ReturnedColorspace = 'grayscale';%definimos el formato de captura en escala de grises %%%fin del inicio de la camara
54
%%%INICIAMOS EL CONTROLADOR DIFUSO%%%%% paso=1; %***********Eje x******************* %%%universo de discurso%%%% x=1:paso:160; %%%definimos los terminos linguisticos%%% izquierda=trap(x,[1 1 60 80]); centrax=trian(x,[72 80 88]); derecha=trap(x,[80 100 160 160]); %%%definimos las acciones de control%%% a=0:0.1:2; izquierdo=trian(a,[1.9 2 2]); centrox=trian(a,[0 0 0.1]); derecho=trian(a,[.8 1 1.2]); %*************Eje y********************* %%%universo de discurso%%% y=1:paso:120; %%%definimos los terminos linguisticos%%% abaja=trap(y,[1 1 50 60]); centray=trian(y,[52 60 68]); arriba=trap(y,[60 70 120 120]); %%%definimos las acciones de control%%% aa=0:0.1:2; arribo=trian(aa,[1.9 2 2]); centroy=trian(aa,[0 0 0.1]); abajo=trian(aa,[.8 1 1.2]); %*************************************** %%%Iniciamos el programa principal lol=1; for i=0:30 %Camara Snapshot=getsnapshot(Video); %figure(1) %imshow(Snapshot); Foto=im2bw(Snapshot); %hold on imageR=bwlabel(Foto,8); s=imfeature(imageR,'Centroid');%%%realizamos la captura de posicion por centroide posicion=s(1).Centroid; ex=round(posicion(1,1));%%%asignamos la posicion en el eje x ey=round(posicion(1,2));%%%asignamos la posicion en el eje y
55
%%%COMENZAMOS LA DEFUSIFICACION%%%% %***********Defuzz X******************* b1= min (izquierda(ex),izquierdo); b2= min (centrax(ex),centrox); b3= min (derecha(ex),derecho); b= max(b3,max(b1,b2)); ax= defuzz (a,b,'centroid'); ax=round(ax); %***********Defuzz Y******************* b1= min (arriba(ey),arribo); b2= min (centray(ey),centroy); b3= min (abaja(ey),abajo); b= max(b3,max(b1,b2)); ay= defuzz (aa,b,'centroid'); ay=round(ay); %%%INICIAMOS LA ESCRITURA Y ENVIO DE DATOS A LOS ACTUADORES%%% motor=0;%%%iniciamos el motor en 0 pp=serial('COM1');%%%asignamos el puerto de la PC pp.Baudrate=115200; fopen(pp);%%%abrimos el puerto fwrite(pp,motor,'uchar');%%%escribimos en el puerto dato=fread(pp,1,'uchar');%%%leemos dato del puerto fclose(pp);%%%cerramos puerto clear pp;%%%limpiamos puerto if ax==0%%condicion de la defusificacion de posicion del eje x if ay==0%%condicion de defusificacion de posicion del eje y motor=0;%%dato enviado de accion de control elseif ay==1%%condicion de defusificacion de posicion del eje y motor=2;%%dato enviado de accion de control elseif ay==2%%condicion de defusificacion de posicion del eje y motor=1;%%dato enviado de accion de control else motor=0;%%dato enviado de accion de control end elseif ax==1%%condicion de la defusificacion de posicion del eje x if ay==0%%condicion de defusificacion de posicion del eje y motor=8;%%dato enviado de accion de control elseif ay==1%%condicion de defusificacion de posicion del eje y motor=10;%%dato enviado de accion de control elseif ay==2%%condicion de defusificacion de posicion del eje y motor=9;%%dato enviado de accion de control else motor=0;%%dato enviado de accion de control end
56
elseif ax==2%%condicion de la defusificacion de posicion del eje x if ay==0%%condicion de defusificacion de posicion del eje y motor=4;%%dato enviado de accion de control elseif ay==1%%condicion de defusificacion de posicion del eje y motor=6;%%dato enviado de accion de control elseif ay==2%%condicion de defusificacion de posicion del eje y motor=5;%%dato enviado de accion de control else motor=0;%%dato enviado de accion de control end else motor=0;%%dato enviado de accion de control end motor; pp=serial('COM1');%%asignamos el puerto de la PC pp.Baudrate=115200; fopen(pp);%%abrimos puerto fwrite(pp,motor,'uchar');%%escribimos en el puerto dato=fread(pp,1,'uchar');%%leemos el dato del puerto fclose(pp);%%cerramos puerto clear pp;%%limpiamos puerto end motor=0; pp=serial('COM1');%%asignamos puerto de la PC pp.Baudrate=115200; fopen(pp);%%abrimos puerto fwrite(pp,motor,'uchar');%%escribimos en el puerto dato=fread(pp,1,'uchar')%%leemos dato del puerto fclose(pp);%%cerramos puerto clear pp;%%limpiamos puerto fprinf('Fin')
57
CONCLUSIONES PERSONALES
En esta segunda entrega consideramos que hemos cumplido con los requerimientos solicitados y en el reporte se mencionan todos los datos, caractersticas e informacin necesaria de todo lo usado as como programada con el fin de tener una buena base para continuar con la ltima etapa en el siguiente parcial. En el desarrollo de esta segunda etapa tratamos de ser lo ms especficos y prcticos en cuanto se refiera a la implementacin de todo lo aprendido en clase con el fin de lograr una completa formacin de cada asignatura involucrada en el desarrollo del proyecto. Nos percatamos de que esta segunda etapa fue mucho ms prctica que la primera y que si en la etapa anterior los clculos o ideas que se tenan hubieran sido errneas, el funcionamiento del proyecto para esta segunda etapa podra haberse visto afectado en gran manera, lo cual nos deja como aprendizaje la importancia de realizar siempre una correcta planeacin antes de comenzar con la prctica. Por otra parte creemos que esta etapa resulto un poco ms fcil ya que los clculos concordaron con la mayora de lo que se esperaba en la prctica, y adems todos los circuitos y/o algoritmos usados fueron vistos de manera eficaz y profunda en clase lo que nso permiti realizar un mejor entendimiento de cada parte desarrollada. Sin embargo estamos conscientes de que durante el desarrollo del proyecto se pueden presentar nuevos enfoques que nos lleven a cambiar algunos aspectos del mismo con la finalidad de obtener un mejor resultado al final, y que incluso la siguiente etapa tal vez sea la ms difcil, ya que acoplar todo puede tener varias dificultadas, por ahora cumplimos con el objetivo.
58
CONCLUSION GRUPAL
59
BIBLIOGRAFIA Y REFERENCIAS
1.- Mano, M. Morris. Diseo Digital, Prentice Hall, (2003), 3 Edicin, 521 paginas. 2.- Floyd, Thomas L. Principios de Circuitos Elctricos, Pearson, (2007), 8 Edicin, 947 paginas. 3.- Ross, Timothy J. Fuzzy Logic with Engineering Aplications, Wiley 2010, (2010), 3 Edicin 585 paginas. 4.- Ramn Pallas, Sensores y Acondicionadores de Seal, Alfa-Omega, Mexico 2007, 4 Edicion, 480 paginas. 5.- http://www.mathworks.com/products/matlab/ 6.- http://www.datasheetcatalog.net/es/datasheets_pdf
60