Sunteți pe pagina 1din 43

SUMO _ CACAHUETE

Departamento de Electricidad-Electrnica
Ciclo Superior de Desarrollo de Productos Electrnicos

Alumno: Ignacio Daz Daz-Regan.

Profesores: Pedro Alonso Sanz Alfonso Garca Gallego Juan Dongil Garca Instituto: I.E.S. Joan Mir Localidad: San Sebastin de los Reyes Curso: 2007/2008

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

INDICE

1.- Introduccin 3 2.- Diagrama en bloques del robot 4 3. Esquema elctrico del robot 5 4.- Anlisis de los bloques 7 4.1.-Placa de adaptador de seales PC-UC Alimentacin 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 accin. 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 bsico. 25 6.- Fabricacin de circuitos impresos 27 6.1.- Explicacin de la fabricacin 27 6.1.2.- Fabricacin de la placa de alimentacin-Comunicacin PC-UC 6.1.3.- Fabricacin de la placa de potencia. 6.1.3.- Fabricacin de la placa de control. 7.- Fabricacin de la carrocera. 8.- Listado de precios. 8.1.-Placa de fuente de alimentacin-Comunicacin PC-UC 8.2.-Placa de potencia. 8.3.-Placa de control. 9 Anexos

28 32 35 38 40 40 41 42 43

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

1.- Introduccin

Este proyecto consiste en fabricar un robot capaz de luchar con otro de forma autnoma en un tatami circular. El robot no podr superar unas dimensiones que sern 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 crculo, sensores CNY70 que a travs de un diodo emisor de luz y un fototransistor detectan la diferencia del blanco y el negro. Estos sensores se comentarn 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 mtodo har que el giro sea ms rpido y en el sitio.

Estos movimientos se usarn para el desplazamiento normal del robot y como maniobra de escape ante algn 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 dems componentes como sea necesario para llevar a cabo el programa que se le ha cargado. En esta placa tambin 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 seal. La placa intermedia es la de potencia, esta tiene los componentes necesarios para poder utilizar los motores de una manera eficaz, protege a las dems placas de posibles corrientes inversas y se encarga de llevar a los motores la informacin para que giren en el sentido que se requiera. La ultima placa, es la fuente de alimentacin y comunicacin con el PC. La fuente de alimentacin se encarga de sacar las tensiones necesarias para alimentar los dems placas y generar la que denominaremos tensin de potencia que es la que alimenta a los motores. La funcin de la parte de comunicacin con el PC es la de poder cargar el programa que previamente se ha desarrollado en el ordenador, mediante una comunicacin utilizando la interfaz RS232.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

Todas las placas de las que consta el robot y cada componente que se incluye en ellas sern 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.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

DIAGRAMA EN BLOQUES.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

ESQUEMA ELECTRICO.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

4.- Anlisis de los bloques. 4.1.-Placa de adaptador de seales PC-UC Alimentacin.

En esta placa se encuentran dos partes del robot, una es la de alimentacin y otra es la de comunicacin con el PC. La parte de alimentacin se encarga de estabilizar la tensin de la batera y de generar una tensin de 5 voltios a travs de un regulador LM350K para la alimentacin de los componentes digitales. El primer componente que se encuentra en la parte de alimentacin despus del interruptor, es el diodo D1, este encarga de impedirle paso de la corriente en caso de que se invierta la polaridad de la batera. Despus del diodo se lleva la alimentacin directamente los motores ya que su tensin nominal son 9 voltios. Tanto el C3 como el C1 son condensadores que rectifican la seal para hacerla mas lineal, y evitar que la tensin de alimentacin 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 tensin 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 tensin la regula por un potencimetro que se encuentra en su patilla de referencia. Esta resistencia ajustable, RV1, al regular esta tensin de referencia hace que el regulador deje salir ms o menos tensin 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 tensin de referencia se generen picos de tensin que puedan enviar lecturas errneas al LM350K. Los diodos D2 y D4 estn para proteger al regulador de tensin de posibles tensiones inversas. En la parte de la comunicacin con el PC el componente principal y casi nico es el integrado MAX232, que se encarga de la conversin 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 tensin de 5v que es un 1 lgico en TTL a -10v que es el equivalente a otro 1 lgico en RS232.
Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

Terminales y esquema interno del RS232

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

El conector J1A es el que comunica con la placa de control llevndole las tensiones que son necesarias para alimentar los componentes. El JP1 lleva directamente la tensin 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 estn conectados los motores respectivamente, el motor girara en un sentido y si se invierten los valores lgicos, el motor cambiar el sentido de giro. Este ejemplo lo explica:

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

En caso de que las entradas estn al mismo nivel lgico, los motores se detendrn.

