SUMO _ CACAHUETE. Departamento de Electricidad-Electrónica. Ciclo Superior de Desarrollo de Productos Electrónicos. Alumno: Ignacio Díaz Díaz-Regañón.

Documentos relacionados
PROYECTO: Velocista y coche teledirigido

Robot laberinto Raúl Antona Fresno PE21

Mazo V2 Electrónica. Daniel Tello September 25, 2006

Competencia de Robótica JOHNNY

PROFESOR: Práctica 9. Convertidor Analógico-Digital

CONVERTIDOR ANÁLOGICO-DIGITAL (ADC)

EL módulo conversor A/D. (c) Domingo Llorente

1.1. Memoria Descriptiva Objeto Antecedentes

TUTORIAL II parte A. Observemos el diagrama de pines del microcontrolador 16F877A:

Sesión II: Elementos de un Robot

Proyecto Rastreador + Coche Teledirigido

SIMIOBOARD JOYSTICK MANUAL E INICIO RAPIDO

Robótica en la Universidad

Desarrollo de Productos Electrónicos

GRUPO 26. IVÁN DÍAZ CHACÓN JOSÉ JAIME ARIZA LUÍS ZAVARGO PECHE

MiniLab Presentación

Descripción del proyecto

5. CONSTRUCCIÓN a) Montar la plataforma móvil según sus instrucciones. b) Soldar un trozo de 20 cm de hilo rígido a los terminales de las reductoras.

Medidor de distancias En esta actividad utilizaremos un sensor de ultrasonidos como medidor de distancias

Diagrama de bloques del sistema

Medidas de Distancia mediante Rayos Infrarrojos

PROFESOR: Práctica 5. Manejo de Motores

Curso Robótica Práctica

CONTROL AUTOMÁTICO CON ARDUINO

DOCUMENTACIÓN PARA LA FABRICACIÓN DE LA PLATAFORMA GUADALBOT

El objeto de este proyecto es el de construir un robot araña controlado por un PIC16F84A.

Sensores compactos medidores de distancias de alta sensibilidad

GUIA DE EJERCICIOS Nº 2 INSTRUMENTACIÓN AVANZADA

proyecto: robot hexápodo (spidy.00)

Diseño e implementación de un equipo de prácticas de control automático

PROFESOR: Práctica 10. Modulación por ancho de pulso (PWM) Emplea un microcontrolador para procesamiento de señales analógicas y digitales

UNIDAD 5 Las señales analógicas

A.- Electrones fluyendo por un buen conductor eléctrico, que ofrece baja resistencia.

Se recomienda consultar el siguiente enlace y el datasheet del PIC18F2550.

Robot seguidor de línea C-9806

PROYECTO INTEGRADO BICHOBOTS

Practicas de INTERFACES ELECTRO-ÓPTICOS PARA COMUNICACIONES

PIC 16F87X. Juan González. Escuela Politécnica Superior Universidad Autónoma de Madrid. Flir Networked Systems. Flir Networked Systems

TEMA 3 ELECTRÓNICA TECNOLOGÍA 3º ESO. Samuel Escudero Melendo

4 Actuadores eléctricos. Alfaomega. Material Web. Arduino control de servomotores a pasos 2

CAPÍTULO 3: DESCRIPCIÓN HARDWARE DEL

COMPONENTES ELECTRÓNICOS ANALÓGICOS Página 1 de 7

MICROCONTROLADORES. 1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits

Módulo de control para secciones de vía

1.1. Memoria Descriptiva

LUCES SECUENCIALES REVERSIBLES DE 6 LED. Simula que tienes un scanner o una alarma en tu vehículo


Actuadores eléctricos - Motores

IES Federico García Lorca Departamento de TECNOLOGÍA. IES Federico García Lorca TECNOLOGÍA. Alumno/a:: Alumno/a:: 3º ESO Curso 12/13

ÍNDICE MEMORIA ECONÓMICA

TREMEX PULSER. El activador digital para baterías de plomo

NO ES NECESARIO MONTAR

Inter.face de comunicación RS 232 de empotrar Referencia: /8455.9

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

Práctica 5 Diseño de circuitos con componentes básicos.

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica. Proyecto RASTREADOR. Departamento de Electricidad-Electrónica

PRÁCTICA 8-9. FABRICACIÓN DE CIRCUITO IMPRESO

9. Plataforma Desarrollo del ATmega

Características del sistema

Seguidor de líneas Un carrito seguidor de linea sencillo

En este capítulo se describirá los pasos que se siguieron para la elaboración

Seminario de Diseño y Construcción de Microrrobots:

Programar posiciones en un Micro Servo Tower Pro SG90 9G

Bus I 2 C. Introducción

Descripción del UNIVERSAL TRAINER La fuente de alimentación

Proyecto: Telemando a través de la red eléctrica Autor: Antonio José Morente Martín Memoria Descriptiva Objeto

I Seminario-Taller de Micro-Robots de Competición. Departamento de Ingeniería de Software y Sistemas Informáticos

DOCUMENTACIÓN PARA LA FABRICACIÓN DE LA PLATAFORMA GUADALBOT. Placa Base I.E.S VIRGEN DE LAS NIEVES

En el presente capítulo se hará mención de las conclusiones obtenidas de la realización del

MANUAL DE DESCRIPCIÓN

