Robot Seguidor de Lineas

21
UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA (UNTECS) INGIENERIA DE ELECTRONICA Y TELECOMUNICACIONES Informe de Robot Seguidor de Línea Ingeniería Básica ALUMNO: Caballero Moreno Marco Antonio CICLO: Quinto CÓDIGO: 2011200025 PROFESOR: Elmer Cordova LIMA – PERÚ

Transcript of Robot Seguidor de Lineas

UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA(UNTECS)

INGIENERIA DE ELECTRONICA Y TELECOMUNICACIONES

Informe de Robot Seguidor de Línea

Ingeniería Básica

ALUMNO: Caballero Moreno Marco Antonio

CICLO: Quinto

CÓDIGO: 2011200025

PROFESOR: Elmer Cordova

LIMA – PERÚ

2013

ROBOT SEGUIDOR DE LINEAS

FK-BOT v3.0

Introducción

FK-BOT v.3.0 es un robot seguidor de líneas diseñado Para las diferentes competencias Nacionales de robótica .El robot FK-BOT v3.0 fue creado el ( 18-09-13 ) con motivo del concurso Coneimera de ese mismo año. Tuvo una primera versión, el cual compitió en el II Untecstronics (2012).

Luego de varias versiones y mejoras se ha llegado hasta esta versión (v3.0) la cual es la más estable de todas encuanto a desempeño y competitividad quedando en muy buenos puestos .

Actualmente este robot esta Operativo y ha competido oficialmente en los eventos de este año representando a la Universidad Nacional Tecnológica del cono sur de Lima (en conjunto con el grupo de robótica de la UNTECS). Cuenta como principal característica la utilización de un microcontrolador Pic 18f2550, y con un booloader pre programado, para la comunicación usb principalmente utilizado para la carga de la programación del robot.

La competencia de seguidores de línea (rastreadores) es la competencia de robótica mas conocidas en el Perú, no existe algún evento en que falte esta categoría, por lo que los competidores de diferentes universidades son numerosos, por ello es muy importante que la elaboración del robot sea buena, pues es muy exigente esta competición. La programación se hace por lenguaje C++ cada pista es pre programada por los competidores.

Objetivos:

Describir el funcionamiento electrónico, mecánico y lógico del Robot FK-BOT Describir las competencias de Robótica en la categoría seguidores de línea en el Perú Servir de motivación a estudiantes de la carrera de ingeniería electrónica, y ramas

afines para incentivar la investigación en las áreas de robótica y automatización.

Esquema del Robot Seguidor de Línea

Etapa de Sensado

Se utilizan los sensores infrarrojos Cny70, Cuando los sensores están sobre una superficie blanca, la luz ultravioleta que emiten estos sensores rebotara hacia el fototransistor haciendo que este se sature. Cuando el el sensor esta sobre una superficie negra, esta absorberá toda la radiación, haciendo que no rebote nada de luz hacia el fototransistor, al no rebotar nada de luz UV el fototransistor no saturara, haciendo que este en corto (abierto). Asi es el funcionamiento de este sensor, y se puede utilizar para sensar partes blancas y las oscuras , según la configuración que tenga el foto transistor se pueden obtener estas señales analógicas ( pues esta variara si el color de superficie es clara, poco clara u oscura), que luego se enviara a la etapa de acondicionamiento.

Etapa de Sensado (sensores)

Acondicionamiento de señal

Etapa de Control

Actuadores

Los sensores utilizados son los cny 70, que son sensores de luz uv de corto alcance.

Las señales analógicas de los sensores son convertidas a digitales.

Es la parte lógica , compuesto por el microcontrolador, y la parte de potencia ( driver )

Es el que le dará movimiento mecánico al robot, compuesto por los motores.

Programacion

El CNY70 tiene cuatro pines de conexión. Dos de ellos se corresponden con el ánado y cátodo del emisor, y las otras dos se corresponde con el colector y el emisor del receptor. Los valores de las resistencias son típicamente 10K ohmios para el receptor y 220 ohmios para el emisor.