Los integrados U4, U5, U6 y U7 son optoacopladores, estos componentes se encargan de aislar circuitos a travs de luz, tienen un fotodiodo en su interior que cuando se quiere enviar una seal positiva se polariza llevando un 0 al ctodo 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 daen elementos electrnicos 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.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

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 comunicacin PC-UC-Alimentacin como se dijo anteriormente. En esta placa podemos encontrar el bus I2C, en los conectores J10, J22, J12 y J13, es un sistema de comunicacin serie, en el que se pueden conectar distintos dispositivos de manera paralela. El microprocesador, se dirige a cada uno de ellos por una direccin que tienen asignada, as los datos que se envan por el bus I2C solo los reciben el microprocesador y el dispositivo al que se refiera esa direccin. Las caractersticas ms salientes del bus I2C son:

Se necesitan solamente dos lneas, la de datos (SDA) y la de reloj (SCL). Cada dispositivo conectado al bus tiene un cdigo de direccin seleccionable mediante software. Habiendo permanentemente una relacin Maestro/Eslavo entre el micro y los dispositivos conectados El bus permite la conexin de varios Maestros, ya que incluye un detector de colisiones. El protocolo de transferencia de datos y direcciones posibilita disear sistemas completamente definidos por software. Los datos y direcciones se transmiten con palabras de 8 bits.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

11

Todos los sensores estn conectados a la placa de control, porque necesitan estar cerca del microprocesador para que se meta la menor cantidad de ruido en la comunicacin. Si se metiese ruido en la transmisin podran llegar datos errneos al microprocesador y el robot podra 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. El sensor, da una tensin proporcional a ese ngulo a que varia entre 0 y 3v. En las caractersticas del sensor se incluye una curva con la que se pude hallar la distancia dependiendo de la tensin que devuelva el sensor. Con esta tensin se realiza una conversin analgico-digital y se lleva a un driver que mediante la puntualizacin de la curva caracterstica del sensor, devuelve la distancia a la que se encuentra el objeto. Este sensor tiene que llevar en paralelo con la alimentacin 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 direccin correcta. es un sensor de

En esta placa tambin esta conectado el sensor CN70, estn 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 interrupcin para no salirse del tatami. Este sensor funciona con un fotodiodo que emite una luz y rebota en el suelo, segn la reflexin 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.
Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

12

Dependiendo de la reflexin de la superficie, el fototransistor, tiene ms intensidad de base, si la reflexin es baja habr poca tensin, al entrar en la puerta inversora la salida tiene un nivel de tensin muy estable y muy definido. Lo nico que hay que tener en cuenta es que cambia el nivel lgico 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 autnomo. Para el modo teledirigido, el robot cuenta con una tarjeta receptora de datos. La Tarjeta Receptora de Datos CEBEK C-0504 es un circuito hbrido encargado de recibir va radiofrecuencia, los datos digitales procedentes del Mando. La seal digital tiene que tener una frecuencia entre 20 Hz < fo < 4 KHz. y una portadora de 433,92 MHz. Este circuito demodula la seal de AM obteniendo los datos transmitidos. En esta parte tambin se encuentran los dos servos d accin, estos servos irn colocados en la parte delantera y en la parte trasera, y actuarn como palancas para intentar hacer perder la traccin al oponente. Estos servos funcionan con PWM generada por el mismo microprocesador. La PWM es una seal en la que se vara 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 tambin 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 algn momento el robot se queda bloqueado en un bucle de un programa y no responde.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

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.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

14

****************************Pruebamotores*****************************
#include <16F876A.h> #fuses XT,NOWDT #use delay( clock = 4000000 ) #BYTE TRISC = 0x87 #BYTE portC = 0x07 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BYTE TRISA = 0x85 #BYTE portA = 0x05 #BIT IN2 = 0x06.3 #BIT IN1 = 0x06.2 #BIT IN3 = 0x05.4 #BIT IN4 = 0X07.0 // Este fichero contiene todas los driver para pode interactuar con el micro. // Reloj de 4 MHz //configuracin de TRISC en la direccin 87h. // PORTC en 07h. // configuracin de TRISB en la direccin 86h. // PORTB en 06h. // configuracin de TRISA en la direccin 85h. // PORTA en 05h. //Motor Derecho //Motor Derecho //Motor Izquierdo //Motor Izquierdo

void main(){ TRISB = 0B11100011; datos. TRISA = 0B11101111; datos. TRISC = 0B11111110; datos. // Defines Puerto C como SALIDA=0 y ENTRADA =1 de // Defines Puerto A como SALIDA=0 y ENTRADA =1 de // Defines Puerto B 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);

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

15

IN1= 1; IN2= 0; IN3= 1; IN4= 0; delay_ms(500); } }