DEPARTAMENTO DE CIENCIAS DE LA ENERGIA Y MECANICA Laboratorio de Automatización Industrial Mecánica. TEMA: Adquisición de datos

TEMA 5 ELECTRÓNICA TECNOLOGÍA 4º ESO. Samuel Escudero Melendo

Unidad didáctica: "Electrónica Analógica"

MICROCONTROLADOR PIC DE MICROCHIP

Tarjeta Desarrollo dspic. Bogobots ITEM-CEM

Modo de Operación del sigue líneas

Practica 3: Ver el camino

Qué es y por qué usarlo

1. ESPECIFICACIONES 2. REGISTROS INTERNOS

INTRODUCCIÓN A LA ELECTRÓNICA

SISTEMA DE COMUNICACIÓN VÍA RADIO ENTRE PC Y MICROBOT.

PLACA CONTROLADORA DE TEMPERATURA MEDIANTE SENSORES LM75


TPR 3ºESO. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz TEMA 6: ROBÓTICA

Sensor Viento-Sol Radio Estándar

TARJETA GIROSCOPIO, L3GD20. SIGMA ELECTRONICA

10. Tarjeta analógica multipropósito

CYBERTECH 2018 TALLER 03: MOTORES Y POTENCIA

Normas Europeas de Modelismo. Módulo de control. para señales. Recomendación Edición 2012 (Sustituye la edición 2011)

Amplificador de 80w (4x20w) para automóvil

En este proyecto se ha desarrollado un maestro y un esclavo TIPO 5. Ambos han sido desarrollados con el software EAGLE.

UNIVERSIDAD DE OVIEDO

Circuito de Offset

OPENCOCKPITS IOCard USBRELAYS MANUAL DE INSTALACION Y USO

Departamento de Ingeniería a de Software y Sistemas Informáticos

Fuente de Alimentación Simétrica Regulada y Variable. (0 a 30V 2A)

TEMA 2: LOS CIRCUITOS ELÉCTRICOS

Anexo VI: Detalles y consideraciones prácticas en el diseño de placas de circuito impreso

Grado de Óptica y Optometría Asignatura: FÍSICA Curso: Práctica nº 5. MEDIDAS DE RESISTENCIAS, VOLTAJES Y CORRIENTES: MULTÍMETRO

PRÁCTICAS ELECTRÓNICA ANALÓGICA

Transcripción:

SUMO _ CACAHUETE Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de Productos Electrónicos Alumno: Ignacio Díaz Díaz-Regañón. Profesores: Pedro Alonso Sanz Alfonso García Gallego Juan Dongil García Instituto: I.E.S. Joan Miró Localidad: San Sebastián de los Reyes Curso: 2007/2008 1

INDICE 1.- Introducción 3 2.- Diagrama en bloques del robot 4 3. Esquema eléctrico del robot 5 4.- Análisis de los bloques 7 4.1.-Placa de adaptador de señales PC-UC Alimentación 7 4.2.-Placa de potencia. 9 4.3.- Placa de control. 11 5.- Programas. 14 5.1.-Programas de prueba 14. 5.1.1.- Prueba de motores 14 5.1.2.- Prueba del servo de acción. 16 5.1.3.- Prueba sensores CNY 17 5.1.4.- Programa sensores GP2D12 19 5.1.4.1.- Driver Gp2d12_v_d para calcular la distancia. 22 5.1.5 Programa de prueba de los dos sensores GP2D12 23 5.2 Programa principal básico. 25 6.- Fabricación de circuitos impresos 27 6.1.- Explicación de la fabricación 27 6.1.2.- Fabricación de la placa de alimentación-comunicación PC-UC 28 6.1.3.- Fabricación de la placa de potencia. 32 6.1.3.- Fabricación de la placa de control. 35 7.- Fabricación de la carrocería. 38 8.- Listado de precios. 40 8.1.-Placa de fuente de alimentación-comunicación PC-UC 40 8.2.-Placa de potencia. 41 8.3.-Placa de control. 42 9 Anexos 43 2

1.- Introducción Este proyecto consiste en fabricar un robot capaz de luchar con otro de forma autónoma en un tatami circular. El robot no podrá superar unas dimensiones que serán 10cm x 10cm x 10cm y tampoco un peso 500gr. Para el combate contará con diversos sensores tanto para encontrar al oponente, GP2D12 sensores que calculan la distancia por medio de infrarrojos, como para evitar que sea expulsado del círculo, sensores CNY70 que a través de un diodo emisor de luz y un fototransistor detectan la diferencia del blanco y el negro. Estos sensores se comentarán mas adelante. El robot tendrá dos motores independientes para controlar el sentido de giro y un tercer apoyo trasero para mantener la horizontalidad. El giro se podrá conseguir de dos formas parando un motor y girando otro o bien girando un motor en un sentido y el otro en el contrario, este segundo método hará que el giro sea más rápido y en el sitio. Estos movimientos se usarán para el desplazamiento normal del robot y como maniobra de escape ante algún ataque. El robot cuenta con tres placas de circuito impreso. En la parte superior se encuentra la placa de control en ella esta el microprocesador, el cerebro del robot, el que contiene el programa y el que gestiona los demás componentes como sea necesario para llevar a cabo el programa que se le ha cargado. En esta placa también se encuentran los conectores donde se conectan los sensores, es así porque deben situarse lo mas cerca posible del PIC para evitar que se introduzcan ruidos en la señal. La placa intermedia es la de potencia, esta tiene los componentes necesarios para poder utilizar los motores de una manera eficaz, protege a las demás placas de posibles corrientes inversas y se encarga de llevar a los motores la información para que giren en el sentido que se requiera. La ultima placa, es la fuente de alimentación y comunicación con el PC. La fuente de alimentación se encarga de sacar las tensiones necesarias para alimentar los demás placas y generar la que denominaremos tensión de potencia que es la que alimenta a los motores. La función de la parte de comunicación con el PC es la de poder cargar el programa que previamente se ha desarrollado en el ordenador, mediante una comunicación utilizando la interfaz RS232. 3