La configuración que se puede utilizar es cualquiera de estas dos, pues sabemos que cuando se detecte superficie blanca esta rebotara hacia el fototransistor y este saturara, enviando un 1 logico ( es el caso de la figura A), este el caso que utiliza el el robot Fk-bot..

La salida de este dispositivo es analógica y viene determinada por la cantidad de luz reflejada .el Umbral de detección de este sensor esta entre los 0.3mm a 5mm de distancia

ACONDICIONAMIENTO DE SEÑAL

Se utiliza el amplificador operacional LM358 configurado como comparador, es de doble canal, fácil de usar. Los Amplificadores operacionales tienen tantas aplicaciones que no debería faltar entre nuestros recursos. Las aplicaciones del LM358 incluyen amplificadores de transductor, DC bloques de ganancia y todos los circuitos de amplificador operacional convencional. Este opamp lo utilizamos como comparador para acondicionar las señales analógicas de los sensores cny70 a valores discretos (digitales), se tomara el valor de referencia de los potenciómetros para variar la esta referencia y obtener valores adecuados digitales que luego el microntrolador los leerá y procesara.

Como se sabe el sensor cny 70 nos da valores analógicos, es aquí donde el opamp configurado como comparador convertra estas señales en digitales ya luego el microcontrolador los leera y en el programa se podrán procesar.

El

robot seguidor de líneas utilizara 8 sensores, por lo cual es necesario contar con con 4 opamp.

Etapa de Control

Pic 18f2550: Es un microcontrolador de gama alta de los pic arquitectura RISC de 8bits, 2 modulos de captura/comparcion/pwm,ccp, convertidor adc, opera a 40Mhz velocidad reloj, 16Kwords  de memoria FLASH, cuenta con un puerto usb 2.0 opera a 5 voltios, entre sus principales caracteristicas

La principal función será la de ser el cerebro del robot, adquirirá las señales de los sensores, tomara las deciciones, de movimientos del robot, control de velocidad, contralara los led de estado, entradas de botones, vera por la comunicación usb, vera el estado de batería y hara otras funciones mas.

Driver de motor L293B

El L293B es un driver de 4 canales capaz de proporcionar una corriente de salidade hasta 1A por canal. Cada canal es controlado por señales de entrada compatibles TTL y cada pareja de canales dispone de una señal de habilitación que desconecta las salidas de los mismos. Dispone de una patilla para la alimentación de las cargas que se están controlando, de forma que dicha alimentación es independiente de la lógica de control.componente el que dara la fuerza necesaria para poder mover a los motores del robot Corriente de salida de 1 A por canal.

Principales carateristicas:

Corriente de salida de pico de 2 A por canal Señal para la habilitación de las salidas Alta inmunidad al ruido Alimentación para las cargas separada de la alimentación de control.

Protección contra sobre - temperaturas.

Otros Componentes de la etapa de control:Transistor 2n2222: para switcheo de botloaderResistencias de 5k, 10kLedsCapacitores de 100uf, 0.01uf, 200uf: desacoploDiodos de 1 amperio: protección contra corriente pico de reversa de motoresBotones pulsadores , switch , espadines macho.

Motores

Los motores que se utilizan son dos motorreductores, un motorreductor es un motor q tiene incorporados engranajes que reducirán la revoluciones de este pero ala vez aumentara su fuerza en el torque.

Programacion

La Programacion de robot se hace en lenguaje c con el compilador ccs c este tipo de programcion es denominado por caso, consiste en que el robot al recorrer las pistas se le presentan diferentes situaciones y es asi que debe tomar deciciones para cada tramo, esquina o bifurcación que se presente , etc. Ademas en esta programación se incluye el espacio para el bootloader