5.1.2.- Prueba del servo de accin. Este programa ser una interrupcin, para una accin de ataque del robot. Cuando un sensor colocado en el brazo despegable se active este brazo subir para hacer que el robot oponente pierda traccin.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

16

*****************************Prueba_MOT_SER*************************************** #include <16F876A.h> #fuses XT,NOWDT #use delay( clock = 4000000 ) // Reloj de 4 MHz #BYTE TRISC = 0x87 #BYTE portC = 0x07 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BYTE TRISA = 0x85 #BYTE portA = 0x05 // TRISC en 87h. // PORTC en 07h. // TRISB en 86h. // PORTB en 06h. // TRISA en 85h. // PORTA en 05h.

#BIT RB1 = 0x06.1 #include <Servo_Futaba_10bit.c> void main(){ TRISB = 0B11110011; TRISC = 0B11111110; // Defines Puerto B como SALIDA=0 y ENTRADA =1 de datos.

while(1){ { if (rb1==0){ int16 TH;

//bucle infinito

Inicializacion_Futaba_RC2(); TH=57; Futaba_RC2(TH); delay_ms(500); TH=100; Futaba_RC2(TH); delay_ms(500); }else; } } }

// Inicializacin del Servo en RC2

// Posicionar el Servo de pa patilla RC2.

// Posicionar el Servo de pa patilla RC2.

5.1.3.- Prueba sensores CNY Los sensores CNY situados en los cuatro vrtices del robot, evitan que este se salga. El programa de prueba, es el siguiente.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

17

Para la prueba de sensores primero se testan los de la parte delantera y despus los de la parte trasera.

******************************************CNY************************************************************************************

#include <16F876A.h> #fuses XT,NOWDT #use delay( clock = 4000000 ) #BYTE TRISC = 0x87 #BYTE portC = 0x07 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BYTE TRISA = 0x85 #BYTE portA = 0x05 #BIT IN2 = 0x06.3 #BIT IN1 = 0x06.2 #BIT IN3 = 0x05.4 #BIT IN4 = 0X07.0 #BIT RB4 = 0x06.4 #BIT RB5 = 0x06.5 #BIT RB6 = 0x06.6 #BIT RB7 = 0x06.7

// Reloj de 4 MHz // TRISC en 87h. // PORTC en 07h. // TRISB en 86h. // PORTB en 06h. // TRISA en 85h. // PORTA en 05h.

//Derecho //Derecho //Izquierdo //Izquierdo //Sensor trasero dcho //Sensor delantero dcho . //Sensor trasero izqd. //Sensor delantero izqd.

void main(){ Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

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; }*/ if (RB7==1||RB5==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

5.1.4.- Programa sensores GP2D12 Para testear estos sensores se han hecho varios programas, primero cada sensor por separado y luego en conjunto.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

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 #BYTE portC = 0x07 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BIT TA4 = 0x85.4 // TRISC en 87h. // PORTC en 07h. // TRISB en 86h. // PORTB en 06h. // TRISA en 85h.

#BIT IN2 = 0x06.3

//Derecho Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

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; //Declaracin 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; } } }

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

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 TENSIN). //SE INTRODUCE UN VALOR DE TENSIN (v)TIPO FLOAT Y DEVUELVE UNA DISTANCIA (d)FLOAT.

//****************************** DECLARACIN DE FUNCIONES************************************************************************* ** float Gp2d12_v_d(float);

//****************************************FUNCIN 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); }

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

22

5.1.5 Programa de prueba de los dos sensores GP2D12 Este programa hace que el robot siga a un objeto centrndolo 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

//************************Conversin Analgica Digital de la Patilla AN0 ******************** #include <16F876A.h> #device adc=10 // Conversor Analgico 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 #BYTE portC = 0x07 #BYTE TRISB = 0x86 // TRISC en 87h. // PORTC en 07h. // TRISB en 86h. Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

23

#BYTE portB = 0x06 #BIT TA4 = 0x85.4

// PORTB en 06h. // 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); // Fuente de reloj RC interno. TA4 = 0; //Declaracin 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

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

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 bsico. Este programa hace que el robot gire sobre si mismo hasta que encuentre algn 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.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

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 #BYTE portC = 0x07 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BIT TA4 = 0x85.4 // TRISC en 87h. // PORTC en 07h. // TRISB en 86h. // PORTB en 06h. // 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"

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

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.- Fabricacin de circuitos impresos


6.1.- Explicacin de la fabricacin Todas las placas que se han realizado para el robot, han sido desarrolladas con el programa Proteus. Primero se ha partido de un esquema electrnico del circuito que se quera fabricar, ese circuito se ha pasado a PCB (del ingls Printed Circuit Board), tambin utilizando otra herramienta del programa Proteus, dos de las tres placas se han realizado a doble cara, la tercera, la placa de fuente de alimentacin- Comunicacin PC-UC, ha sido a simple cara.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