Todas las placas de las que consta el robot y cada componente que se incluye en ellas serán explicados mas adelante en distintos puntos del proyecto dedicados exclusivamente a ellas. 2.- Diagrama en bloques. Este diagrama muestra en conjunto el nombre de cada bloque del robot y como se comunican los bloques entre si. Este esquema ayuda a comprender desde una vista superficial la base del funcionamiento del robot. 4

DIAGRAMA EN BLOQUES. 5

ESQUEMA ELECTRICO. 6

4.- Análisis de los bloques. 4.1.-Placa de adaptador de señales PC-UC Alimentación. En esta placa se encuentran dos partes del robot, una es la de alimentación y otra es la de comunicación con el PC. La parte de alimentación se encarga de estabilizar la tensión de la batería y de generar una tensión de 5 voltios a través de un regulador LM350K para la alimentación de los componentes digitales. El primer componente que se encuentra en la parte de alimentación después del interruptor, es el diodo D1, este encarga de impedirle paso de la corriente en caso de que se invierta la polaridad de la batería. Después del diodo se lleva la alimentación directamente los motores ya que su tensión nominal son 9 voltios. Tanto el C3 como el C1 son condensadores que rectifican la señal para hacerla mas lineal, y evitar que la tensión de alimentación tenga altibajos en su valor. Los condensadores C2 y C4 se encargan de filtrar posibles ruidos que se transmiten por el aire, que provengan de antenas emisoras, o de equipos que emitan ruido. El regulador de tensión LM350K tiene un rango de trabajo de entre 3 a 35v y con el package que esta montado, TO-3, es capaz de dar hasta 3 amperios. La tensión la regula por un potenciómetro que se encuentra en su patilla de referencia. Esta resistencia ajustable, RV1, al regular esta tensión de referencia hace que el regulador deje salir más o menos tensión a la salida. La resistencia R38 se encarga de estabilizar la corriente a la resistencia de ajuste, y el condensador C15 de evitar que al regular la tensión de referencia se generen picos de tensión que puedan enviar lecturas erróneas al LM350K. Los diodos D2 y D4 están para proteger al regulador de tensión de posibles tensiones inversas. En la parte de la comunicación con el PC el componente principal y casi único es el integrado MAX232, que se encarga de la conversión de niveles de voltaje de RS232 a TTL. Para ello necesita unos condensadores a su salida, en el siguiente esquema C1 y C3, que hacen que pueda cambiar la tensión de 5v que es un 1 lógico en TTL a -10v que es el equivalente a otro 1 lógico en RS232. 7

Terminales y esquema interno del RS232 8

El conector J1A es el que comunica con la placa de control llevándole las tensiones que son necesarias para alimentar los componentes. El JP1 lleva directamente la tensión de 9v a la placa de potencia. 4.2.-Placa de potencia. Esta placa se encarga del control de los motores y de aislar el resto del robot, de voltajes de potencia, posibles ruidos y corrientes generadas por lo motores. El integrado L293B es un inversor de giro que puede dar hasta 2 amperios, para alimentar los motores. Funciona de manera que al tener un 1 en una entrada IN entrada y un 0 en la otra entrada IN donde estén conectados los motores respectivamente, el motor girara en un sentido y si se invierten los valores lógicos, el motor cambiará el sentido de giro. Este ejemplo lo explica: 1 0 0 1 9

En caso de que las entradas estén al mismo nivel lógico, los motores se detendrán. 0 1 0 1 Los integrados U4, U5, U6 y U7 son optoacopladores, estos componentes se encargan de aislar circuitos a través de luz, tienen un fotodiodo en su interior que cuando se quiere enviar una señal positiva se polariza llevando un 0 al cátodo del led emitiendo luz. Esta luz polariza en directa un fototransistor que lleva un nivel alto al integrado L293B. Estos componentes se usan para evitar que se dañen elementos electrónicos que necesitan tensiones muy estables, trabajan con corrientes muy bajas con posibles corrientes que generen los motores. En esta placa se encuentran las resistencias de pull-up que se utilizan para generar una corriente para poder polarizar correctamente los fototransistores. 10