#include <18F2550.h>#device adc=10#fuses HS,NOWDT,MCLR,NOSTVREN,NOBROWNOUT,NOPUT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN#use delay( clock = 48000000 ) //////////////////////////////bootloader////////////////////////////////////#build (reset=0x1000,interrupt=0x1008)//espacio para la carga del bootloader#org 0x0000,0x0FFF{}//// vector inicio de la memoria////////////////////////////////////////////////////////////////////////#USE STANDARD_IO(b)#USE STANDARD_IO(A) #USE STANDARD_IO(C)int16 mi,md;int s1,s2,s3,s4,s5,s6,s7,s8,btn1,btn2;int s=0; //variable para configurar tipo de sensado 0 para normal,//1 para sensado invertido y 2 para desactivar sensado#int_timer0 //la lectura de sensores se hace cada 1msvoid timer0(){ //funcion de timer0 se vuelve a repetir interrupcion cada 1 ms, if(s==0){ //sensado normals1=~input(pin_b0);s2=~input(pin_b1);s3=~input(pin_b2);s4=~input(pin_b3);s5=~input(pin_b4);s6=~input(pin_b5);s7=~input(pin_b6);s8=~input(pin_b7);}if(s==1){ //sensado invertidos1=input(pin_b0);s2=input(pin_b1);s3=input(pin_b2);s4=input(pin_b3);s5=input(pin_b4);s6=input(pin_b5);s7=input(pin_b6);s8=input(pin_b7);}if(s==2){} //si s es 2 no hay sensadoset_pwm1_duty(mi); //se cargan los valores de pwm set_pwm2_duty(md);output_toggle(pin_c0); //indicador led del timer set_timer0(6); }/// se vuelve a cargar

////////////////////////////FUNCIONES ////////////////////////////////void r_flancos();//rastreo por flancos utilizando 2 sensoresvoid r_borde_d();// rastreo borde siempre dobla a izquierdavoid r_borde_i();//rastreo borde siempre dobla a derecha

void luz(); //encendido de led naranja por parpadeo al iniciovoid botones();//entrada de botones//funciones para la programacion por casosvoid f0();void f1();void f2();void f3();void f4();void f5();/////////////ACCIONES//////////////void mov_avanzar (void);void mov_izquierda1 (void);void mov_izquierda2 (void);void mov_derecha1 (void);void mov_derecha2 (void);void parar (void);///////////////////////////configuraciones///////////////////////void main(){mi=800; //valores para la velocidad del robot (pwm)md=800;setup_timer_2(T2_DIV_BY_1,255,1); //conf de pwmsetup_ccp1(CCP_PWM);setup_ccp2(CCP_PWM);set_pwm1_duty(mi); /// pwm1 motor izquierdoset_pwm2_duty(md); ///pwm2 motor derechoset_tris_B(0xff);setup_adc_ports(an0); //lectura analogica para ver estado de bateriasetup_adc(adc_clock_internal);f0();}

