sumo cacahuete - pedrojoanmiro.webcindario.com · lm350k para la alimentación de los componentes...

43
Proyecto de desarrollo de un robot minisumo. IES Joan Miró. 1 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

Upload: vuhuong

Post on 29-Sep-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 1

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

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 2

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

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 3

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.

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 4

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.

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 5

DIAGRAMA EN BLOQUES.

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 6

ESQUEMA ELECTRICO.

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 7

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.

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 8

Terminales y esquema interno del RS232

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 9

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”

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 10

En caso de que las entradas estén al mismo nivel lógico, los motores se detendrán.

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.

“0”

“0”

“1”

“1”

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 11

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.

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 12

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, es un sensor de

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 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.

â

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 13

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º.

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.

0.6ms

1.45ms

2.03ms

90º

180º

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 14

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ó. 15

****************************Pruebamotores*****************************

#include <16F876A.h> // Este fichero contiene todas los driver para

pode interactuar con el micro.

#fuses XT,NOWDT

#use delay( clock = 4000000 ) // Reloj de 4 MHz

#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 //Motor Derecho

#BIT IN1 = 0x06.2 //Motor Derecho

#BIT IN3 = 0x05.4 //Motor Izquierdo

#BIT IN4 = 0X07.0 //Motor Izquierdo

void main(){

TRISB = 0B11100011; // Defines Puerto B como SALIDA=0 y ENTRADA =1 de

datos.

TRISA = 0B11101111; // Defines Puerto A como SALIDA=0 y ENTRADA =1 de

datos.

TRISC = 0B11111110; // Defines Puerto C como SALIDA=0 y ENTRADA =1 de

datos.

while(1){ //bucle infinito.

IN1= 0;

IN2= 0;

IN3= 0;

IN4= 0;

delay_ms(500); //Retardo

IN1= 0;

IN2= 1;

IN3= 0;

IN4= 1;

delay_ms(500);

IN1= 1;

IN2= 1;

IN3= 1;

IN4= 1;

delay_ms(500);

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 16

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.

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 17

*****************************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); // Posicionar el Servo de pa patilla RC2.

delay_ms(500);

TH=100;

Futaba_RC2(TH); // Posicionar el Servo de pa patilla RC2.

delay_ms(500);

}else;

}

}

}

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.

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 18

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(){

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 19

TRISB = 0B11110011; // Defines Puerto B como SALIDA=0 y ENTRADA =1 de datos.

TRISA = 0B11101111; // Defines Puerto A como SALIDA=0 y ENTRADA =1 de datos.

TRISC = 0B11111110; // 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;

}

}

}

5.1.4.- Programa sensores GP2D12

Para testear estos sensores se han hecho varios programas, primero cada sensor por

separado y luego en conjunto.

Esta parte esta

comentada, ahora

estan a prueba los

sensores delanteros

que son RB7 y RB5

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 20

************************************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

NO

SI

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 21

#BIT IN1 = 0x06.2 //Derecho

#BIT IN3 = 0x05.4 //Izquierdo

#BIT IN4 = 0X07.0 //Izquierdo

//*******************************PROGRAMA

PRINCIPAL**************************************************************************

********

void main(){

int16 q;

float d,

v;

TRISB = 0B11100011; // Defines Puerto B como SALIDA=0 y ENTRADA =1 de

datos.

TRISC = 0B11111110; // Defines Puerto C como SALIDA=0 y ENTRADA =1 de

datos.

setup_adc_ports(0); // Seleccionamos el Puerto A como entradas Analogicas. Mirar

ADCON1.

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 (;;) // Bucle infinito.

{

set_adc_channel(0); // HabilitaciOn canal 0 "AN0"

delay_ms(20); // Retardo de 20uS necesaria para respetar el tiempo de Adquisicion

Tad.

q = read_adc(); // Lectura canal 0 "AN0"

v = (5.0 * q) / 1024.0; // 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ó. 22

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);

}

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 23

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.

//************************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.

SI SI

NO

NO

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 24

#BYTE portB = 0x06 // PORTB en 06h.