4.3.- Placa de control. Esta es la placa de control, es la que contiene el microprocesador, la que se encarga de coordinar todos los elementos del robot para poder llevar a cabo el programa que le ha sido asignado. Este programa se le carga mediante el conversor MAX232 que se encuentra en la placa de comunicación PC-UC-Alimentación como se dijo anteriormente. En esta placa podemos encontrar el bus I2C, en los conectores J10, J22, J12 y J13, es un sistema de comunicación serie, en el que se pueden conectar distintos dispositivos de manera paralela. El microprocesador, se dirige a cada uno de ellos por una dirección que tienen asignada, así los datos que se envían por el bus I2C solo los reciben el microprocesador y el dispositivo al que se refiera esa dirección. Las características más salientes del bus I2C son: Se necesitan solamente dos líneas, la de datos (SDA) y la de reloj (SCL). Cada dispositivo conectado al bus tiene un código de dirección seleccionable mediante software. Habiendo permanentemente una relación Maestro/Eslavo entre el micro y los dispositivos conectados El bus permite la conexión de varios Maestros, ya que incluye un detector de colisiones. El protocolo de transferencia de datos y direcciones posibilita diseñar sistemas completamente definidos por software. Los datos y direcciones se transmiten con palabras de 8 bits. 11

Todos los sensores están conectados a la placa de control, porque necesitan estar cerca del microprocesador para que se meta la menor cantidad de ruido en la comunicación. Si se metiese ruido en la transmisión podrían llegar datos erróneos al microprocesador y el robot podría entrar en un subprograma al que no debiera en ese momento. Uno de los sensores que esta instalado es el GP2D12, infrarrojos, que funciona triangulando una luz que emite un diodo infrarrojo, esta luz choca con un objeto y dependiendo del ángulo a que forme el haz de luz que vuelve, el objeto estará mas cerca o mas lejos. es un sensor de El sensor, da una tensión proporcional a ese ángulo a que varia entre 0 y 3v. En las características del sensor se incluye una curva con la que se pude hallar la distancia dependiendo de la tensión que devuelva el sensor. â Con esta tensión se realiza una conversión analógico-digital y se lleva a un driver que mediante la puntualización de la curva característica del sensor, devuelve la distancia a la que se encuentra el objeto. Este sensor tiene que llevar en paralelo con la alimentación un condensador para evitar ruidos en la medida de distancia, es algo crucian que el robot sepa en todo momento donde se encuentra el oponente. Para poder atacar el la dirección correcta. En esta placa también esta conectado el sensor CN70, están situados en las cuatro esquinas del robot, este sensor se encarga de evitar que el robot abandone el tatami, leyendo en todo momento el color de la superficie donde esta, en el momento que lee un color blanco cualquiera de los sensores, el robot entrara en una interrupción para no salirse del tatami. Este sensor funciona con un fotodiodo que emite una luz y rebota en el suelo, según la reflexión del color de la superficie, un fototransistor que se encuentra dentro del sensor se polariza en directa en caso de que sea un color blanco y se queda en corte cuando es un color negro. En esta placa se encuentra un integrado 74HC14, es un integrado de puertas inversoras. Se pone un inversor a la salida del sensor, para estabilizar tensiones. 12

Dependiendo de la reflexión de la superficie, el fototransistor, tiene más intensidad de base, si la reflexión es baja habrá poca tensión, al entrar en la puerta inversora la salida tiene un nivel de tensión muy estable y muy definido. Lo único que hay que tener en cuenta es que cambia el nivel lógico Esta placa cuenta con un jumper de seguridad para poder configurar si se puede escribir o no en el microprocesador, otro jumper para elegir si se quiere el robot como teledirigido o en modo de combate autónomo. Para el modo teledirigido, el robot cuenta con una tarjeta receptora de datos. La Tarjeta Receptora de Datos CEBEK C-0504 es un circuito híbrido encargado de recibir vía radiofrecuencia, los datos digitales procedentes del Mando. La señal digital tiene que tener una frecuencia entre 20 Hz < fo < 4 KHz. y una portadora de 433,92 MHz. Este circuito demodula la señal de AM obteniendo los datos transmitidos. En esta parte también se encuentran los dos servos d acción, estos servos irán colocados en la parte delantera y en la parte trasera, y actuarán como palancas para intentar hacer perder la tracción al oponente. Estos servos funcionan con PWM generada por el mismo microprocesador. La PWM es una señal en la que se varía el ciclo de trabajo positivo pero no la frecuencia. El servo reacciona ante un periodo positivo y se mueve proporcionalmente al tiempo que tenga ese periodo. Estos servos trabajan de 0º a 180º que corresponde a un periodo de entre 0.6 ms los 0º y 2.3 ms los 180º. 0.6ms 0º 1.45ms 90º 2.03ms 180º La placa de control cuenta también con un pulsador de inicio, que hace que el microprocesador pare el programa de golpe y lo empiece desde el principio. Esto es por si en algún momento el robot se queda bloqueado en un bucle de un programa y no responde. 13

5.- Programas. 5.1.-Programas de prueba. 5.1.1.- Prueba de motores. Este programa prueba que los motores funcionan correctamente, tanto el cambio del sentido de giro como que tienen la suficiente fuerza. 14

