Unidad Profesional Interdisciplinaria en Ingeniera
y Tecnologas Avanzadas INGENIERIA BINICA SISTEMAS SENSORIALES 4BM2 REPORTE DE PROYECTO PROYECTO #1 PROFESOR: HORTA OLIVARES INTEGRANTES DEL EQUIPO: Jurez Apolinar Alix Dayane Martnez Aguilar Yael Rubn Ramrez Len Vctor Andrs Mxico, Distrito Federal a 25 de Febrero del 2014 INSTITUTO POLITCNICO NACIONAL Unidad Profesional Interdisciplinaria en Ingeniera y Tecnologas Avanzadas INGENIERIA BINICA SISTEMAS SENSORIALES 4BM2 REPORTE DE PROYECTO OBJETIVO Crear un dispositivo el cual a travs de una cmara localice una zona de un color en especfico (rojo) y trate de llegar a l, este dispositivo a travs de sensores infrarrojos ser capaz de detectar y evitar obstculos para llegar a su destino. MARCO TEORICO Los sensores infrarrojos son una tecnologa que inicio en los aos 90s, son aquellos que detectan la radiacin emitida por los materiales calientes y la transforman en una seal elctrica. El receptor de rayos infrarrojos suele ser un fototransistor o un fotodiodo. El circuito de salida utiliza la seal del receptor para amplificarla y adaptarla a una salida que el sistema pueda entender. La seal enviada por el emisor puede ser codificada para distinguirla de otra y as identificar varios sensores a la vez esto es muy utilizado en la robtica Estn diseados especialmente para la deteccin, clasificacin y posicionado de objetos; la deteccin de formas, colores y diferencias de superficie, incluso bajo condiciones ambientales extremas. Este componente puede tener la apariencia de un LED normal, la diferencia radica en que la luz emitida por l no es visible para el ojo humano, nicamente puede ser percibida por otros dispositivos electrnicos. Para realizar el sensado tambin se us una configuracin de los amplificadores operacionales como restador, teniendo como entradas la seal proveniente de los sensores infrarrojos y una seal continua para disminuir el offset producido por los sensores. Este amplificador usa ambas entradas invertida y no invertida con una ganancia de uno, para producir una salida igual a la diferencia entre las entradas. Es un caso especial del amplificador diferencial. Se utiliz adems un amplificador con ganancia de 68 para amplificar la salida y poder procesarla en un micropocesador. Finalmente para el movimiento de los motores se us el puente H. Un Puente H o Puente en H es un circuito electrnico que permite a un motor elctrico DC girar en ambos sentidos, avance y retroceso. Son ampliamente usados en robtica y como convertidores de potencia. Los puentes H estn disponibles como circuitos integrados, pero tambin pueden construirse a partir de componentes discretos. El diagrama utilizado es el que se muestra a continuacin. INSTITUTO POLITCNICO NACIONAL Unidad Profesional Interdisciplinaria en Ingeniera y Tecnologas Avanzadas INGENIERIA BINICA SISTEMAS SENSORIALES 4BM2 REPORTE DE PROYECTO Fig. Diagrama de conexin de Puente H L293D. El puente H se usa para invertir el giro de un motor, pero tambin puede usarse para frenarlo (de manera brusca), al hacer un corto entre las bornas del motor, o incluso puede usarse para permitir que el motor frene bajo su propia inercia. Los motores muestran la potencia y la velocidad con que se va a mover el carro, se suele utilizar motores con caja reductora que nos garanticen un buen torque, para el carro se necesitan dos motorreductores. El chasis del carro seguidor de imgenes, detector de obstculos es la estructura destinada a brindarnos la movilidad, para su construccin se eligi un material resistente que soporta el peso de la batera, el sistema de control, los motores y los sensores. DESARROLLO Se hizo uso del Arduino para controlar las entradas y salidas de pulsos que se enviaban a los motores, a travs de un puente H, este tambin reciba los datos que emitan los sensores, se utiliz adems una cmara USB Logitech modelo 250 montada sobre el carrito para captar la imagen para posteriormente todo en conjunto fuera procesado en el programa realizado en MATLAB. El programa de control se encuentra en el apndice 1. Para la realizacin de los circuitos para la deteccin de los obstculos se necesitaron de seis sensores, dos sensores en la parte central, y los otros cuatro sensores acomodados en las partes laterales del carro en pares. Se requera una distancia mnima de deteccin de cinco centmetros entre el carro y el obstculo. El diseo del circuito para la deteccin de obstculos, por medio de los sensores pticos consisti de un emisor infrarrojo y dos sensores infrarrojos para posteriormente restarle a la seal de los sensores el offset por medio de un divisor INSTITUTO POLITCNICO NACIONAL Unidad Profesional Interdisciplinaria en Ingeniera y Tecnologas Avanzadas INGENIERIA BINICA SISTEMAS SENSORIALES 4BM2 REPORTE DE PROYECTO de tensin y amplificada la seal se ingres al Arduino. Fig. Conexin de protoboard de sensores pticos y simulacin. Mtodo de control. Primeramente el robot haca un barrido de su espacio capturando fotogramas cada cierto tiempo, cuando detectaba un objeto rojo iniciaba su recorrido hacia l. Se definieron umbrales de deteccin de los sensores (2.4V), superado ste umbral indicaba la deteccin de un objeto y se aplicaba la lgica programada para evadir el objeto detectado y continuar su trayectoria hasta llegar a su objetivo. Cuando el robot se encontraba lo suficientemente cerca del objeto rojo, detena todo mecanismo de accin y alertaba en pantalla el evento. RESULTADOS En las pruebas realizadas el carrito detectaba satisfactoriamente los objetos rojos a su alrededor y se acercaba a ellos evadiendo obstculos en su camino. INSTITUTO POLITCNICO NACIONAL Unidad Profesional Interdisciplinaria en Ingeniera y Tecnologas Avanzadas INGENIERIA BINICA SISTEMAS SENSORIALES 4BM2 REPORTE DE PROYECTO Apndice 1. Cdigo de Programacin utilizado en Matlab. close all; clear all; clc; imaqmem(100000000000); x = 0; b = 0; a = arduino('COM3'); a.pinMode(5,'output'); a.pinMode(6,'output'); a.digitalWrite(5,1); a.digitalWrite(6,1); vid=videoinput('winvideo',1,'MJPG_640x480'); set(vid, 'FramesPerTrigger', Inf); set(vid, 'ReturnedColorspace', 'rgb') vid.FrameGrabInterval = 5; [x, alto] = imagen(vid) s1 = a.analogRead(2) s2 = a.analogRead(3) s3 = a.analogRead(4) while(1) while(s1 < 300 && s2 < 300 && s3 < 300 && x > 220 && x < 420) a.digitalWrite(6,0); a.digitalWrite(5,0); pause(0.3) a.digitalWrite(6,1); a.digitalWrite(5,1); s1 = a.analogRead(2) s2 = a.analogRead(3) s3 = a.analogRead(4) [x, alto] = imagen(vid); alto end if(x > 220 && x < 420) if(alto > 200) disp('Detecte rojo y est muy cerca que casi lo toco!!! auxilio!!...') break elseif(s1 > 300 || s2 > 300 || s3 > 300) if(s2 > 500 && s3 < 500) disp('objeto a la derecha, ahhhh!!!'); a.digitalWrite(5,0); pause(1); a.digitalWrite(6,0); pause(1) a.digitalWrite(5,1); pause(1) a.digitalWrite(6,1); s1 = a.analogRead(2) s2 = a.analogRead(3) s3 = a.analogRead(4) [x, alto] = imagen(vid); elseif(s3 > 300 && s2 < 300) INSTITUTO POLITCNICO NACIONAL Unidad Profesional Interdisciplinaria en Ingeniera y Tecnologas Avanzadas INGENIERIA BINICA SISTEMAS SENSORIALES 4BM2 REPORTE DE PROYECTO disp('objeto a la izquierda, ahhhh!!!') a.digitalWrite(6,0); pause(1); a.digitalWrite(5,0); pause(1) a.digitalWrite(6,1); pause(1) a.digitalWrite(5,1); s1 = a.analogRead(2) s2 = a.analogRead(3) s3 = a.analogRead(4) [x, alto] = imagen(vid); elseif(s2 > 300 && s3 > 300) disp('No s que hacer, no me programaron bien y no puedo caminar hacia atrs...') break else a.digitalWrite(5,0); pause(1); a.digitalWrite(6,0); pause(1) a.digitalWrite(5,1); pause(1) a.digitalWrite(6,1); s1 = a.analogRead(2); s2 = a.analogRead(3); s3 = a.analogRead(4); [x, alto] = imagen(vid); end end elseif(x < 220 && x > 0) a.digitalWrite(5,0); pause(0.08) a.digitalWrite(5,1); [x, alto] = imagen(vid); s1 = a.analogRead(2); s2 = a.analogRead(3); s3 = a.analogRead(4); elseif(x > 420) a.digitalWrite(6,0); pause(0.08); a.digitalWrite(6,1); [x, alto] = imagen(vid); s1 = a.analogRead(2); s2 = a.analogRead(3); s3 = a.analogRead(4); else if(b <= 3) a.digitalWrite(5,0); pause(0.08); a.digitalWrite(5,1); b=b+1 [x, alto] = imagen(vid); INSTITUTO POLITCNICO NACIONAL Unidad Profesional Interdisciplinaria en Ingeniera y Tecnologas Avanzadas INGENIERIA BINICA SISTEMAS SENSORIALES 4BM2 REPORTE DE PROYECTO s1 = a.analogRead(2); s2 = a.analogRead(3); s3 = a.analogRead(4); else b=0; a.digitalWrite(6,0); pause(0.7); a.digitalWrite(6,1); [x, alto] = imagen(vid); s1 = a.analogRead(2); s2 = a.analogRead(3); s3 = a.analogRead(4); end end hold off end stop(vid) flushdata(vid) delete(vid) clear all Funcin imagen function [x, alto] = imagen(vid) x=0; alto=0; data = getsnapshot(vid); diff_im = imsubtract(data(:,:,1), rgb2gray(data)); diff_im = medfilt2(diff_im, [3 3]); diff_im = im2bw(diff_im,0.18); diff_im = bwareaopen(diff_im,900); bw = bwlabel(diff_im, 8); stats = regionprops(bw, 'BoundingBox', 'Centroid'); imshow(data) hold on stats; for object = 1:length(stats) bb = stats(object).BoundingBox; bc = stats(object).Centroid; rectangle('Position',bb,'EdgeColor','r','LineWidth',2) plot(bc(1),bc(2), '-m+') g=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1))), ' Y: ', num2str(round(bc(2))))); set(g, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'yellow'); x = fix(bc(1)); alto = x - fix(bb(1)); end end