Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
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
0º
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