****************************Pruebamotores***************************** #include <16F876A.h> #fuses XT,NOWDT #use delay( clock = 4000000 ) // Reloj de 4 MHz // Este fichero contiene todas los driver para pode interactuar con el micro. #BYTE TRISC = 0x87 //configuración de TRISC en la dirección 87h. #BYTE portc = 0x07 // PORTC en 07h. #BYTE TRISB = 0x86 // configuración de TRISB en la dirección 86h. #BYTE portb = 0x06 // PORTB en 06h. #BYTE TRISA = 0x85 // configuración de TRISA en la dirección 85h. #BYTE porta = 0x05 // PORTA en 05h. #BIT IN2 = 0x06.3 #BIT IN1 = 0x06.2 #BIT IN3 = 0x05.4 #BIT IN4 = 0X07.0 //Motor Derecho //Motor Derecho //Motor Izquierdo //Motor Izquierdo datos. datos. datos. void main(){ TRISB = 0B11100011; TRISA = 0B11101111; TRISC = 0B11111110; // Defines Puerto B como SALIDA=0 y ENTRADA =1 de // Defines Puerto A como SALIDA=0 y ENTRADA =1 de // Defines Puerto C como SALIDA=0 y ENTRADA =1 de while(1){ IN1= 0; IN2= 0; IN3= 0; IN4= 0; delay_ms(500); IN1= 0; IN2= 1; IN3= 0; IN4= 1; delay_ms(500); //bucle infinito. //Retardo IN1= 1; IN2= 1; IN3= 1; IN4= 1; delay_ms(500); 15

IN1= 1; IN2= 0; IN3= 1; IN4= 0; delay_ms(500); } } 5.1.2.- Prueba del servo de acción. Este programa será una interrupción, para una acción de ataque del robot. Cuando un sensor colocado en el brazo despegable se active este brazo subirá para hacer que el robot oponente pierda tracción. 16

*****************************Prueba_MOT_SER*************************************** #include <16F876A.h> #fuses XT,NOWDT #use delay( clock = 4000000 ) // Reloj de 4 MHz #BYTE TRISC = 0x87 // TRISC en 87h. #BYTE portc = 0x07 // PORTC en 07h. #BYTE TRISB = 0x86 // TRISB en 86h. #BYTE portb = 0x06 // PORTB en 06h. #BYTE TRISA = 0x85 // TRISA en 85h. #BYTE porta = 0x05 // PORTA en 05h. #BIT RB1 = 0x06.1 #include <Servo_Futaba_10bit.c> void main(){ TRISB = 0B11110011; // Defines Puerto B como SALIDA=0 y ENTRADA =1 de datos. TRISC = 0B11111110; while(1){ //bucle infinito { if (rb1==0){ int16 TH; Inicializacion_Futaba_RC2(); // Inicialización del Servo en RC2 TH=57; Futaba_RC2(TH); delay_ms(500); // Posicionar el Servo de pa patilla RC2. TH=100; Futaba_RC2(TH); delay_ms(500); }else; // Posicionar el Servo de pa patilla RC2. } } } 5.1.3.- Prueba sensores CNY Los sensores CNY situados en los cuatro vértices del robot, evitan que este se salga. El programa de prueba, es el siguiente. 17

Para la prueba de sensores primero se testan los de la parte delantera y después los de la parte trasera. ******************************************CNY************************************************************************************ #include <16F876A.h> #fuses XT,NOWDT #use delay( clock = 4000000 ) // Reloj de 4 MHz #BYTE TRISC = 0x87 // TRISC en 87h. #BYTE portc = 0x07 // PORTC en 07h. #BYTE TRISB = 0x86 // TRISB en 86h. #BYTE portb = 0x06 // PORTB en 06h. #BYTE TRISA = 0x85 // TRISA en 85h. #BYTE porta = 0x05 // PORTA en 05h. #BIT IN2 = 0x06.3 //Derecho #BIT IN1 = 0x06.2 //Derecho #BIT IN3 = 0x05.4 //Izquierdo #BIT IN4 = 0X07.0 //Izquierdo #BIT RB4 = 0x06.4 //Sensor trasero dcho #BIT RB5 = 0x06.5 //Sensor delantero dcho. #BIT RB6 = 0x06.6 //Sensor trasero izqd. #BIT RB7 = 0x06.7 //Sensor delantero izqd. void main(){ 18

TRISB = 0B11110011; TRISA = 0B11101111; TRISC = 0B11111110; // Defines Puerto B como SALIDA=0 y ENTRADA =1 de datos. // Defines Puerto A como SALIDA=0 y ENTRADA =1 de datos. // Defines Puerto C como SALIDA=0 y ENTRADA =1 de datos. while(1){ /*if(rb4==1 RB6==1){ IN1= 0; IN2= 1; IN3= 0; IN4= 1; }else{ IN1= 1; IN2= 0; IN3= 1; IN4= 0; }*/ Esta parte esta comentada, ahora estan a prueba los sensores delanteros que son RB7 y RB5 } if (RB7==1 RB5==1){ IN1= 0; IN2= 1; IN3= 0; IN4= 1; }else{ IN1= 1; IN2= 0; IN3= 1; IN4= 0; } } 5.1.4.- Programa sensores GP2D12 Para testear estos sensores se han hecho varios programas, primero cada sensor por separado y luego en conjunto. 19