#BIT TA4 = 0x85.4 // TRISA en 85h.

#BIT IN2 = 0x06.3 //Derecho

#BIT IN1 = 0x06.2 //Derecho

#BIT IN3 = 0x05.4 //Izquierdo

#BIT IN4 = 0X07.0 //Izquierdo

//*******************************PROGRAMA

PRINCIPAL**************************************************************************

********

void main(){

int16 q;

float d,

v;

TRISB = 0B11100011; // Defines Puerto B como SALIDA=0 y ENTRADA =1 de datos.

TRISC = 0B11111110;

setup_adc_ports(0); // Seleccionamos el Puerto A como entradas Analogicas. Mirar

ADCON1.

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 (;;) // Bucle infinito.

{

set_adc_channel(0); // HabilitaciOn canal 0 "AN0"

delay_ms(20); // Retardo de 20uS necesaria para respetar el tiempo de Adquisicion

Tad.

q = read_adc(); // Lectura canal 0 "AN0"

v = (5.0 * q) / 1024.0; // 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); // HabilitaciOn canal 0 "AN1"

delay_ms(20); // Retardo de 20uS necesaria para respetar el tiempo de Adquisicion

Tad.

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 25

q = read_adc(); // Lectura canal 0 "AN1"

v = (5.0 * q) / 1024.0; // 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.

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 26

//********************************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 //Derecho

#BIT IN1 = 0x06.2 //Derecho

#BIT IN3 = 0x05.4 //Izquierdo

#BIT IN4 = 0X07.0 //Izquierdo

//*******************************PROGRAMA

PRINCIPAL**************************************************************************

********

void main(){

int16 q;

float d,

v;

TRISB = 0B11100011; // Defines Puerto B como SALIDA=0 y ENTRADA =1 de datos.

TRISC = 0B11111110;

setup_adc_ports(0); // Seleccionamos el Puerto A como entradas Analogicas. Mirar

ADCON1.

setup_adc(ADC_CLOCK_INTERNAL); // Fuente de reloj RC interno.

TA4 = 0;

for (;;) // Bucle infinito.

{

set_adc_channel(0); // HabilitaciOn canal 0 "AN0"

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 27

delay_ms(20); // Retardo de 20uS necesaria para respetar el tiempo de Adquisicion

Tad.

q = read_adc(); // Lectura canal 0 "AN0"

v = (5.0 * q) / 1024.0; // 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); // HabilitaciOn canal 0 "AN1"

delay_ms(20); // Retardo de 20uS necesaria para respetar el tiempo de Adquisicion

Tad.

q = read_adc(); // Lectura canal 0 "AN1"

v = (5.0 * q) / 1024.0; // 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.

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 28

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:

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 29

Colocación de los componentes:

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 30

Cara de pistas

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 31

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ó. 32

6.1.3.- Fabricación de la placa de potencia. - Esquema eléctrico de la placa.

Colocación de los componentes:

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 33

Cara de pistas bottom copper:

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 34

Cara de pistas top copper:

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 35

6.1.3.- Fabricación de la placa de control.

- Esquema eléctrico de la placa.

Colocación de los componentes:

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 36

Cara de pistas bottom copper:

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 37

Cara de pistas top copper:

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 38

7.- Fabricación de la carrocería.

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.

S

E

R

V

O

S

E

R

V

O

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 39

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 40

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

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 41

8.2.-Placa de potencia.

8 Resistencias

cantidad Referencia Valor Precio

4

R12, R13, R20, R21

220

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

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 42

8.3.-Placa de control.

13 Resistencias

Cantidad: Referencia Valor Precio

4 R4, R6, R8, R10 220

7

R5, R7, R9, R11, R22-R24

10k

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, SENSOR_CONTACTO

PULSADOR_JOAN

2 J1, J2 CONN-SIL10_JOAN

2 J3, JP BORNIER 2_JOAN

6

J6-J9, JUMPER4, PROGRM

CONN_SIL3_JOAN

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

Proyecto de desarrollo de un robot minisumo.

IES Joan Miró. 43

9.- Anexos

-Pic16F876…………………………

http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010240