void f0(){ while(true){ int16 q; botones(); output_high(pin_c7); set_adc_channel(0); delay_us(30); q=read_adc(); if(q<680){//si el valor de la batateriaes menora 680 descargado while(true){ //para baterias de 12v output_toggle(pin_c0); //led palpitaran y no arranca seguidor output_toggle(pin_c7); delay_ms(100); }} if(btn1==0){ //si se pulsa boton empieza a funcionar seguidor luz(); //indicador led f1(); //llama a funcion f1 para la programacion por casos }}}//////////////////////////////sensados////////////////////////////////////////tipos de rastreos con sus respectivas condicionesvoid r_flancos(){if(s3==0 && s6==0) mov_avanzar();

if(s3==1 && s6==0) mov_izquierda1();if(s3==0 && s6==1) mov_derecha1();}void r_borde_d(){if(s5==1 && s6==0) mov_avanzar();if(s5==0 && s6==0) mov_izquierda1();if(s5==1 && s6==1) mov_derecha1();}void r_borde_i(){if(s3==0 && s4==1) mov_avanzar();if(s3==1 && s4==1) mov_izquierda1();if(s3==0 && s4==0) mov_derecha1();}///////////////////////////////// INICIO programacion /////////////////////////////ejemplo de programacion por casos void f1(){while(true){r_borde_i(); //escojo tipo de rastreoif(s1==0 && s8==1) // si sensor 1 no toca linea y 2 toca linea //a la siguiente funcionf2();}} //se llama a siguiente funciona

void f2(){s=1; //invierto lectura de sensoresmi=950; //aumento velocidad, se puede cambier en cualquier momentomd=950;while(true){r_flancos(); if(s1==1 && s8==1) // si el sensor1 toca linea y sensor 8 toca linea negra f3(); //llama a siguiente funcion}}

void f3(){ //mueve a la derecha hasta que encuentre siguiente lineas=0; //cambio otraves a sensado normalwhile(true){r_borde_d();if(s7==1&& s2==1)f4();}}

void f4(){while(true){parar(); //robot llego a la metaluz();}}

///////////////////////funciones de los leds y botones///////////////////////////////////////////void luz(){output_toggle(pin_c0);output_toggle(pin_c7);delay_ms(100);}void botones(){btn1=input(pin_a5);

btn2=input(pin_c6);}///////////////////////////////////////////MOVIMIENTOS///////////////////////////////////void mov_avanzar(){output_high(pin_a1);output_low(pin_a2);output_low(pin_a3);output_high(pin_a4);}void mov_izquierda1(){output_high(pin_a1);output_low(pin_a2);output_high(pin_a3);output_low(pin_a4);}void mov_izquierda2(){output_high(pin_a1);output_low(pin_a2);output_low(pin_a3);output_low(pin_a4);}void mov_derecha1(){output_low(pin_a1);output_high(pin_a2);output_low(pin_a3);output_high(pin_a4);}void mov_derecha2(){output_low(pin_a1);output_low(pin_a2);output_low(pin_a3);output_high(pin_a4);}void parar(){output_high(pin_a1);output_high(pin_a2);output_high(pin_a3);output_high(pin_a4);}

Bootloader

Un BootLoader es un pequeño conjunto de instrucciones que forman un programa y se graban, en este caso en un microcontrolador, para permitir un posterior manejo y actualización de sus programas internos (firmware) sin necesidad de utilizar programadores (hardware) específicos. Es decir, utilizas un programador (o quemador) de microcontroladores una única vez para cargarle el mencionado BootLoader al microcontrolador y luego te bastará con una sencilla aplicación en tu ordenador para cambiar a tu antojo el funcionamiento de tus sistemas. Todo mediante una vulgar conexión al puerto USB. En este Caso se Se esta utilizando el bootloader de la pagina neoteo , este archivo hexagesimal es el se programara antes en el pic , ya luego de estar programado , y luego de estar hecha las conexiones necesarias del usb, se conecta mediante el cable usb ala pc olaptop y se habre el cargador del hex, en este caso utilizamos el del propio microchip. Para mas información ver La pagina de neoteo : http://www.neoteo.com/19871-bootloader-para-18f2550-entrenador-neoteo/3/

Planos de Fk-botControl:

Descripcion de la competencia Ratreadores de Linea

Consiste en la creación de un robot autónomo capaz de recorrer una Línea negra sobre un fondo blanco, o viceversa, en el menor tiempo posible. Estos robots se caracterizan por poseer un alto grado de algoritmos (programación) que le permiten predecir y pasar las pruebas más inesperadas como: curvas, ángulos rectos y mayores de 90º, líneas discontinuadas, puentes o rampas con pequeñas pendientes, etc.

CARACTERÍSTICAS DEL ROBOT PARTICIPANTE: El robot Seguidor de Líneas debe ser AUTÓNOMO, es decir que no puede ser manipulado o conectado con ningún aparato externo como mandos a Radio Control o Bluetooth, Fuentes de Alimentación, Computadoras o algún otro dispositivo externo. No está permitido el uso de robots comerciales (LEGO u otro) para el diseño y construcción del robot. El robot deberá tener un interruptor de encendido visible que pueda ser apreciado por los jurados y el público. Las dimensiones y el peso del robot no estará limitado (LIBRE). El robot deberá estar preparado para operar en condiciones de luz variables

ÁREA Y CARACTERISTICA DE LA COMPETENCIA:La competencia se realizará en 2 pistas con un área de 2 x 2 metros cada una, las cuales presentarán diferentes recorridosLas Pistas tendrán una superficie de fondo color blanco con una línea de color negra y algunas partes con una línea blanca y fondo negro, las cuales tendrá las siguientes características: Tamaño de la Línea: 2.1 cm. (+/- 0.5)Ángulos: Existirán ángulos cerrados no menores de 35º.Discontinuidades: No mayores de 3 cm. (en curvas). Bifurcaciones: Habrán desvíos en donde el robot tendrá que decidir el camino correcto. Rampas: las medidas se indicarán en el Blog del evento.

Para indicar la “Partida o Inicio” del recorrido, existirá un cuadrado de color negro ubicada en una esquina y además existirá un segundo cuadrado de color negro que nos indicará la “Meta”

Ejemplo de una pista de competenciaPara seguidores de linea

PUNTAJES DE CALIFICACIÓN:En la competencia se calificará a cada robot según los siguientes puntos:Diseño y Originalidad: Se calificará con mayor puntuación al uso de materiales que permitanmejorar la presentación y el buen funcionamiento del robot.Movimientos precisos en el recorrido: Se calificará con mayor puntuación al robot que no presente muchas “vibraciones” o “desviaciones” en sus movimientos durante su recorrido. Recorrido completo: Aquellos robots que completen todo el recorrido de una determinada pista, obtendrán el mayor puntaje en este punto. Tiempo total del recorrido: Es el tiempo que tarde el robot en completar el recorrido de determinada pista.

Conclusiones

Es muy importante tener en cuenta el diseño, electrónico y mecánico que debe tener el robot ya que de esta depende que tan estable sea.

En la parte del chasis del robot se debe tener en cuenta el peso y la dimensión, pues la inercia del robot es un factor que puede jugar en contra de la competencia, pues tendera a salirse de las líneas, o en el caso de ser poco pesado, el robot tendrá poco equilibrio, se debe busca un punto medio entre peso , dimensión , fuerza y velocidad.

Uno de los problemas que se tuvo en la etapa del diseño electrónico del robot fue que se infiltraba baste ruido eléctrico al microcontrolador, haciendo que se reinicie varias veces, por ello se tuve que investigar acerca de porque se producía, llegando a la conclusión que los motores inducían este ruido y a la ves creaban picos de corriente , los microcontroladores pic son muy sensibles a estos.

La solución que se tubo fue de colocar condensadores de desacoplo de 0.01uf y 100,uf en paralelos a la fuente de tensión, y colocarlos lo más cerca posible a los integrados.

El propósito de construir un robot seguidor de línea es poner en práctica los conocimientos adquiridos de los estudiantes de ingeniería y electrónica y que este conocimiento no quede solo en la teoría, sino ponerlo en la práctica y a la ves desarrollar el habito de investigar, pues este ingrediente es el que más hace falta en los estudiantes .

También de difundir al público en general el grado de desarrollo de la robótica en nuestro país.

La programación del robot es por si se puede decir el alma del robot, pues este es que hará que el robot , adquiera la autonomía para su desplazamiento, es muy importante que la programación sea lo mas robusta posible para que en el momento del concurso no presente fallas en el recorrido

Un robot seguidor de línea de competencia tiene por objetivo recorrer una pista dada en el menor tiempo posible.

Anexos

Biliografia

Libros:

Compilador c ccs y simulador proteus para microcontroladores pic

Autor: Eduardo Garcia Breijo

De internet:

http://www.infoab.uclm.es/labelec/solar/otros/infrarrojos/sensor_cny70.htmhttp://pavdre.blogspot.com/p/robot-seguidor-de-lineas.html

http://pavdre.blogspot.com/p/robot-seguidor-de-lineas.html

http://www.neoteo.com/19871-bootloader-para-18f2550-entrenador-neoteo/

http://www.microrobotica.net/recursos/bootloader-hid/

http://microembebidos.com/