NO SI ************************************25CM******************************************* //**********Conversion Analogica Digital de la Patilla AN0 *********************************** #include <16F876A.h> #device adc=10 // Conversor Analogico Digital de 10 bit el PIC 16F876A puede trabajar con 8 o 10 bit de resolucion. #FUSES XT,NOWDT #use delay(clock=4000000) #include <driver_gp2d12.c> #BYTE TRISC = 0x87 // TRISC en 87h. #BYTE portc = 0x07 // PORTC en 07h. #BYTE TRISB = 0x86 // TRISB en 86h. #BYTE portb = 0x06 // PORTB en 06h. #BIT TA4 = 0x85.4 // TRISA en 85h. #BIT IN2 = 0x06.3 //Derecho 20

#BIT IN1 = 0x06.2 #BIT IN3 = 0x05.4 #BIT IN4 = 0X07.0 //Derecho //Izquierdo //Izquierdo //*******************************PROGRAMA PRINCIPAL************************************************************************** ******** void main(){ int16 q; float d, v; TRISB = 0B11100011; datos. TRISC = 0B11111110; datos. // Defines Puerto B como SALIDA=0 y ENTRADA =1 de // Defines Puerto C como SALIDA=0 y ENTRADA =1 de setup_adc_ports(0); ADCON1. // Seleccionamos el Puerto A como entradas Analogicas. Mirar setup_adc(adc_clock_internal); // Fuente de reloj RC interno. TA4 = 0; //Declaración de la patilla 4 del puerto A como salida a nivel de bit for (;;) { set_adc_channel(0); delay_ms(20); Tad. q = read_adc(); v = (5.0 * q) / 1024.0; // Bucle infinito. // HabilitaciOn canal 0 "AN0" // Retardo de 20uS necesaria para respetar el tiempo de Adquisicion // Lectura canal 0 "AN0" // Conversion a tension del codigo digital "q". d=gp2d12_v_d(v); } } if (d>=25&&d<=50){ IN1= 0; IN2= 1; IN3= 0; IN4= 1; }else{ IN1= 0; IN2= 0; IN3= 0; IN4= 0; } 21

5.1.4.1.- Driver Gp2d12_v_d para calcular la distancia. //*****************************DRIVER DE CONTROL DEL SENSOR DE DISTANCIA Gp2d12, para una recta entre 10 cm y 55 cm. //HACE LA CONVERISON DE TENSION PROCEDENTE DEL SENSOR Gp2d12 A UNA DISTANCIA (SE OBTIENE UNA DISTANCIA EN FUNCION DE LA TENSIÓN). //SE INTRODUCE UN VALOR DE TENSIÓN (v)tipo FLOAT Y DEVUELVE UNA DISTANCIA (d)float. //****************************** DECLARACIÓN DE FUNCIONES************************************************************************* ** float Gp2d12_v_d(float); //****************************************FUNCIÓN Gp2d12_v_d******************************************************************* float Gp2d12_v_d(float v){ float l; l=0; if(v>2.6) l = 8; if(v<2.6&&v>=1.9) l = 13.5 + ((8-13.5)* (v - 1.9) /(2.6-1.9)); if(v<1.9&&v>=1.65) l = 16 + ((13.5-16)* (v- 1.65) / (1.9-1.65)); if(v<1.65&&v>=1.38) l = 20 + ((16-20)* (v- 1.38) / (1.65-1.38)); if(v<1.38&&v>=1.15) l = 25 + ((20-25)* (v- 1.15) / (1.38-1.15)); if(v<1.15&&v>=0.95) l = 30 + ((25-30)* (v- 0.95) / (1.15-0.95)); if(v<0.95&&v>=0.75) l = 40 + ((30-40)* (v- 0.75) / (0.95-0.75)); if(v<0.75&&v>=0.68) l = 45 + ((40-45)* (v- 0.68) / (0.75-0.68)); if(v<0.68&&v>=0.58) l = 55 + ((45-55)* (v- 0.58) / (0.68-0.58)); if(v<0.58) l=55; } return(l); 22

5.1.5 Programa de prueba de los dos sensores GP2D12 Este programa hace que el robot siga a un objeto centrándolo entre los dos sensores, cuando un sensor capta un objeto que este entre los 10 y los 50 cm gira hacia el, cuando lo detecta el segundo sensor, el robot irá hacia el objeto. NO NO SI SI //************************Conversión Analógica Digital de la Patilla AN0 ******************** #include <16F876A.h> #device adc=10 // Conversor Analógico Digital de 10 bit el PIC 16F876A puede trabajar con 8 o 10 bit de resolucion. #FUSES XT,NOWDT #use delay(clock=4000000) #include <driver_gp2d12.c> #BYTE TRISC = 0x87 // TRISC en 87h. #BYTE portc = 0x07 // PORTC en 07h. #BYTE TRISB = 0x86 // TRISB en 86h. 23