27

Para la fabricacin, se ha cortado una placa de cobre del tamao 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 lquido 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 volvera a empezar el proceso de fabricacin 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 proporcin y la concentracin 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 insercin de los componentes, despus de una comprobacin 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.- Fabricacin de la placa de alimentacin-Comunicacin PC-UC

Esquema elctrico de la placa:

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

28

Colocacin de los componentes:

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

29

Cara de pistas

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

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

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

31

6.1.3.- Fabricacin de la placa de potencia. Esquema elctrico de la placa.

Colocacin de los componentes:

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

32

Cara de pistas bottom copper:

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

33

Cara de pistas top copper:

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

34

6.1.3.- Fabricacin de la placa de control. Esquema elctrico de la placa.

Colocacin de los componentes:

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

35

Cara de pistas bottom copper:

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

36

Cara de pistas top copper:

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

37

7.- Fabricacin de la carrocera. S E R V O

S E R V O

El robot cuenta con dos bases esta es la inferior. Con la colocacin de los motores y los servos de accin. Se pueden observar cuatro recortes cuadrados en los cuatro vrtices, aqu van colocados los sensores CNY70. El servo de accin delantero cuenta con una apertura para que el brazo se pueda acoplar fcilmente 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 servirn como motores. Estos servos estn trucados ya que pueden realizar el giro completo.

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

38

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

39

8.- Listado de precios. 8.1.-Placa de fuente de alimentacin-Comunicacin PC-UC

2 Resistencias
Cantidad: Referencia: 1 R1 1 R38 Valor: 220 240 Precio: 0.1 0.1

10 Condensadores
Cantidad: 1 3 1 4 1 Referencia: C1 C2, C4, C9 C3 C5-C8 C15 Valor: 2200uF 100nF 220uF 1uF 10uF Precio:
0.5 0.05 0.05 0.05 0.05

2 circuitos integrados
Cantidad: Referencia: 1 U1 1 U2 Valor: LM350K_JOAN MAX232_JOAN Precio:
7 2

4 Diodos
Cantidad: Referencia: 3 D1, D2, D4 1 D3 Valor: 1N4007_JOAN LED-GREEN_JOAN Precio:
0.05 0.1

7 Miscellaneous
Cantidad: 1 1 1 1 1 1 1 Referencia: BATERIA J1A J11 JP1 MASA3 ON-OFF RV1 Valor: Precio: 9V CONN-H10_DANI CONN-D9M BORNIER 2_JOAN BORNIER 1_JOAN INTERRUPTOR_JOAN 5k

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

40

8.2.-Placa de potencia.

8 Resistencias
cantidad 4 4 Referencia R12, R13, R20, R21 R14, R15, R18, R19 Valor 220 10k Precio

2 Condensadores
cantidad 2 Referencia C11, C12 Valor 100nF Precio

5 Circuitos integrados
cantidad 4 1 Referencia U4-U7 U10 Valor Precio OPTOCOUPLER-NPN L293B

8 Diodos
cantidad 8 Referencia D5-D12 Valor 1N4007_JOAN Precio

5 Miscellaneous
cantidad 1 1 1 2 Referencia J2A J3A J15 MO1, MO2 Valor CONN-H10 BORNIER 2_JOAN BORNIER 1_JOAN Precio

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

41

8.3.-Placa de control.

13 Resistencias
Cantidad: Referencia 4 R4, R6, R8, R10 7 R5, R7, R9, R11, R22R24 2 R16, R17 Valor 220 10k 4K7 Precio

2 Condensadores
Cantidad: Referencia 2 C13, C14 Valor 15pF Precio

2 Circuitos integrados
Cantidad: Referencia 1 U3 1 U11 Valor 74HC14 PIC16F876_JOAN Precio

24 Miscellaneous
Cantidad: Referencia 2 INFR1, INFR2 2 INICIO, SENSOR_CONTACTO 2 J1, J2 2 J3, JP 6 J6-J9, JUMPER4, PROGRM 4 J10, J12, J13, J22 2 J14, J20 1 RF1 2 SER1, SER2 1 X1 Valor GP2D12 PULSADOR_JOAN CONN-SIL10_JOAN BORNIER 2_JOAN CONN_SIL3_JOAN CONN-SIL4 BORNIER 1_JOAN CEBEK-C-0504_JOAN SERVOMOTOR-PWM_JOAN CRYSTAL_JOAN Precio
16X2

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

42

9.- Anexos -Pic16F876 http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010240

Proyecto de desarrollo de un robot minisumo. IES Joan Mir.

43

S-ar putea să vă placă și