#BYTE portb = 0x06 // PORTB en 06h. #BIT TA4 = 0x85.4 // TRISA en 85h. #BIT IN2 = 0x06.3 #BIT IN1 = 0x06.2 #BIT IN3 = 0x05.4 #BIT IN4 = 0X07.0 //Derecho //Derecho //Izquierdo //Izquierdo //*******************************PROGRAMA PRINCIPAL************************************************************************** ******** void main(){ int16 q; float d, v; TRISB = 0B11100011; TRISC = 0B11111110; // Defines Puerto B como SALIDA=0 y ENTRADA =1 de datos. setup_adc_ports(0); ADCON1. // Seleccionamos el Puerto A como entradas Analogicas. Mirar setup_adc(adc_clock_internal); TA4 = 0; // Fuente de reloj RC interno. //Declaración de la patilla 4 del puerto A como salida a nivel de bit for (;;) { set_adc_channel(0); delay_ms(20); Tad. q = read_adc(); v = (5.0 * q) / 1024.0; // Bucle infinito. // HabilitaciOn canal 0 "AN0" // Retardo de 20uS necesaria para respetar el tiempo de Adquisicion // Lectura canal 0 "AN0" // Conversion a tension del codigo digital "q". d=gp2d12_v_d(v); if (d>=10&&d<=50){ IN1= 0; IN2= 1; }else{ IN1= 0; IN2= 0; } set_adc_channel(1); delay_ms(20); Tad. // HabilitaciOn canal 0 "AN1" // Retardo de 20uS necesaria para respetar el tiempo de Adquisicion 24

q = read_adc(); v = (5.0 * q) / 1024.0; // Lectura canal 0 "AN1" // Conversion a tension del codigo digital "q". d=gp2d12_v_d(v); if (d>=10&&d<=50){ ; IN3= 0; IN4= 1; }else{ IN1= 0; IN2= 0; } } } 5.2 Programa principal básico. Este programa hace que el robot gire sobre si mismo hasta que encuentre algún objeto que este entre 10 y 50 cm. Cuando lo encuentre se dirigirá hacia el, el motor asociado al sensor situado a la patilla RA1 siempre girará hacia delante, se sensoriza para tener controlada la distancia desde dos puntos. 25

//********************************Conversion Analogica Digital*************************** #include <16F876A.h> #device adc=10 // Conversor Analogico Digital de 10 bit el PIC 16F876A puede trabajar con 8 o 10 bit de resolucion. #FUSES XT,NOWDT #use delay(clock=4000000) #include <driver_gp2d12.c> #BYTE TRISC = 0x87 // TRISC en 87h. #BYTE portc = 0x07 // PORTC en 07h. #BYTE TRISB = 0x86 // TRISB en 86h. #BYTE portb = 0x06 // PORTB en 06h. #BIT TA4 = 0x85.4 // TRISA en 85h. #BIT IN2 = 0x06.3 #BIT IN1 = 0x06.2 #BIT IN3 = 0x05.4 #BIT IN4 = 0X07.0 //Derecho //Derecho //Izquierdo //Izquierdo //*******************************PROGRAMA PRINCIPAL************************************************************************** ******** void main(){ int16 q; float d, v; TRISB = 0B11100011; TRISC = 0B11111110; // Defines Puerto B como SALIDA=0 y ENTRADA =1 de datos. setup_adc_ports(0); ADCON1. // Seleccionamos el Puerto A como entradas Analogicas. Mirar setup_adc(adc_clock_internal); TA4 = 0; // Fuente de reloj RC interno. for (;;) { // Bucle infinito. set_adc_channel(0); // HabilitaciOn canal 0 "AN0" 26

delay_ms(20); Tad. q = read_adc(); v = (5.0 * q) / 1024.0; // Retardo de 20uS necesaria para respetar el tiempo de Adquisicion // Lectura canal 0 "AN0" // Conversion a tension del codigo digital "q". d=gp2d12_v_d(v); if (d>=10&&d<=50){ IN1= 0; IN2= 1; }else{ IN1= 1; IN2= 0; } set_adc_channel(1); delay_ms(20); Tad. q = read_adc(); v = (5.0 * q) / 1024.0; // HabilitaciOn canal 0 "AN1" // Retardo de 20uS necesaria para respetar el tiempo de Adquisicion // Lectura canal 0 "AN1" // Conversion a tension del codigo digital "q". d=gp2d12_v_d(v); if (d>=10&&d<=50){ ; IN3= 0; IN4= 1; }else{ IN1= 0; IN2= 1; } } } 6.- Fabricación de circuitos impresos 6.1.- Explicación de la fabricación Todas las placas que se han realizado para el robot, han sido desarrolladas con el programa Proteus. Primero se ha partido de un esquema electrónico del circuito que se quería fabricar, ese circuito se ha pasado a PCB (del inglés Printed Circuit Board), también utilizando otra herramienta del programa Proteus, dos de las tres placas se han realizado a doble cara, la tercera, la placa de fuente de alimentación- Comunicación PC-UC, ha sido a simple cara. 27

Para la fabricación, se ha cortado una placa de cobre del tamaño 70cm x 75cm y se ha taladrado con el CNC, pasando el archivo que contiene el mapeo de los agujeros al ordenador, que controla esta herramienta. La placa se ha positivado, para que al insolar se quede el circuito marcado en el positiv, liquido que se emplea para positivar. El circuito se ha impreso en un papel vegetal, y se ha realizado el centrado con respecto a los agujeros previamente hechos. Una vez centrado, se sujeta la placa al papel donde esta impreso el circuito y se mete en la insoladora. Se trata de un aparato que contiene tubos de luz ultravioleta, estos rayos, al chocar contra la placa positivada atacan el líquido positiv, en todos los sitios excepto donde se encuentran las pistas que al ser tonner negro no deja pasar los rayos ultravioleta, y es así como se marcan las pistas en el positivado. El siguiente proceso es el de revelado, este se lleva a cabo en una cubeta con sosa, se introduce la placa y se deja reposar para que la sosa elimine el positiv que ha sido atacado por los rayos UV. Una vez que la sosa ha revelado el circuito, se comprueba que el centrado ha sido correcto y se introduce al acido, en caso contrario, se limpia la placa, se positiva de nuevo y se volvería a empezar el proceso de fabricación desde este punto. En la etapa del acido, solo hay que introducir la placa en una cubeta con acido y este se encargara de eliminar todo el acido que no este cubierto por el circuito, en este punto hay que tener cuidado porque dependiendo de la proporción y la concentración del acido, la placa puede estar lista en unos pocos segundos o bien tardar mas. La placa en este momento ya esta lista para la inserción de los componentes, después de una comprobación para ver si el acido ha eliminado alguna pista. Para las placas de doble cara, el proceso solo varia en el punto del centrado, que habrá que centrar el circuito por las dos caras, antes de insolar. 6.1.2.- Fabricación de la placa de alimentación-comunicación PC-UC - Esquema eléctrico de la placa: 28

Colocación de los componentes: 29

Cara de pistas 30

Cara de componentes: En esta placa se ha puesto una parte de cobre( zona marcada en rojo), para que sirva como disipador, para el regulador LM350K 31

6.1.3.- Fabricación de la placa de potencia. - Esquema eléctrico de la placa. Colocación de los componentes: 32

Cara de pistas bottom copper: 33

Cara de pistas top copper: 34

6.1.3.- Fabricación de la placa de control. - Esquema eléctrico de la placa. Colocación de los componentes: 35

Cara de pistas bottom copper: 36

Cara de pistas top copper: 37

7.- Fabricación de la carrocería. S E R V O S E R V O El robot cuenta con dos bases esta es la inferior. Con la colocación de los motores y los servos de acción. Se pueden observar cuatro recortes cuadrados en los cuatro vértices, aquí van colocados los sensores CNY70. El servo de acción delantero cuenta con una apertura para que el brazo se pueda acoplar fácilmente sin que se salga de las medidas obligatorias. La base que va situada en la parte media es en la que van colocados los sensores de distancia GP2D12. y los servos que servirán como motores. Estos servos están trucados ya que pueden realizar el giro completo. 38

39

8.- Listado de precios. 8.1.-Placa de fuente de alimentación-comunicación PC-UC 2 Resistencias Cantidad: Referencia: Valor: Precio: 1 R1 220 0.1 1 R38 240 0.1 10 Condensadores Cantidad: Referencia: Valor: Precio: 1 C1 2200uF 0.5 3 C2, C4, C9 100nF 0.05 1 C3 220uF 0.05 4 C5-C8 1uF 0.05 1 C15 10uF 0.05 2 circuitos integrados Cantidad: Referencia: Valor: Precio: 1 U1 LM350K_JOAN 7 1 U2 MAX232_JOAN 2 4 Diodos Cantidad: Referencia: Valor: Precio: 3 D1, D2, D4 1N4007_JOAN 0.05 1 D3 LED-GREEN_JOAN 0.1 7 Miscellaneous Cantidad: Referencia: Valor: Precio: 1 BATERIA 9V 1 J1A CONN-H10_DANI 1 J11 CONN-D9M 1 JP1 BORNIER 2_JOAN 1 MASA3 BORNIER 1_JOAN 1 ON-OFF INTERRUPTOR_JOAN 1 RV1 5k 40

8.2.-Placa de potencia. 8 Resistencias cantidad Referencia Valor Precio 4 R12, R13, R20, 220 R21 4 R14, R15, R18, R19 10k 2 Condensadores cantidad Referencia Valor Precio 2 C11, C12 100nF 5 Circuitos integrados cantidad Referencia Valor Precio 4 U4-U7 OPTOCOUPLER-NPN 1 U10 L293B 8 Diodos cantidad Referencia Valor Precio 8 D5-D12 1N4007_JOAN 5 Miscellaneous cantidad Referencia Valor Precio 1 J2A CONN-H10 1 J3A BORNIER 2_JOAN 1 J15 BORNIER 1_JOAN 2 MO1, MO2 41

8.3.-Placa de control. 13 Resistencias Cantidad: Referencia Valor Precio 4 R4, R6, R8, R10 220 7 R5, R7, R9, R11, R22-10k R24 2 R16, R17 4K7 2 Condensadores Cantidad: Referencia Valor Precio 2 C13, C14 15pF 2 Circuitos integrados Cantidad: Referencia Valor Precio 1 U3 74HC14 1 U11 PIC16F876_JOAN 24 Miscellaneous Cantidad: Referencia Valor Precio 2 INFR1, INFR2 GP2D12 16X2 2 INICIO, PULSADOR_JOAN SENSOR_CONTACTO 2 J1, J2 CONN-SIL10_JOAN 2 J3, JP BORNIER 2_JOAN 6 J6-J9, JUMPER4, CONN_SIL3_JOAN PROGRM 4 J10, J12, J13, J22 CONN-SIL4 2 J14, J20 BORNIER 1_JOAN 1 RF1 CEBEK-C-0504_JOAN 2 SER1, SER2 SERVOMOTOR-PWM_JOAN 1 X1 CRYSTAL_JOAN 42

9.- Anexos -Pic16F876 http://www.microchip.com/wwwproducts/devices.aspx?ddocname=en010240 43