Vous êtes sur la page 1sur 87

PROYECTO: Velocista y coche teledirigido

Departamento de Electricidad y Electrnica Ciclo Formativo de Grado Superior: Desarrollo de Productos Electrnicos

Alumno: Profesores:

Daniel Garca Bravo Pedro Alonso Sanz Juan Dongil Garca Alfonso Garca Gallego I.E.S. Joan Mir San Sebastin de los Reyes 2008 / 2009

Instituto: Localidad: Curso:

Ciclo Superior de Desarrollo de Productos Electrnicos

ndice de contenido: 1.- Introduccin 2.- Diagrama en bloques del robot 3.- Esquema elctrico del robot 4.- Anlisis de los Bloques 4.1.- Placa de alimentacin-adaptador de seales PC-UC 7 4.1.1.- Fuente de alimentacin 4.1.1.1.- Esquema elctrico de la fuente de alimentacin 4.1.2.- Adaptador de seales PC-UC 4.1.2.1.- Esquema elctrico del adaptador de seales PC-UC 4.2.- Placa de control 4.2.1.- Esquema elctrico de la placa de control 4.3.- Placa de potencia 4.3.1.- Esquema elctrico de la placa de potencia 4.4.- Placa de sensores 4.4.1.- Esquema elctrico de la placa de sensores 4.5.- Mando 4.5.1.- Esquema elctrico del mando 5.- Esquema elctrico de simulacin con Proteus 5.1.- Simulacin del robot velocista 5.2.- Simulacin del robot teledirigido 6.- Programas 6.1.- Programas de prueba 6.1.2.- Programas de prueba de los leds 6.1.2.1.- Diagrama de flujo 6.1.2.2.- Programa 6.1.3.- Programas de prueba de los sensores 6.1.3.1.- Programas de prueba de los sensores OP1 Y OP2 6.1.3.1.1.- Diagrama de flujo 6.1.3.1.2.- Programa 6.1.3.2.- Programas de prueba de los sensores Op3 y Op4 6.1.3.2.1.- Diagrama de flujo 6.1.3.2.2.- Programa 6.1.3.3.- Programas de prueba de los sensores Op5 y Op6 6.1.3.3.1.- Diagrama de flujo 6.1.3.3.2.- Programa
Daniel Garca Bravo I.E.S. Joan Mir

5 7 8 9 9 9 10 10 11 12 13 14 17 18 19 20 21 22 22 23 24 24 24 24 25 26 26 26 27 29 29 29 31 31 31
2

Ciclo Superior de Desarrollo de Productos Electrnicos

6.1.3.4.- Programas de prueba de los sensores OP7 Y OP8 6.1.3.4.1.- Diagrama de flujo 6.1.3.4.2.- Programa 6.1.4.- Programas de pruebas de control de giro de los motores 6.1.4.1.- Programa de prueba del motor derecho 6.1.4.1.1.- Diagrama de flujo 6.1.4.1.2.- Programa 6.1.4.2.- Programa de prueba del motor izquierdo 6.1.4.2.1.- Diagrama de flujo 6.1.4.2.2.- Programa 6.1.5.- Programas de pruebas de control de velocidad de los motores 6.1.5.1.- Programa de control de velocidad del motor derecho 6.1.5.1.1.- Diagrama de flujo 6.1.5.1.2.- Programa 6.1.5.2.- Programa de control de velocidad del motor izquierdo 6.1.5.2.1.- Diagrama de flujo 6.1.5.2.2.- Programa 6.2.- Programas de funcionamiento del robot 6.2.1.- Programa del robot velocista 6.2.1.1.- Diagramas de flujo 6.2.1.2.- Programa 6.2.2.- Programa del coche teledirigido 6.2.2.1.- Diagrama de flujo 6.2.2.2.- Programa 7.- Fabricacin de placas 7.1.- Fabricacin de la fuente de alimentacin-adaptador de seales PC-UC 7.1.1.- Esquema elctrico 7.1.2.- Cara de componentes 7.1.3.- Cara de pistas bottom copper 7.2.- Fabricacin de la placa de control 7.2.1.- Esquema elctrico 7.2.2.- Componentes 7.2.3.- Cara de componentes y de pistas top copper 7.2.4.- Cara de pistas bottom copper 7.3.- Fabricacin de la placa de potencia 7.3.1.- Esquema elctrico 7.3.2.- Componentes 7.3.3.- Cara de componentes y de pistas top copper 7.3.4.- Cara de pistas bottom copper 7.4.- Fabricacin de la placa de sensores 7.4.1.- Esquema elctrico 7.4.2.- Medidas
Daniel Garca Bravo I.E.S. Joan Mir

33 33 33 35 35 36 36 37 38 38 39 39 40 40 43 43 43 46 46 46 50 61 61 61 62 63 63 64 65 66 66 67 68 69 70 70 71 72 73 74 74 75
3

Ciclo Superior de Desarrollo de Productos Electrnicos

7.4.3.- Componentes 7.4.4.- Cara de componentes y de pistas top copper 7.4.5.- Cara de pistas bottom copper 7. 5.- Fabricacin del mando a distancia 7.5.1.- Esquema elctrico 7.5.2.- Medidas 7.5.3.- Componentes 7.5.4.- Cara de componentes y de pistas top copper 7.5.5.- Cara de pistas bottom copper 8.- Carrocera 9.- Lista de Componentes y coste econmico 10.- Coste econmico total 11.- Referencias 12.- Anexos tcnicos

75 75 76 77 77 77 78 78 79 80 81 85 86 87

Daniel Garca Bravo I.E.S. Joan Mir

Ciclo Superior de Desarrollo de Productos Electrnicos

1.- Introduccin El proyecto consiste en disear y fabricar un robot velocista, de tal forma que sea capaz de seguir una lnea negra lo ms rpidamente sin salirse de ella, y adems que tenga la posibilidad de ser controlado con un mando a distancia, por medio de va radiofrecuencia.

El robot consta de una placa con la fuente de alimentacin y el adaptador de seales PC-UP, de la placa de control, la placa que controla los motores y la placa de sensores. Todas las placas, a excepcin de esta ltima, tienen las mismas medidas: 75 x 70. Se busca que tanto la fuente de alimentacin y el adaptador de seales PC-UP y la placa de potencia, sean comunes para todos los proyectos, haciendo que, en caso de que una placa se avere, sea posible sustiturila por otra de otro robot, sin tener que hacer una nueva. Las placas de control, donde se sita el PIC, y la placa de sensores, son diferentes en cada proyecto. El robot se controla por un PIC16F876A, en el cual se ubica el programa que hace que el robot funcione como un velocista. Por medio del cambio de un jumper, el robot pasa a funcionar como coche teledirigido. El robot consta de dos motores que son controlados por la placa de potencia, que a su vez son dependientes de la placa de control, dnde est situado el PIC. Mediante una seal de PWM hacemos que a nuestro robot le sea posible ir ms rpido o ms lento, segn las circunstancias que deseemos. Esto lo hacemos segn la velocidad que imprimamos a los dos motores. Si la velocidad es igual en ambos motores, el robot ir recto, si un motor gira ms rpido que otro, har que nuestro robot gire. Tambin conseguiremos determinar la direccin del coche, hacia delante o hacia atrs. Para poder hacer que nuestro robot sea velocista le instalaremos 8 sensores CNY70, para localizar la lnea o evitarla, segn deseemos con nuestro programa. Tambin corregiremos la posicin, por medio de la variacin de velocidad en los motores.

Daniel Garca Bravo I.E.S. Joan Mir

Ciclo Superior de Desarrollo de Productos Electrnicos

Para hacer que nuestro robot sea teledirigido, tenemos que crear una comunicacin entre el PIC y el mando, con el que controlamos nuestro robot. Dado que lo hacemos va radiofrecuencia, le instalamos un receptor y un mando a distancia que ser el emisor. Esto lo conseguimos por medio de dos mdulos: un emisor CEBEK C-0503 y un receptor CEBEC C-0504. Ambos trabajan en modulacin AM con una frecuencia portadora de 433,92 MHz que poseen un ancho de banda de 4 KHz. El lenguaje de programacin para los programas del robot se realiza mediante el lenguaje C. El software, utilizado para el desarrollo y fabricacin de nuestro robot, ha sido el programa Proteus, que nos permite simular el software y el hardware al mismo tiempo. A su vez nos es posible trabajar con C y desarrollar las placas de nuestro robot, con la posibilidad de realizar tambin la carrocera. Para cargar los programas desde el ordenador al PIC, se ha utilizado el grabador PICdownloader En todas las placas que se realizan, y a modo de facilitar la toma de medidas, se pone un conector de masa, este nos ayuda en la toma de medidas, colocando la punta de masa de nuestro, por ejemplo, polmetro; y la otra punta, para tomar medidas, y as poder trabajar solo con una mano.

Daniel Garca Bravo I.E.S. Joan Mir

Ciclo Superior de Desarrollo de Productos Electrnicos

2.- Diagrama en bloques del robot

Daniel Garca Bravo I.E.S. Joan Mir

Ciclo Superior de Desarrollo de Productos Electrnicos

3.- Esquema elctrico del robot

Daniel Garca Bravo I.E.S. Joan Mir

Ciclo Superior de Desarrollo de Productos Electrnicos

4.- Anlisis de los bloques 4.1.- Placa de alimentacin-adaptador de seales PC-UC En esta placa se sita la parte que distribuye la tensin necesaria para el funcionamiento de todos los integrados, sensores y para los motores. Tambin esta en esta placa la parte que sirve para cargar programas a nuestro PIC, por medio del integrado MAX 232. 4.1.1.- Fuente de alimentacin La fuente de alimentacin es un circuito que se encarga de obtener una tensin de 5V continua a partir de una tensin de entrada de aproximadamente 9V. Para realizar esto nos serviremos del regulador de tensin LM350K. Este integrado es capaz de regular la tensin de salida de 3 a 35 voltios. Tambin obtenemos una tensin de 9 voltios aproximadamente, para alimentar a los motores, pero estos no los obtenemos a partir del LM350K. Como se puede observar en el esquema elctrico de la fuente, C1 y C3, son condensadores de filtrado de la seal, que se encargan de eliminar la parte alterna de la tensin, para hacerla lo ms continua posible. Los condensadores C2 y C4, por su parte, se encargan de filtrar las posibles seales que el circuito absorba, ya que las pistas de la placa actan como una antena y estos condensadores filtran esas seales, llevndolas a masa. El diodo D1 tiene la misin de proteger el circuito en caso de invertir la polaridad de la batera. El diodo D2 sirve para proteger el LM350K, para hacer que las tensiones que entran por la salida pasen por el diodo hasta la entrada del LM350K, evitando as que se introduzcan por la salida del integrado. El diodo D4 se utiliza para proteger el LM350K, en caso de que hayamos conectado la batera a la salida de 5 voltios, el polo positivo a la masa y el polo negativo a la salida de 5 voltios. Y el D3, es un diodo led y nos indica que nuestra tiene tensin a la salida, va acompaado con su resistencia correspondiente, R1; para limitar la corriente que pase por el diodo y evitar que se avere. La resistencia R38, el potencimetro RV1 y el condensador C15, son los que nos permiten hacer una fuente regulable de tensin. La R38 nos fija una corriente para el potencimetro. Con el potencimetro variamos la tensin de salida y con el condensador hacemos que, al variar la tensin de referencia, no vaya dando saltos, sino que vare lentamente. Entre la salida del LM350K y la masa tiene que existir la tensin de salida que hayamos regulado. Entre la patilla 3 y 1 del regulador de tensin hay una diferencia de potencial de 5 voltios y una cada de tensin en RV1 es la diferencia entre la salida regulada y la tensin entre la patilla 3 y 1 Pondremos dos conectores: J1A que es el conector encargado de llevar los 5 voltios, y su masa, necesarios para el funcionamiento de los integrados, el PIC y los sensores, tambin lleva las conexiones necesarias para comunicar el PC y el PIC y as poder cargar los programas, RC71 y RC61. El conector JP1 es el encargado de llevar los 9 voltios a los motores y al L298 directamente y con una masa, directa de la batera.

Daniel Garca Bravo I.E.S. Joan Mir

Ciclo Superior de Desarrollo de Productos Electrnicos

A la hora de fabricar la placa, hay que tener en cuenta que es necesario colocar un disipador al LM350K. La solucin adoptada es que el disipador sea el propio cobre de la placa que utilizamos, lo cual significa ahorrar en espacio y en materiales sin desperdiciar el cobre de la placa. Antes de conectar cualquier otra placa, debemos comprobar que a la salida haya 5 voltios aproximadamente, si no tenemos dicha tensin, podemos regularla por medio del potencimetro. 4.1.1.1.- Esquema elctrico de la fuente de alimentacin

VP => salida de 9 voltios. VDD3 => salida de 5 voltios. 4.1.2.- Adaptador de seales PC-UC Este circuito nos servir para cargar programas en el PIC a travs del integrado MAX232. Este integrado intercambia niveles de TTL a RS-232 y de RS-232 a TTL. Un 0 lgico es un 0 en RS-232 y un 1 lgico es un 1 en RS-232. Un 0 lgico en TTL es igual a 0v, en RS-232 es una tensin comprendida entre +3v y +12v. Un 1 lgico en TTL es igual a +5v y en RS-232 es una tensin comprendida entre -3v y -12v TTL 1 = +5v 0 = 0v RS-232 1 = -3v hasta -15v 0 = +3v hasta +15

Daniel Garca Bravo I.E.S. Joan Mir

10

Ciclo Superior de Desarrollo de Productos Electrnicos

4.1.2.1.- Esquema elctrico del adaptador de seales PC-UC

VP: 9 voltios VDD3: 5 voltios VCC: alimentacin del integrado MAX232 RC61: comunicacin PIC PI RC71: comunicacin PC - PIC

Daniel Garca Bravo I.E.S. Joan Mir

11

Ciclo Superior de Desarrollo de Productos Electrnicos

4.2.- Placa de control En esta placa est situado el microcontrolador PIC16F876A, que es el encargado del control del robot por medio de los programas que realicemos y que le carguemos. En nuestra placa de control el componente principal es el PIC. Este nos sirve para leer los datos que lleguen de los sensores por el conector J2 y, dependiendo de nuestro programa, actuar sobre los motores en el sentido de giro y su control de velocidad. Nuestro PIC trabaja a 1Mhz, esto se consigue mediante el cristal de cuarzo X1, que genera la frecuencia de trabajo actuando conjuntamente con los condensadores C12 y C13, variando la capacidad de estos ltimos consigue modificar la frecuencia de trabajo del PIC. Las resistencias R18 y R19, el condensador C14 y el pulsador de RESET, hacen que el PIC se resetee y empiece con el programa desde el principio. El JUMPER3 nos sirve para cargar el programa en el PIC a travs de un PC. Si se le cambia de posicin nos hace recibir los datos del receptor de radio frecuencia. En la posicin del jumper en RC7(BL) nos permite cargar programas y en la posicin de RC7(RF) hace que el PIC obedezca a las instrucciones que lleguen de la tarjeta de radiofrecuencia. El JUMPER4 nos ayuda a elegir el modo de funcionamiento, de acuerdo con la eleccin: si queremos que nuestro robot se comporte como un velocista o como un coche teledirigido. Este jumper posee un diodo led, RA; con su correspondiente resistencia limitadora de corriente, R17; que nos indica el modo de funcionamiento de nuestro robot. De tal modo que si el diodo se enciende en nuestro robot, es un coche teledirigido y si el led est apagado quiere decir que nuestro robot funciona como un velocista. En esta placa hay dos diodos leds: D13 y D15, que sirven para indicar la direccin del coche en modo coche teledirigido, aunque dependiendo de lo que queremos hacer podremos poner otras utilidades a los leds, como sealizar cuando lea lneas negras en modo velocista. Estos dos diodos van acompaados por sus respectivas resistencias limitadoras de corriente: R14 y R15. Tambin disponemos de un botn de inicio. Su funcin se basa en que, una vez situado el robot en modo velocista correctamente sobre la pista, pulsemos dicho botn y el robot empiece a funcionar. Pero tambin puede tener otras funciones, dependiendo del programa cargado en el PIC. Disponemos tambin de varios conectores BUS I2C: J4, J5, J6 y J7. Las patillas del PIC: RC3 y RC4, son las que utiliza para controlarlo. A la salida de estas dos patillas del PIC hay dos resistencias de 4.7K necesarias para el funcionamiento del BUS I2C. El receptor de datos AM, CEBEK-C-0504, es un circuito hbrido necesario para poder controlar el robot a travs de un mando a distancia. Es el encargado de recibir, va radiofrecuencia, los datos que llegan del mando a distancia.

Daniel Garca Bravo I.E.S. Joan Mir

12

Ciclo Superior de Desarrollo de Productos Electrnicos

El conector J1 es el que trae de la placa, de la fuente de alimentacin, los 5 voltios, la masa y las dos conexiones necesarias para poder comunicar el PIC con un PC. El conector J2 es el encargado de comunicar los sensores con el PIC y tambin lleva la alimentacin de 5 voltios y su masa. Y el conector J3 es el que comunica el PIC con la placa de potencia, que hace que el PIC controle el giro y la velocidad de los motores, este conector lleva su masa y sus 5 voltios. 4.2.1.- Esquema elctrico de la placa de control

VDD: 5 voltios RA0: conexin sensor - PIC RA1: conexin sensor - PIC RA2: conexin sensor - PIC RA3: conexin sensor - PIC RA4: conexin sensor - PIC RA5: conexin sensor - PIC RB0: jumper modo de funcionamiento RB1: inicio RB2: conexin PIC - diodo led D15 RB3: conexin PIC - diodo led D13 RB4: conexin PIC - optoacoplador U3 RB5: conexin PIC - optoacoplador U4
Daniel Garca Bravo I.E.S. Joan Mir

RB6: conexin PIC - optoacoplador U5 RB7: conexin PIC - optoacoplador U6 RC0: conexin sensor - PIC RC1: conexin PIC - optoacoplador U8 RC2: conexin PIC - optoacoplador U7 RC3: conexin BUS I2C RC5: conexin sensor - PIC RC4: conexin BUS I2C RC61: comunicacin PIC - PI RC7 (BL): comunicacin PC - PIC RC7 (RF): comunicacin PIC - Cebek Antena: receptor de los datos emitidos por el mando.

13

Ciclo Superior de Desarrollo de Productos Electrnicos

4.3.- Placa de potencia Esta placa se encarga de hacer posible el control de velocidad de los motores y de su correspondiente sentido de giro. Con el integrado L298 controlamos el sentido de giro y la velocidad de los motores. Las patillas 5 y 7, IN1 e IN2, se ocupan del sentido de giro del motor izquierdo. Los pines de entrada 10 y 12, IN3 e IN4, se encargan de controlar el giro del motor derecho. Los terminales 1 y 15, SENSA y SENSB, son las masas de la patilla 9. Las patillas 6 y 11, ENA y ENB, son activaciones para las salidas 2, 3, 13 y 14, OUT1, OUT2, OUT3 y OUT4; la patilla 9 VCC, es la alimentacin del integrado; la patilla 4, VS, es la alimentacin de los motores, y la patilla 8, es la masa. Los optoacopladores U3, U4, U5, U6, U7 y U8, sirven para separar la parte de potencia de la parte de control. Lo que separa la potencia de las seales es un haz de luz del diodo interno de los optoacopladores. Haciendo que en caso de avera en la parte de potencia no afecte a las partes encargadas de las seales. Por medio de los optoacopladores U3, U4, U5 e U6, controlamos el sentido de giro de los motores, U3 y U4 para el motor izquierdo; U5 y U6 para el control del motor derecho. Para el control de velocidad utilizamos los transistores Q1, Q2, Q3 y Q4, y los optoacopladores U7 y U8. Los transistores solo funcionan en corte y saturacin. U7, Q1 y Q4 controlan el motor izquierdo y U8, Q2 y Q3 controlan el motor derecho. Los motores son de corriente continua. Cada motor se protege por medio de cuatro diodos. Cuando los motores se paren, dichos diodos alivian la fuerza contraelectromotriz que puedan generar. Los condensadores C10 y C11, que estn situados en cada extremo de los motores, sirven para filtrar posibles ruidos que los motores produzcan. Son filtros paso bajo para rechazar el ruido. El filtro atena los ruidos generados por el motor a frecuencias superiores a 50 Hz. Para atacar a los transistores Q1, Q2, Q3 y Q4, dado que no sabemos con seguridad cual es la tensin necesaria para hacer que estos trabajen en corte o saturacin, con los JUMPER1 y JUMPER2, llevaremos 5 9 voltios. Tras realizar las pruebas de funcionamiento, los jumpers tienen que estar a 5 voltios para que el par Darlington funcione correctamente. Los motores giran siempre y cuando se haya activado las entradas y salidas del L298, y que exista una diferencia de potencial en los extremos de estos, suficiente para que giren. En caso de que las tensiones en los extremos del motor sean iguales este no gira. Se recomienda poner los chasis de los motores a masa para filtrar los ruidos que generan los motores en el espectro de radiofrecuencia, creando una Jaula de Faraday. As evitaremos que se produzcan ruidos en los cables o en las pistas prximas de nuestros circuitos.
Daniel Garca Bravo I.E.S. Joan Mir 14

Ciclo Superior de Desarrollo de Productos Electrnicos

Para controlar la velocidad de los motores lo hacemos con la PWM. La PWM consiste en hacer que el ciclo de trabajo de una seal cuadrada sea mas o menos ancho, podemos hacer que el ciclo de trabajo sea de un 90% para ir a mucha velocidad o de un 5% para ir lentos. Para explicar el control de giro de los motores, nos ayudaremos del esquema inferior. Estamos controlando el sentido de giro del motor izquierdo por medio de los optoacopladores U3 y U4. A GIRO1 le llevamos un 1 lgico por medio del PIC, as hacemos que el diodo del optoacoplador no luzca, el fototransistor trabaja en corte. Como el fototransistor est en corte, la tensin que proviene de R2 no pasa del colector al emisor para ir a masa, y por lo tanto va hacia el terminal de entrada del L298, que se introduce un 1 lgico, lo que supone que por la patilla OUT1 salgan 9 voltios. Por GIRO2, introducimos un 0 lgico, el diodo emisor de infrarrojos luce y ataca la base del fototransistor de U4, este empieza a trabajar en saturacin y lleva la tensin VDD, la que procede de R4, en vez de a la patilla 7 del L298, la lleva a masa por medio del transistor interno del integrado U4. Hemos llevado un 0 lgico a la patilla 7 del L298. Ya tenemos un 1 en la patilla 5 y un 0 en la 7 del L298, esto hace que en la patilla de salida 2 haya 9 voltios y en la patilla de salida 3 haya 0. Lo cual significa que, en los extremos del motor, haya una diferencia de potencial y el motor gira a un lado.

El control de giro del motor derecho tiene la misma filosofa que el control de giro del motor izquierdo, hacemos que los transistores de los integrados U5 y U6 trabajen en corte y saturacin para llevar un 0 1 lgico a las patillas correspondientes del L298.

Demostracin del giro del motor.

Daniel Garca Bravo I.E.S. Joan Mir

15

Ciclo Superior de Desarrollo de Productos Electrnicos

Para controlar la velocidad de los motores, actuaremos sobre las patillas 1 y 15 del integrado L298. En el esquema inferior se explica el control de velocidad. La entrada Velocidad es la conexin que lleva la PWM generada por el PIC. Cuando por Velocidad hay un nivel bajo de la seal de PWM; el diodo emisor del optoacoplador U8; lucir, atacando la base del fototransistor, este se satura y hace que la tensin de base de Q2 vaya a masa. Q2 se pone en corte y Q4 tambin y la patilla 1 del L298, no se pone a masa. Por lo tanto el motor no puede girar, al no existir circulacin de corriente. Si la patilla 1 y 15 del L298 no esta a masa, el motor no puede realizar ningn giro. Si por el contrario por la entrada Velocidad llega un nivel alto de la seal de PWM; el diodo de U8 no luce, el fototransistor interno de U8 trabaja en corte y por lo tanto la tensin de base del transistor Q2 no va a masa por el optoacoplador, sino que ataca la base de Q2, trabajando en saturacin, inmediatamente despus se ataca la base del transistor Q4 haciendo que tambin trabaje en saturacin, por lo tanto la patilla 1 y 15 del L298 esta a masa, haciendo posible el giro del motor.

En la siguiente tabla se hace un resumen del control de giro y del control de velocidad. Entradas al Inversor L298N Velocidad 0 1 1 1 1 SENSA alta impedancia 0v 0v 0v 0v GIRO1 GIRO2 X X 0 0 0 1 1 1 0 1 Salidas del Inversor L298N OUT1 OUT2 1v 1v 1v 9v 1v 9v 1v 1v Motor Parado Parado Sentido antihorario Sentido horario Parado

Demostracin del control de velocidad de un motor. Explicacin de la PWM en la pagina 109.

Daniel Garca Bravo I.E.S. Joan Mir

16

Ciclo Superior de Desarrollo de Productos Electrnicos

4.3.1.- Esquema elctrico de la placa de potencia

VDD: 5 voltios VP: 9 voltios U3: patilla RB4 del PIC U4: patilla RB5 del PIC

U5: patilla RB6 del PIC U6: patilla RB7 del PIC U8: patilla RC1 del PIC U7: patilla RC2 del PIC

Daniel Garca Bravo I.E.S. Joan Mir

17

Ciclo Superior de Desarrollo de Productos Electrnicos

4.4.- Placa de sensores En esta placa estn situados lo sensores del robot velocista. Los sensores utilizados son los CNY70. Las seales que salen de los sensores, llegan a nuestro PIC, para poder controlar el robot mediante el programa que nosotros previamente hayamos cargado en el PIC. Otros componentes que se encuentran en esta placa son los integrados 74HC14, inversores de seales; si a la entrada tenemos un 0 lgico, a la salida tendremos un 1 lgico. Tambin son conocidos como Trigger Smith, ya que a su vez es un circuito comparador, ya que nos vale para asegurarnos de que una superficie gris clara pase a blanca y una superficie gris oscura sea negra. Podemos decir que los utilizamos para acondicionar la seal del sensor. Las resistencias R23, R25, R27, R29, R31, R33, R35, R37; se encargan de dar tolerancia al sensor. Variando el valor de estas resistencias se puede separar ms o menos los sensores de la superficie. El valor de las resistencias puede variar desde 10k hasta 47k. En los esquemas elctricos se ha puesto el valor de estas resistencias de 10k, pero hay que ir probando que valor es el definitivo. Los sensores CNY70 tienen en su interior un diodo emisor de infrarrojos y un fototransistor. Cuando el diodo emita ms luz hacia la base del fototransistor este, a su vez, conducir ms.

El funcionamiento de este sensor es parecido al funcionamiento de los optoacopladores. Se basa en atacar la base de un fototransistor por medio de un emisor de luz, al hacer que el fototransistor trabaje en corte o saturacin. El emisor emite un haz de luz, si esta luz se refleja, rebota sobre una superficie, se ataca a la base del fototransistor y hace que el transistor trabaje en saturacin. A medida que la superficie refleje mas la luz, se producir una mayor corriente en la base del fototransistor, y as se obtiene una mayor tensin a la salida. Esto nos es muy til para digitalizar las seales que obtengamos de los sensores, para diferenciar la superficie oscura de una clara.

Daniel Garca Bravo I.E.S. Joan Mir

18

Ciclo Superior de Desarrollo de Productos Electrnicos

Cuando la superficie es blanca, el haz de luz se refleja y ataca a la base del fototransistor, este se satura, llevando la tensin del colector a masa, e introduciendo un 0 lgico a la entrada del 74HC14, y a la salida tenemos un 1 lgico, que es lo que le llega al PIC. Cuando la superficie es negra, la luz es absorbida por la superficie, y hace que el transistor trabaje en corte. Esto nos har tener 1 a la entrada del 74HC14, o sea, que a la salida hay un 0 lgico. Superficie Negra Blanca Estado lgico antes de la Trigger Smith 1 0 Estado lgico despus de la Trigger Smith 0 1

4.4.1.- Esquema elctrico de la placa de sensores

VDD: 5 voltios OP1: conexin sensor - PIC OP2: conexin sensor - PIC OP3: conexin sensor - PIC
Daniel Garca Bravo I.E.S. Joan Mir

OP4: conexin sensor - PIC OP5: conexin sensor - PIC OP6: conexin sensor - PIC OP7: conexin sensor - PIC OP8: conexin sensor - PIC
19

Ciclo Superior de Desarrollo de Productos Electrnicos

4.5.- Mando El mando no forma parte del proyecto por falta de tiempo, aunque se deja abierta la esta posibilidad para que en cualquier momento se pueda adjuntar. El mando se fabrica aparte de las placas de nuestro robot, ya que este es un complemento del proyecto. El mando tiene la misin de transmitir un cdigo asociado a cada pulsador, para poder controlar el robot. El microcontrolador PIC16F876A lee los pulsadores y transmite los cdigos va serie a la tarjeta transmisora de radiofrecuencia, a una velocidad de 1562,5 baudios por segundo. Es una transmisin asncrona: 1 bit de comienzo, 8 bit de datos, 1 bit de parada sin bit de paridad. El microcontrolador PIC16F876A trabaja a una frecuencia de 4 MHz y ejecuta una instruccin en 1uS. La alimentacin procede de un regulador 7805 que suministra 5 voltios continuos a todos los circuitos. El transistor Q1E tiene la misin de deshabilitar la tarjeta de radiofrecuencia cuando esta no transmite datos. La tarjeta emisora CEBEK C-0503 es un circuito hbrido encargado de transmitir va radiofrecuencia, los datos digitales procedentes del microprocesador. Se modula en AM cuya frecuencia portadora es de 433,92 MHz. Estas seales salen por la patilla 11 del emisor de datos CEBEK C-0503. El diodo led D7E nos indica que el mando est encendido, tiene su correspondiente resistencia limitadora de corriente. El resto de los leds se iluminan cuando activamos su pulsador correspondiente. El diodo D6E tiene la misin de proteger el circuito en cado de invertir la batera. Los condensadores C1 y C2 son filtros.

Daniel Garca Bravo I.E.S. Joan Mir

20

Ciclo Superior de Desarrollo de Productos Electrnicos

4.5.1.- Esquema elctrico del mando

CON1E: salida de los datos emitidos VDD: 5 voltios

Daniel Garca Bravo I.E.S. Joan Mir

21

Ciclo Superior de Desarrollo de Productos Electrnicos

5.- Esquema elctrico de simulacin con Proteus 5.1.- Simulacin del robot velocista

Daniel Garca Bravo I.E.S. Joan Mir

22

Ciclo Superior de Desarrollo de Productos Electrnicos

5.2.- Simulacin del robot teledirigido

Daniel Garca Bravo I.E.S. Joan Mir

23

Ciclo Superior de Desarrollo de Productos Electrnicos

6.- Programas La programacin tiene una parte importante en nuestro robot, ya que, por muy bien diseado que est, sin programas no haremos nada. Los programas primero se simulan en el ISIS y tienen el primer objetivo de ver que, las diferentes partes del robot, funcionan adecuadamente. Una vez que se haya visto que funciona correctamente, se podr pasar a programar ya el funcionamiento del robot. 6.1.- Programas de prueba Por medio de estos programas se puede averiguar si hay fallos en los componentes que monta nuestro robot o en las conexiones electrnicas. 6.1.2.- Programas de prueba de los leds Este programa tiene como funcin probar el correcto funcionamiento de los dos diodos leds que hay en la placa de control. Para encender los diodos leds necesitaremos sacar, por la patilla del PIC que est conectado, al diodo led un 0 lgico. Para apagar el diodo led necesitaremos un 1 lgico. 6.1.2.1.- Diagrama de flujo

Daniel Garca Bravo I.E.S. Joan Mir

24

Ciclo Superior de Desarrollo de Productos Electrnicos

6.1.2.2.- Programa // Pruebas de los leds // ************************ Directivas de procesado ************************ // (Controlan la conversin del programa a cdigo mquina por parte del compilador)

#include <16F876A.h>

// Incluye el fichero 16F876A.h al programa tiene // que estar en la misma carpeta del programa // define funciones, patillas y registros. // Define la palabra de configuracin del // microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro // guardin Wathdog // Define la frecuencia del reloj de 1 MHz // TRISB en 86h. // PORTB en 06h. // RB2 en 0x06 patilla 2. // RB3 en 0x06 patilla 3.

#fuses XT,NOWDT

#use delay( clock = 1000000 ) #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BIT rb2 = 0x06.2 #BIT rb3 = 0x06.3

// ****************** Funcin principal o programa principal ****************** void main() { TRISB = 0B00000000; // Defines Puerto B como salida // de datos. // Bucle infinito rb2 = 0 ; rb3 =0; delay_ms(500); rb2 = 1 ; rb3 =1; delay_ms(500); } }
Daniel Garca Bravo I.E.S. Joan Mir

while(1){

// Enciendo el led D14 // Enciendo el led D13 // Retardo de 500 ms // Apago el led D14 // Apago el led D13 // Retardo de 500 ms // Cierro el While // Cierro el programa
25

Ciclo Superior de Desarrollo de Productos Electrnicos

6.1.3.- Programas de prueba de los sensores Estos programas tienen la funcin de comprobar el correcto funcionamiento de todos los sensores de nuestro robot. Tambin comprobaremos que la comunicacin entre el PIC y los sensores son las correctas y que no hay fallos de comunicacin. Comprobaremos los sensores de dos en dos y nos ayudaremos de los diodos led que hay en la placa de control, para controlar si los sensores y sus respectivas comunicaciones son correctas. Cuando el sensor lea una superficie blanca llegar un 0 lgico al PIC, despus del integrado Trigger Smith. Cuando el sensor lea una superficie negra llegar un 1 lgico al PIC. Superficie Negra Blanca Estado lgico que llega al PIC 0 1

6.1.3.1.- Programas de prueba de los sensores OP1 Y OP2 Este programa tiene la funcin de comprobar el correcto comportamiento de los sensores OP1 y OP2. 6.1.3.1.1.- Diagrama de flujo

Daniel Garca Bravo I.E.S. Joan Mir

26

Ciclo Superior de Desarrollo de Productos Electrnicos

6.1.3.1.2.- Programa // Pruebas de los sensores OP1 y OP2 // ************************ Directivas de procesado ************************ // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include <16F876A.h> // Incluye el fichero 16F876A.h al programa tiene // que estar en la misma carpeta del programa // define funciones, patillas y registros.

#fuses XT,NOWDT

// Define la palabra de configuracin del // microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro // guardin Wathdog // Define la frecuencia del reloj de 1 MHz // TRISA en 85h. // PORTB en 05h. // RA0 en 0x05 patilla 0 // TRISB en 86h. // PORTB en 06h. // RB2 en 0x06 patilla 2. // RB3 en 0x06 patilla 3. // TRISC en 87h. // PORTC en 07h. // RC0 en 0x07 patilla 0

#use delay( clock = 1000000 ) #BYTE TRISA = 0x85 #BYTE portA = 0x05 #BIT ra0 = 0x05.0 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BIT rb2 = 0x06.2 #BIT rb3 = 0x06.3 #BYTE TRISC = 0x87 #BYTE portC = 0x07 #BIT rc0 = 0x07.0

// ****************** Funcin principal o programa principal ****************** void main() { TRISA = 0B11111111; TRISB = 0B00000000;

// Defines Puerto A como entrada de datos // Defines Puerto B como salida // de datos. // Defines rc6, rc2 y rc1 como salidas y rc7, // rc5 y rc0 como entradas; rc4 y rc3 no // tocar

TRISC = 0B10110001;

Daniel Garca Bravo I.E.S. Joan Mir

27

Ciclo Superior de Desarrollo de Productos Electrnicos

while(1){ if (rc0 == 1)

// Bucle infinito // Si el sensor lee blanco ejecuta la // siguiente instruccin // Enciende el led D14 // Si el sensor lee negro, ejecuta la siguiente // instruccin rb2 = 1; } if (ra0 == 1) // Apaga el led D14 // Cierro el else // Si el sensor lee blanco ejecuta la // siguiente instruccin // Enciende el led D13 // Si el sensor lee negro, ejecuta la siguiente // instruccin rb3 = 1; } // Apaga el led D13 // Cierro el else // Cierro el while // Cierro el programa

rb2 = 0; else {

rb3 = 0; else {

} }

Daniel Garca Bravo I.E.S. Joan Mir

28

Ciclo Superior de Desarrollo de Productos Electrnicos

6.1.3.2- Programas de prueba de los sensores OP3 y OP4 Este programa tiene la funcin de comprobar el correcto comportamiento de los sensores OP3 y OP4. 6.1.3.2.1.- Diagrama de flujo

6.1.3.2.2.- Programa // Pruebas de los sensores OP3 y OP4 // ************************ Directivas de procesado ************************ // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include <16F876A.h> // Incluye el fichero 16F876A.h al programa tiene // que estar en la misma carpeta del programa // define funciones, patillas y registros.

#fuses XT,NOWDT

// Define la palabra de configuracin del // microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro // guardin Wathdog // Define la frecuencia del reloj de 1 MHz

#use delay( clock = 1000000 )

Daniel Garca Bravo I.E.S. Joan Mir

29

Ciclo Superior de Desarrollo de Productos Electrnicos

#BYTE TRISA = 0x85 #BYTE portA = 0x05 #BIT ra1 = 0x05.1 #BIT ra2 = 0x05.2 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BIT rb2 = 0x06.2 #BIT rb3 = 0x06.3

// TRISA en 85h. // PORTB en 05h. // RA1 en 0x05 patilla 1 // RA2 en 0x05 patilla 2 // TRISB en 86h. // PORTB en 06h. // RB2 en 0x06 patilla 2. // RB3 en 0x06 patilla 3.

// ****************** Funcin principal o programa principal ****************** void main() { TRISA = 0B11111111; TRISB = 0B00000000; while(1){ if (ra1 == 1) rb2 = 0; else { // Defines Puerto A como entrada de datos // Defines Puerto B como salida de datos // Bucle infinito // Si el sensor lee blanco ejecuta la // siguiente instruccin // Enciende el led D14 // Si el sensor lee negro, ejecuta la siguiente // instruccin rb2 = 1; } if (ra2 == 1) // Apaga el led D14 // Cierro el else // Si el sensor lee blanco ejecuta la // siguiente instruccin rb3 = 0; else { // Enciende el led D13 // Si el sensor lee negro, ejecuta la siguiente // instruccin rb3 = 1; } } } // Apaga el led D13 // Cierro el else // Cierro el while // Cierro el programa

Daniel Garca Bravo I.E.S. Joan Mir

30

Ciclo Superior de Desarrollo de Productos Electrnicos

6.1.3.3.- Programas de prueba de los sensores OP5 y OP6 Este programa tiene la funcin de comprobar el correcto comportamiento de los sensores OP5 y OP6. 6.1.3.3.1.- Diagrama de flujo

6.1.3.3.2.- Programa // Pruebas de los sensores OP5 y OP6 // ************************ Directivas de procesado ************************ // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include <16F876A.h> // Incluye el fichero 16F876A.h al programa tiene // que estar en la misma carpeta del programa // define funciones, patillas y registros.

#fuses XT,NOWDT

// Define la palabra de configuracin del // microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro // guardin Wathdog // Define la frecuencia del reloj de 1 MHz // TRISA en 85h.

#use delay( clock = 1000000 ) #BYTE TRISA = 0x85

Daniel Garca Bravo I.E.S. Joan Mir

31

Ciclo Superior de Desarrollo de Productos Electrnicos

#BYTE portA = 0x05 #BIT ra3 = 0x05.3 #BIT ra4 = 0x05.4 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BIT rb2 = 0x06.2 #BIT rb3 = 0x06.3

// PORTB en 05h. // RA3 en 0x05 patilla 3 // RA4 en 0x05 patilla 4 // TRISB en 86h. // PORTB en 06h. // RB2 en 0x06 patilla 2. // RB3 en 0x06 patilla 3.

// ****************** Funcin principal o programa principal ****************** void main() { TRISA = 0B11111111; TRISB = 0B00000000; while(1){ if (ra3 == 1) // Defines Puerto A como entrada de datos // Defines Puerto B como salida de datos // Bucle infinito // Si el sensor lee blanco ejecuta la // siguiente instruccin rb2 = 0; else { // Enciende el led D14 // Si el sensor no lee blanco, ejecuta la // siguiente instruccin rb2 = 1; } if (ra4 == 1) // Apaga el led D14 // Cierro el else // Si el sensor lee blanco ejecuta la // siguiente instruccin rb3 = 0; else { // Enciende el led D13 // Si el sensor no lee blanco, ejecuta la // siguiente instruccin rb3 = 1; } } } // Apaga el led D13 // Cierro el else // Cierro el while // Cierro el programa

Daniel Garca Bravo I.E.S. Joan Mir

32

Ciclo Superior de Desarrollo de Productos Electrnicos

6.1.3.4.- Programas de prueba de los sensores OP7 Y OP8 Este programa tiene la funcin de comprobar el correcto comportamiento de los sensores OP7 y OP8. 6.1.3.4.1.- Diagrama de flujo

6.1.3.4.2.- Programa // Pruebas de los sensores OP7 y OP8 // ************************ Directivas de procesado ************************ // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include <16F876A.h> // Incluye el fichero 16F876A.h al programa tiene // que estar en la misma carpeta del programa // define funciones, patillas y registros.

#fuses XT,NOWDT

// Define la palabra de configuracin del // microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro // guardin Wathdog
33

Daniel Garca Bravo I.E.S. Joan Mir

Ciclo Superior de Desarrollo de Productos Electrnicos

#use delay( clock = 1000000 ) #BYTE TRISA = 0x85 #BYTE portA = 0x05 #BIT ra5 = 0x05.5 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BIT rb2 = 0x06.2 #BIT rb3 = 0x06.3 #BYTE TRISC = 0x87 #BYTE portC = 0x07 #BIT rc5 = 0x07.5

// Define la frecuencia del reloj de 1 MHz // TRISA en 85h. // PORTB en 05h. // RA5 en 0x05 patilla 5 // TRISB en 86h. // PORTB en 06h. // RB2 en 0x06 patilla 2. // RB3 en 0x06 patilla 3. // TRISC en 87h. // PORTC en 07h. // RC5 en 0x07 patilla 5

// ****************** Funcin principal o programa principal ****************** void main() { TRISA = 0B11111111; TRISB = 0B00000000;

// Defines Puerto A como entrada de datos // Defines Puerto B como salida // de datos. // Defines rc6, rc2 y rc1 como salidas y rc7, // rc5 y rc0 como entradas; rc4 y rc3 no // tocar // Bucle infinito

TRISC = 0B10110001;

while(1){ if (ra5 == 1)

// Si el sensor lee blanco ejecuta la // siguiente instruccin // Enciende el led D14 // Si el sensor lee negro, ejecuta la siguiente // instruccin

rb2 = 0; else {

rb2 = 1; } if (rc5 == 1)

// Apaga el led D14 // Cierro el else // Si el sensor lee blanco ejecuta la // siguiente instruccin // Enciende el led D13

rb3 = 0;

Daniel Garca Bravo I.E.S. Joan Mir

34

Ciclo Superior de Desarrollo de Productos Electrnicos

else {

// Si el sensor lee negro, ejecuta la siguiente // instruccin rb3 = 1; // Apaga el led D13 // Cierro el else // Cierro el while // Cierro el programa

} } }

6.1.4.- Programas de pruebas de control de giro de los motores Con estos programas comprobaremos que los motores estn en perfecto estado y las conexiones que controlan los motores tambin lo estn. 6.1.4.1- Programa de prueba del motor derecho Con este programa controlaremos que el motor derecho gira en ambos sentidos, controlando las patillas rb6 y rb7 del PIC. El sentido de giro depender del estado lgico de las patillas rb6 y rb7 y de cmo conectemos el motor derecho a la placa de potencia.

RB6 0 0 1 1

RB7 0 1 0 1

Sentido de giro Motor parado En movimiento En movimiento Motor parado

Daniel Garca Bravo I.E.S. Joan Mir

35

Ciclo Superior de Desarrollo de Productos Electrnicos

6.1.4.1.1.- Diagrama de flujo

6.1.4.1.2.- Programa // Pruebas de control de giro del motor derecho // ************************ Directivas de procesado ************************ // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include <16F876A.h> // Incluye el fichero 16F876A.h al programa tiene // que estar en la misma carpeta del programa // define funciones, patillas y registros.

#fuses XT,NOWDT

// Define la palabra de configuracin del // microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro // guardin Wathdog // Define la frecuencia del reloj de 1 MHz // TRISB en 86h. // PORTB en 06h.

#use delay( clock = 1000000 ) #BYTE TRISB = 0x86 #BYTE portB = 0x06

Daniel Garca Bravo I.E.S. Joan Mir

36

Ciclo Superior de Desarrollo de Productos Electrnicos

#BIT rb6 = 0x06.6 #BIT rb7 = 0x06.7

// RB1 en 0x06 patilla 1. // RB2 en 0x06 patilla 2.

// ****************** Funcin principal o programa principal **************** void main() { TRISB = 0B00000000; portB = 0B00000000; while(1){ rb6 = 0; rb7 = 0; delay_ms(500); rb6 = 1; delay_ms(500); rb6 = 0; rb7 = 0; delay_ms(500); rb7 = 1; delay_ms(500); } } // Defines Puerto B como SALIDA de datos // Reseteas el puerto B // Bucle infinito // Las patillas RB6 y RB7 desactivadas, // motor parado // Retardo de 500 ms // Activamos la patilla RB6, motor gira // Retardo de 500 ms // Las patillas RB6 y RB7 desactivadas, // motor parado // Retardo de 500 ms // Activamos la patilla RB7, el motor gira // Retardo de 500 ms // Cierro el While // Cierro el programa principal

6.1.4.2.- Programa de prueba del motor izquierdo Con este programa controlaremos que el motor izquierdo gira en ambos sentidos, controlando las patillas rb4 y rb5 del PIC. El sentido de giro depender del estado lgico de las patillas rb4 y rb5 y de cmo conectemos el motor derecho a la placa de potencia. RB4 0 0 1 1 RB5 0 1 0 1 Sentido de giro Motor parado En movimiento En movimiento Motor parado

Daniel Garca Bravo I.E.S. Joan Mir

37

Ciclo Superior de Desarrollo de Productos Electrnicos

6.1.4.2.1.- Diagrama de flujo

6.1.4.2.2.- Programa // Pruebas de control de giro del motor izquierdo // ************************ Directivas de procesado ************************ // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include <16F876A.h> // Incluye el fichero 16F876A.h al programa tiene // que estar en la misma carpeta del programa // define funciones, patillas y registros. // Define la palabra de configuracin del // microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro // guardin Wathdog

#fuses XT,NOWDT

#use delay( clock = 1000000 )

// Define la frecuencia del reloj de 1 MHz

Daniel Garca Bravo I.E.S. Joan Mir

38

Ciclo Superior de Desarrollo de Productos Electrnicos

#BYTE TRISB = 0x86 #BYTE portB = 0x06 #BIT rb4 = 0x06.4 #BIT rb5 = 0x06.5

// TRISB en 86h. // PORTB en 06h. // RB4 en 0x06 patilla 4. // RB5 en 0x06 patilla 5.

// ****************** Funcin principal o programa principal **************** void main() { TRISB = 0B00000000; portB = 0B00000000; while(1){ rb4 = 0; rb5 = 0; delay_ms(500); rb4 = 1; delay_ms(500); rb4 = 0; rb5 = 0; delay_ms(500); rb5 = 1; delay_ms(500); } }

// Defines Puerto B como SALIDA de datos. // Reseteas el puerto B // Bucle infinito // Las patillas RB4 y RB5 desactivadas, // motor parado // Retardo de 500 ms // Activamos la patilla RB4, motor gira // Retardo de 500 ms // Las patillas RB4 y RB5 desactivadas, // motor parado // Retardo de 500 ms // Activamos la patilla RB5, el motor gira // Retardo de 500 ms // Cierro el While // Cierro el programa principal

6.1.5.- Programas de pruebas de control de velocidad de los motores Con estos programas probaremos que el PIC genera la PWM. Tambin que esta llega a nuestros motores y que estos modifican su velocidad de acuerdo con la PWM que llegue del PIC. 6.1.5.1- Programa de control de velocidad del motor derecho Probamos la velocidad del motor derecho.

Daniel Garca Bravo I.E.S. Joan Mir

39

Ciclo Superior de Desarrollo de Productos Electrnicos

6.1.5.1.1.- Diagrama de flujo

6.1.5.1.2.- Programa // Prueba de control de velocidad motor derecho // ************************ Directivas de procesado ************************ // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include <16F876A.h> // Incluye el fichero 16F876A.h al programa tiene // que estar en la misma carpeta del programa // define funciones, patillas y registros.

#fuses XT,NOWDT

// Define la palabra de configuracin del // microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro // guardin Wathdog // Define la frecuencia del reloj de 1 MHz // TRISB en 86h. // PORTB en 06h.

#use delay( clock = 1000000 ) #BYTE TRISB = 0x86 #BYTE portB = 0x06

Daniel Garca Bravo I.E.S. Joan Mir

40

Ciclo Superior de Desarrollo de Productos Electrnicos

#BIT rb6 = 0x06.6 #BIT rb7 = 0x06.7 int16 TH = 65535;

// RB6 en 0x06 patilla 6. // RB7 en 0x06 patilla 7. // Variable para la PWM

// ************* Funcin principal o programa principal ***************** void main() { TRISB = 0B00000010; portB = 0B00001100; // Defines Puerto B como salidas de datos. // Reseteas el puerto B, los dos LEDS a 1

setup_timer_2(T2_DIV_BY_16,249,1); // setup_timer(Prescaler,PR2,Postscaler) // Configuracion timer2. Si el Periodo = 16mS ----> T = 16000uS // T = [PR2+1] x Tcm x Postscaler x Prescaler // PR2 puede valer de 0 a 255. // Tcm es el tiempo de Ciclo Maquina. Tcm = 4/Fosc = 4/1.000.000 hz = 4uS. // Prescaler puede valer 1,4,16 // Postscaler puede valer 1. // 16000uS = [PR2+1] x 4 x 16 x 1 // PR2 =[T/(Tcm x Preescaler x Postscaler)]-1 // PR2 =[16000uS/(4uS x 16 x 1)]-1 = 249 (en C 249) setup_ccp2(CCP_PWM); // CCP2 en modo PWM (Salida por // RC1) // Bucle infinito rb7 = 0; rb6 = 1; // Desactivamos la patilla RB7 // Activamos la patilla RB6 // El motor empezara a moverse en un // sentido // No meto PWM, motor parado // Tiempo que el motor estar girando // Cambiamos el valor de la PWM // Tiempo que el motor estar girando // Cambiamos el valor de la PWM // Tiempo que el motor estar girando // Cambiamos el valor de la PWM
41

while(1){

TH = 0; delay_ms(2000); TH = 64; delay_ms(2000); TH = 500; delay_ms(2000); TH = 1000;


Daniel Garca Bravo I.E.S. Joan Mir

Ciclo Superior de Desarrollo de Productos Electrnicos

delay_ms(2000); rb7 = 0; rb6 = 1;

// Tiempo que el motor estar girando // Desactivamos la patilla RB7 // Activamos la patilla RB6 // El motor empezara a moverse en // sentido contrario // No meto PWM, motor parado // Tiempo que el motor estar girando // Cambiamos el valor de la PWM // Tiempo que el motor estar girando // Cambiamos el valor de la PWM // Tiempo que el motor estar girando // Cambiamos el valor de la PWM // Tiempo que el motor estar girando // Cierro el While // Cierro el programa principal

TH = 0; delay_ms(2000); TH = 64; delay_ms(2000); TH = 500; delay_ms(2000); TH = 1000; delay_ms(2000); } }

Daniel Garca Bravo I.E.S. Joan Mir

42

Ciclo Superior de Desarrollo de Productos Electrnicos

6.1.5.2.- Programa de control de velocidad del motor izquierdo Probamos la velocidad del motor izquierdo. 6.1.5.2.1.- Diagrama de flujo

6.1.5.2.2.- Programa // Prueba de control de velocidad izquierdo // ************************ Directivas de procesado ************************ // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include <16F876A.h> // Incluye el fichero 16F876A.h al programa tiene // que estar en la misma carpeta del programa // define funciones, patillas y registros.

#fuses XT,NOWDT

// Define la palabra de configuracin del // microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro // guardin Wathdog

Daniel Garca Bravo I.E.S. Joan Mir

43

Ciclo Superior de Desarrollo de Productos Electrnicos

#use delay( clock = 1000000 ) #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BIT rb4 = 0x06.4 #BIT rb5 = 0x06.5 int16 TH = 65535;

// Define la frecuencia del reloj de 1 MHz // TRISB en 86h. // PORTB en 06h. // RB4 en 0x06 patilla 4. // RB5 en 0x06 patilla 5. // Variable para la PWM

// ******************* Funcin principal o programa principal ***************** void main() { TRISB = 0B00000010; portB = 0B00001100; // Defines Puerto B como salidas de datos. // Reseteas el puerto B, los dos LEDS a 1

setup_timer_2(T2_DIV_BY_16,249,1); // setup_timer(Prescaler,PR2,Postscaler) // Configuracion timer2. Si el Periodo = 16mS ----> T = 16000uS // T = [PR2+1] x Tcm x Postscaler x Prescaler // PR2 puede valer de 0 a 255. // Tcm es el tiempo de Ciclo Maquina. Tcm = 4/Fosc = 4/1.000.000 hz = 4uS. // Prescaler puede valer 1,4,16 // Postscaler puede valer 1. // 16000uS = [PR2+1] x 4 x 16 x 1 // PR2 =[T/(Tcm x Preescaler x Postscaler)]-1 // PR2 =[16000uS/(4uS x 16 x 1)]-1 = 249 (en C 249) setup_ccp1(CCP_PWM); while(1){ rb4 = 0; rb5 = 1; // CCP1 en modo PWM (Salida por RC2) // Bucle infinito // Desactivamos la patilla RB4 // Activamos la patilla RB5 // El motor empezara a moverse en un // sentido // No meto PWM, motor parado // Tiempo que el motor estar girando // Cambiamos el valor de la PWM // Tiempo que el motor estar girando

TH = 0; delay_ms(2000); TH = 64; delay_ms(2000);

Daniel Garca Bravo I.E.S. Joan Mir

44

Ciclo Superior de Desarrollo de Productos Electrnicos

TH = 500; delay_ms(2000); TH = 1000; delay_ms(2000); rb5 = 0; rb4 = 1;

// Cambiamos el valor de la PWM // Tiempo que el motor estar girando // Cambiamos el valor de la PWM // Tiempo que el motor estar girando // Desactivamos la patilla RB5 // Activamos la patilla RB4 // El motor empezara a moverse en // sentido contrario // No meto PWM, motor parado // Tiempo que el motor estar girando // Cambiamos el valor de la PWM // Tiempo que el motor estar girando // Cambiamos el valor de la PWM // Tiempo que el motor estar girando // Cambiamos el valor de la PWM // Tiempo que el motor estar girando // Cierro el While // Cierro el programa principal

TH = 0; delay_ms(2000); TH = 64; delay_ms(2000); TH = 500; delay_ms(2000); TH = 1000; delay_ms(2000); } }

Daniel Garca Bravo I.E.S. Joan Mir

45

Ciclo Superior de Desarrollo de Productos Electrnicos

6.2.- Programas de funcionamiento del robot 6.2.1.- Programa del robot velocista Con este programa controlamos el robot en modo velocista. Dado que por falta de tiempo no se puede adjuntar el programa del coche teledirigido, este es el programa con el cual nuestro robot funciona. 6.2.1.1.- Diagramas de flujo

Daniel Garca Bravo I.E.S. Joan Mir

46

Ciclo Superior de Desarrollo de Productos Electrnicos

Daniel Garca Bravo I.E.S. Joan Mir

47

Ciclo Superior de Desarrollo de Productos Electrnicos

Daniel Garca Bravo I.E.S. Joan Mir

48

Ciclo Superior de Desarrollo de Productos Electrnicos

Daniel Garca Bravo I.E.S. Joan Mir

49

Ciclo Superior de Desarrollo de Productos Electrnicos

6.2.1.2.- Programa // Velocista // ************************ Directivas de procesado ************************ // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include <16F876A.h> // Incluye el fichero 16F876A.h al programa tiene // que estar en la misma carpeta del programa // define funciones, patillas y registros.

#fuses XT,NOWDT

// Define la palabra de configuracin del // microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro // guardin Wathdog // Define la frecuencia del reloj de 1 MHz // TRISA en 85h. // PORTB en 05h. // RA0 en 0x05 patilla 0. // RA1 en 0x06 patilla 1. // RA2 en 0x06 patilla 2. // RA3 en 0x06 patilla 3. // RA4 en 0x06 patilla 4.
50

#use delay( clock = 1000000 ) #BYTE TRISA = 0x85 #BYTE portA = 0x05 #BIT ra0 = 0x05.0 #BIT ra1 = 0x05.1 #BIT ra2 = 0x05.2 #BIT ra3 = 0x05.3 #BIT ra4 = 0x05.4
Daniel Garca Bravo I.E.S. Joan Mir

Ciclo Superior de Desarrollo de Productos Electrnicos

#BIT ra5 = 0x05.5 #BIT ra6 = 0x05.6 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BIT rb0 = 0x06.0 #BIT rb1 = 0x06.1 #BIT rb2 = 0x06.2 #BIT rb3 = 0x06.3 #BIT rb4 = 0x06.4 #BIT rb5 = 0x06.5 #BIT rb6 = 0x06.6 #BIT rb7 = 0x06.7 #BYTE TRISC = 0x87 #BYTE portC = 0x07 #BIT rc0 = 0x07.0 #BIT rc1 = 0x07.1 #BIT rc2 = 0x07.2 #BIT rc3 = 0x07.3 #BIT rc4 = 0x07.4 #BIT rc5 = 0x07.5 #BIT rc6 = 0x07.6 #BIT rc7 = 0x07.7 int16 TH = 65535;

// RA5 en 0x06 patilla 5. // RA6 en 0x06 patilla 6. // TRISB en 86h. // PORTB en 06h. // RB0 en 0x06 patilla 0. // RB1 en 0x06 patilla 1. // RB2 en 0x06 patilla 2. // RB3 en 0x06 patilla 3. // RB4 en 0x06 patilla 4. // RB5 en 0x06 patilla 5. // RB6 en 0x06 patilla 6. // RB7 en 0x06 patilla 7. // TRISC en 87h. // PORTC en 07h. // RC0 en 0x06 patilla 0. // RC1 en 0x06 patilla 1. // RC2 en 0x06 patilla 2. // RC3 en 0x06 patilla 3. // RC4 en 0x06 patilla 4. // RC5 en 0x06 patilla 5. // RC6 en 0x06 patilla 6. // RC7 en 0x06 patilla 7. // Variable para la PWM

// ******************** Declaracin de funciones *************************** void velocista(); void Rec0 (); void Rec1 (); void Rec2 (); void Rec3 (); void Rec4 (); void Rec5 (); void Rec6 (); void Rec7 (); void Rec8 (); void Rec9 (); void Rec10 (); void Rec11 (); void Rec12 (); void Rec13 (); void Rec14 (); // Subprograma del velocista // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin // Subprograma de rectificacin

Daniel Garca Bravo I.E.S. Joan Mir

51

Ciclo Superior de Desarrollo de Productos Electrnicos

// ******************* Funcin principal o programa principal ***************** void main() { // ************ Configuracin de todas las entradas y salidas y resetearlas ********* TRISA = 0B11111111; TRISB = 0B00000011; // Defines Puerto A como entrada de datos. // Defines rb0 y rb1 como entradas y el resto // del Puerto B como salidas // Defines rc6, rc2 y rc1 como salidas y rc7, // rc5 y rc0 como entradas; rc4 y rc3 no tocar

TRISC = 0B10110001;

rb4 = 0; rb5 = 0; rb6 = 0; rb7 = 0; rc3 = 0; rc6 = 0;

// Reseteo todas estas salidas

setup_timer_2(T2_DIV_BY_16,249,1); // setup_timer(Prescaler,PR2,Postscaler) // Configuracion timer2. Si el Periodo = 16mS ----> T = 16000uS // T = [PR2+1] x Tcm x Postscaler x Prescaler // PR2 puede valer de 0 a 255. // Tcm es el tiempo de Ciclo Maquina. Tcm = 4/Fosc = 4/1.000.000 hz = 4uS. // Prescaler puede valer 1,4,16 // Postscaler puede valer 1. // 16000uS = [PR2+1] x 4 x 16 x 1 // PR2 =[T/(Tcm x Preescaler x Postscaler)]-1 // PR2 =[16000uS/(4uS x 16 x 1)]-1 = 249 (en C 249) setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); TH = 0; set_pwm1_duty(TH); TH = 0; set_pwm2_duty(TH); velocista(); // CCP1 en modo PWM (Salida por RC2) // CCP2 en modo PWM (Salida por RC1) // Pongo la PWM a 0 // por la patilla RC2 // Pongo la PWM a 0 // por la patilla RC1 // Ejecutamos el subprograma de velocista

Daniel Garca Bravo I.E.S. Joan Mir

52

Ciclo Superior de Desarrollo de Productos Electrnicos

// ******************* Subprograma del Velocista ************************* void velocista(void) { while (rb1 == 1 ){ // Mientras el botn de inicio no se pulse // ejecuta lo siguiente

if (rc0 == 1 && ra0 == 1 && ra1 == 1 && ra2 == 1 && ra3 == 1 && ra4 == 1 && ra5 == 1 && rc5 == 1){ // Si todos los sensores leen blanco, ejecuta lo siguiente: rb2 = 1; rb3 = 0; } else { rb2 = 0; rb3 = 0; } } while (1){ rb2 = 1; rb3 = 1; // Apago led D14 // Enciendo led D13 // Cierro el if // Si el if no es cierto, ejecuta lo siguiente // Enciendo led D14 // Enciendo led D13 // Cierro el else // Cierro el While // Bucle infinito del velocista

// Apago leds

if (rc0 == 1 && ra0 == 1 && ra1 == 1 && ra2 == 1 && ra3 == 1 && ra4 == 1 && ra5 == 1 && rc5 == 1) Rec0(); // Si la condicin es verdadera ejecuta el // siguiente subprograma if (ra3 == 0) Rec1(); if (ra3 && ra4 == 0) Rec2(); if (ra4 == 0) Rec3(); if (ra4 && ra5== 0) Rec4(); if (ra5 == 0) Rec5(); // Si la condicin es verdadera ejecuta el // siguiente subprograma // Si la condicin es verdadera ejecuta el // siguiente subprograma // Si la condicin es verdadera ejecuta el // siguiente subprograma // Si la condicin es verdadera ejecuta el // siguiente subprograma // Si la condicin es verdadera ejecuta el // siguiente subprograma

Daniel Garca Bravo I.E.S. Joan Mir

53

Ciclo Superior de Desarrollo de Productos Electrnicos

if (ra5 && rc5 == 0) Rec6(); if (rc5 == 0) Rec7(); if (ra2 == 0) Rec8(); if (ra2 && ra1 == 0) Rec9(); if (ra1 == 0) Rec10(); if (ra1 && ra0 == 0) Rec11(); if (ra0 == 0) Rec12(); if (ra0 && rc0 == 0) Rec13();

// Si la condicin es verdadera ejecuta el // siguiente subprograma // Si la condicin es verdadera ejecuta el // siguiente subprograma // Si la condicin es verdadera ejecuta el // siguiente subprograma // Si la condicin es verdadera ejecuta el // siguiente subprograma // Si la condicin es verdadera ejecuta el // siguiente subprograma // Si la condicin es verdadera ejecuta el // siguiente subprograma // Si la condicin es verdadera ejecuta el // siguiente subprograma // Si la condicin es verdadera ejecuta el // siguiente subprograma

if (rc0 == 0) Rec14(); } }

// Si la condicin es verdadera ejecuta el // siguiente subprograma // Cierro el while(1) // Cierro el programa velocista

// ********************************* Rec0 ***************************** void Rec0(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 1000; set_pwm1_duty(TH); TH = 1000; set_pwm2_duty(TH); // Subprograma de rectificado 0

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho

Daniel Garca Bravo I.E.S. Joan Mir

54

Ciclo Superior de Desarrollo de Productos Electrnicos

delay_ms(20); }

// Refresco de la PWM // Cierro el subprogama

// ********************************* Rec1 ***************************** void Rec1(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 1000; set_pwm1_duty(TH); TH = 500; set_pwm2_duty(TH); delay_ms(20); } // Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho // Subprograma de rectificado 1

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

// *************************** Rec2 ******************************* void Rec2(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 1000; set_pwm1_duty(TH); TH = 400; set_pwm2_duty(TH); delay_ms(20); } // Subprograma de rectificado 2

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

Daniel Garca Bravo I.E.S. Joan Mir

55

Ciclo Superior de Desarrollo de Productos Electrnicos

// **************************** Rec3 *********************************** void Rec3(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 1000; set_pwm1_duty(TH); TH = 300; set_pwm2_duty(TH); delay_ms(20); } // Subprograma de rectificado 3

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

// **************************** Rec4 ********************************** void Rec4(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 1000; set_pwm1_duty(TH); TH = 200; set_pwm2_duty(TH); delay_ms(20); } // Subprograma de rectificado 4

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

// **************************** Rec5 ******************************** void Rec5(void) { rb4 = 1; rb5 = 0; // Subprograma de rectificado 5

// Activamos la patilla RB4 // Activo el motor izquierdo

Daniel Garca Bravo I.E.S. Joan Mir

56

Ciclo Superior de Desarrollo de Productos Electrnicos

rb6 = 1; rb7 = 0; TH = 1000; set_pwm1_duty(TH); TH = 150; set_pwm2_duty(TH); delay_ms(20); }

// Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

// ******************************* Rec6 ******************************** void Rec6(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 1000; set_pwm1_duty(TH); TH = 100; set_pwm2_duty(TH); delay_ms(20); } // Subprograma de rectificado 6

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

// **************************** Rec7 *********************************** void Rec7(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 1000; set_pwm1_duty(TH); // Subprograma de rectificado 7

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

Daniel Garca Bravo I.E.S. Joan Mir

57

Ciclo Superior de Desarrollo de Productos Electrnicos

TH = 50; set_pwm2_duty(TH); delay_ms(20); }

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

// *************************** Rec8 ************************************ void Rec8(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 500; set_pwm1_duty(TH); TH = 1000; set_pwm2_duty(TH); delay_ms(20); } // Subprograma de rectificado 8

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

// ****************************** Rec9 ********************************** void Rec9(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 400; set_pwm1_duty(TH); TH = 1000; set_pwm2_duty(TH); delay_ms(20); } // Subprograma de rectificado 9

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

Daniel Garca Bravo I.E.S. Joan Mir

58

Ciclo Superior de Desarrollo de Productos Electrnicos

// **************************** Rec10 ********************************** void Rec10(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 300; set_pwm1_duty(TH); TH = 1000; set_pwm2_duty(TH); delay_ms(20); } // Subprograma de rectificado 10

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

// ***************************** Rec11 ********************************** void Rec11(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 200; set_pwm1_duty(TH); TH = 1000; set_pwm2_duty(TH); delay_ms(20); } // Subprograma de rectificado 11

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

// ************************** Rec12 ********************************* void Rec12(void) { rb4 = 1; rb5 = 0; // Subprograma de rectificado 12

// Activamos la patilla RB4 // Activo el motor izquierdo

Daniel Garca Bravo I.E.S. Joan Mir

59

Ciclo Superior de Desarrollo de Productos Electrnicos

rb6 = 1; rb7 = 0; TH = 150; set_pwm1_duty(TH); TH = 1000; set_pwm2_duty(TH); delay_ms(20); }

// Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

// ******************************* Rec13 ******************************* void Rec13(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 100; set_pwm1_duty(TH); TH = 1000; set_pwm2_duty(TH); delay_ms(20); } // Subprograma de rectificado 13

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

// ******************************** Rec14 ***************************** void Rec14(void) { rb4 = 1; rb5 = 0; rb6 = 1; rb7 = 0; TH = 50; set_pwm1_duty(TH); // Subprograma de rectificado 14

// Activamos la patilla RB4 // Activo el motor izquierdo // Activamos la patilla RB6 // Activo motor derecho

// Valor de la PWM para el motor izquierdo

Daniel Garca Bravo I.E.S. Joan Mir

60

Ciclo Superior de Desarrollo de Productos Electrnicos

TH = 1000; set_pwm2_duty(TH); delay_ms(20); }

// Valor de la PWM para el motor derecho // Refresco de la PWM // Cierro el subprogama

6.2.2.- Programa del coche teledirigido Con este programa se lograra controlar el robot a travs de un mando. Dado que no ha dado tiempo, el proyecto se deja abierto para futuras modificaciones. 6.2.2.1.- Diagrama de flujo 6.2.2.2.- Programa

Daniel Garca Bravo I.E.S. Joan Mir

61

Ciclo Superior de Desarrollo de Productos Electrnicos

7.- Fabricacin de placas Para fabricar las placas se ha empleado el mismo sistema: 1 Cortar la placa a medida. 2 Hacer los agujeros de la placa. 3 Positivarla. 4 Dejarla en el horno a 70C, durante 15 minutos. 5 Centrar los fotolitos en la placa e insolarla durante, aproximadamente, unos 230 segundos. 6 Revelarla en sosa. 7 Grabado de la placa. Las placas que se muestran aqu no son el tamao real. Todas las placas, menos la placa de sensores, tienen el mismo tamao, 75x70. A continuacin se muestra el esquema elctrico que se ha utilizado para la fabricacin y su placa correspondiente. Las placas se han puesto por la cara de componentes, top copper y por la cara de pistas, botton copper. Se muestra el siguiente dibujo con las dimensiones de las placas de la fuente de alimentacin-adaptador de seales PC-UC, placa de control y placa de potencia, con las distancias de los agujeros de sujecin.

Daniel Garca Bravo I.E.S. Joan Mir

62

Ciclo Superior de Desarrollo de Productos Electrnicos

7. 1.- Fabricacin de la fuente de alimentacin-adaptador de seales PC-UC 7.1.1.- Esquema elctrico

Daniel Garca Bravo I.E.S. Joan Mir

63

Ciclo Superior de Desarrollo de Productos Electrnicos

7.1.2.- Cara de componentes En esta placa no est colocada la disipacin de cobre del LM350K, para que se pueda distinguir bien la distribucin de los componentes. Dicha disipacin debe ocupar todo el ancho del LM350K.

Daniel Garca Bravo I.E.S. Joan Mir

64

Ciclo Superior de Desarrollo de Productos Electrnicos

7.1.3.- Cara de pistas bottom copper

Daniel Garca Bravo I.E.S. Joan Mir

65

Ciclo Superior de Desarrollo de Productos Electrnicos

7. 2.- Fabricacin de la placa de control 7.2.1.- Esquema elctrico

Daniel Garca Bravo I.E.S. Joan Mir

66

Ciclo Superior de Desarrollo de Productos Electrnicos

7.2.2.- Componentes

Daniel Garca Bravo I.E.S. Joan Mir

67

Ciclo Superior de Desarrollo de Productos Electrnicos

7.2.3.- Cara de componentes y de pistas top copper

Daniel Garca Bravo I.E.S. Joan Mir

68

Ciclo Superior de Desarrollo de Productos Electrnicos

7.2.4.- Cara de pistas bottom copper

Daniel Garca Bravo I.E.S. Joan Mir

69

Ciclo Superior de Desarrollo de Productos Electrnicos

7. 3.- Fabricacin de la placa de potencia 7.3.1.- Esquema elctrico

Daniel Garca Bravo I.E.S. Joan Mir

70

Ciclo Superior de Desarrollo de Productos Electrnicos

7.3.2.- Componentes

Daniel Garca Bravo I.E.S. Joan Mir

71

Ciclo Superior de Desarrollo de Productos Electrnicos

7.3.3.- Cara de componentes y de pistas top copper

Daniel Garca Bravo I.E.S. Joan Mir

72

Ciclo Superior de Desarrollo de Productos Electrnicos

7.3.4.- Cara de pistas bottom copper

Daniel Garca Bravo I.E.S. Joan Mir

73

Ciclo Superior de Desarrollo de Productos Electrnicos

7. 4.- Fabricacin de la placa de sensores Esta placa siempre est en constante cambio, hasta que se da con la placa que mejor nos convenga. Despus de muchos prototipos, aqu se expone la que mejor hemos visto que funciona. El ancho de las placas se intenta que tenga la misma medida, 48mm, para que nuestro robot no sobrepase de las medidas, y tambin los taladros, que es por donde sujetamos la placa a la carrocera del robot. Lo que s que vara es el largo de la placa, debido, en gran parte, a cmo se hayan distribuido los componentes por dicha placa. El esquema elctrico es para todas las placas el mismo, y como anteriormente se ha comentado, el valor de las resistencias puede variar, siendo, el que aparece en los esquemas elctricos, el valor montado o no montado. 7.4.1.- Esquema elctrico

Daniel Garca Bravo I.E.S. Joan Mir

74

Ciclo Superior de Desarrollo de Productos Electrnicos

7.4.2.- Medidas

7.4.3.- Componentes

7.4.4.- Cara de componentes y de pistas top copper

Daniel Garca Bravo I.E.S. Joan Mir

75

Ciclo Superior de Desarrollo de Productos Electrnicos

7.4.5.- Cara de pistas bottom copper

Daniel Garca Bravo I.E.S. Joan Mir

76

Ciclo Superior de Desarrollo de Productos Electrnicos

7. 5.- Fabricacin del mando a distancia 7.5.1.- Esquema elctrico

7.5.2.- Medidas

Daniel Garca Bravo I.E.S. Joan Mir

77

Ciclo Superior de Desarrollo de Productos Electrnicos

7.5.3.- Componentes

7.5.4.- Cara de componentes y de pistas top copper

Daniel Garca Bravo I.E.S. Joan Mir

78

Ciclo Superior de Desarrollo de Productos Electrnicos

7.5.5.- Cara de pistas bottom copper

Daniel Garca Bravo I.E.S. Joan Mir

79

Ciclo Superior de Desarrollo de Productos Electrnicos

8.- Carrocera

Daniel Garca Bravo I.E.S. Joan Mir

80

Ciclo Superior de Desarrollo de Productos Electrnicos

9.- Lista de componentes y coste econmico

LISTA DE COMPONENTES DEL VELOCISTA Titulo: Velocista Autor: Daniel Garca Bravo Numero de componentes: 169 Cantidad Referencia: 38 Resistencias 18 R1, R3, R5, R7, R9, R11, R13-R15, R17, R22, R24, R26, R28, R30, R32, R34, R36 R2, R4, R6, R8, R10, R12, R16, R18, R23, R25, R27, R29, R31, R33, R35, R37 R19 R20, R21 R38 15 Condensadores 1 6 1 4 2 1 1 1 6 1 2 1 Cantidad C1 C2, C4, C9-C11, C14 C3 C5-C8 C12, C13 C15 U1 U2 U3-U8 U9 U11, U12 U13 Referencia: 4 Transistores 4 11 2 2 1
Daniel Garca Bravo I.E.S. Joan Mir

Valor:

Precio Precio Unitario Total

220

0,05

0,9

16 1 2 1

10k 100 4.7k 240 2200uF 100nF 220uF 1uF 15pF 10uF LM350K MAX232 Optoacopladores L298 74HC14 PIC16F876 Valor:

0,05 0,05 0,05 0,05 0,5 0,05 0,2 0,1 0,05 0,05

0,8 0,05 0,1 0,05 0,5 0,3 0,2 0,4 0,1 0,05

12 Circuitos integrados 4 4 1,5 1,5 0,35 2,1 3,5 3,5 0,5 1 4,5 4,5 Precio Precio Unitario Total 0,35 0,2 0,15 0,15 0,01 1,4 2,2 0,3 0,3 0,01
81

Q1-Q4 15 Diodos D1, D2, D4-D12 D3, LED RASTREADOR D13, D15 ANTENA

BD139 1N4007 Led Verde Led Amarillo Bornier1

Otros Componentes

Ciclo Superior de Desarrollo de Productos Electrnicos

1 2 6 4 1 3 4 4 2 1 8 1 1 1 4 10 1 3 1 2 4 18 2

BATERIA INICIO, RESET J1, J1A, J2, J2A, J3, J3A J4-J7 J11 JP, JP1, JP21 JUMPER1-JUMPER4 MASA1-MASA4 MDE, MIZ ON-OFF OP1-OP8 RF1 RV1 X1 Br T3 SP Placas Placas Ruedas Fajas Separadores Motores

Bornier2 Pulsador Conn-H10 Conn-Sil4 Conn-D9m Bornier de 2 Conn-Sil3 Bornier de 1 Bornier de 2 Interruptor CNY70 Cebek-C-0504 5k Cristal Bridas de Plstico Tuercas de mtrica 3 Soporte de plstico Placas de C.I. de 70x75 Placa de C.I. de 148x48 Ruedas de espuma Fajas Separadores de plstico Motores de C.C.

0,3 0,4 0,5 0,1 2,5 0,3 0,15 0,01 0,3 0,4 0,35 7 1 3 0,1 0,02 1 6 2 2,5 0,5 0,05 9 Total

0,3 0,8 3 0,4 2,5 0,9 0,6 0,04 0,6 0,4 2,8 7 1 3 0,4 0,2 1 18 2 5 2 0,9 18 95,1

Daniel Garca Bravo I.E.S. Joan Mir

82

Ciclo Superior de Desarrollo de Productos Electrnicos

LISTA DE COMPONENTES DEL MANDO Titulo: Velocista Autor: Daniel Garca Bravo Numero de componentes: 46

Cantidad

Referencia:

Valor: 7 Resistencias

Precio Precio Unitario Total

6 1

R1E-R6E R7E

220 2.2k 4 Condensadores

0,05 0,05

0,3 0,05

2 2

C1E, C2E C3E, C4E

220uF 15pF 2 Circuitos integrados

0,2 0,05

0,4 0,1

1 1

U1E U2E

PIC16F876 7805 1 Transistor

4,5 1

4,5 1

Q1E 7 Diodos

BD136

0,35

0,35

2 2 2 1

D1E, D5E D2E, D3E D4E, D7E D6E

Led Amarillo Led Verde Led Rojo 1N4007

0,15 0,15 0,15 0,2

0,3 0,3 0,3 0,2

Daniel Garca Bravo I.E.S. Joan Mir

83

Ciclo Superior de Desarrollo de Productos Electrnicos

Cantidad

Referencia:

Valor: Otros Componentes

Precio Precio Unitario Total

1 1 1 5 1 1 1 4 4 4 1 1

ANTENA Bornier1 BATERIA 9 VOLTIOS Bateria RF1 Cebek-C-0503 SW1E-SW5E Pulsadores SW6E Interruptor X1 Cristal Placas Placa de C.I. de 110x50 Separadores Separadores metalicos Tuercas Tuercas M3 Tornillos Tornillos M3 x 10 mm Porta baterias Porta baterias SP Soporte de plstico 110x50

0,01 1 7 0,2 1 3 2 0,5 0,1 0,1 0,5 1 Total

0,01 1 7 1 1 3 2 2 0,4 0,4 0,5 1 27,11

Daniel Garca Bravo I.E.S. Joan Mir

84

Ciclo Superior de Desarrollo de Productos Electrnicos

10.- Coste econmico total

Coste del Proyecto Rastreador Tareas Horas Coste por hora () Desarrollo Hardware 30 30 Desarrollo Software 25 30 Bsqueda de materiales 4 30 Montaje del prototipo 30 30 Pruebas del prototipo. 50 30 Componentes del velocista Componentes del mando Documentacin 20 30 TOTAL 159 -

Total () 900 750 120 900 1500 95,1 27,11 600 4892,21

Daniel Garca Bravo I.E.S. Joan Mir

85

Ciclo Superior de Desarrollo de Productos Electrnicos

11.- Referencias Ttulo: Compilador C CCS y simulador PORTEUS para Microcontroladores PIC. Autor: Eduardo Garca Breijo. Editorial: Marcombo. Ttulo: Tecnologa de circuitos impresos. Autores: Claudio Fernndez Gonzlez, Jos Luis Lzaro Galilea, Ignacio Fernndez Lorenzo, Jess Urea Urea, Felipe Espinosa Zapata. Editorial: Departamento de electrnica, Universidad de Alcal Ttulo: Electrnica general. Autores: A. Carretero, J. Ferrero, J.A. Snchez-Infantes, P. Snchez-Infantes. Editorial: Editex. Ttulo: Lgica digital y microprogramable. Autores: Fernando Remiro Domnguez, Antonio J.Gil Padilla, Luis M. Cuesta Garca. Editorial: Mc Graw Hill.

Daniel Garca Bravo I.E.S. Joan Mir

86

Ciclo Superior de Desarrollo de Productos Electrnicos

12.- Anexos tcnicos Caractersticas del microcontrolador PIC16F876A. Caractersticas del LM350K. Caractersticas elctricas del inversor de giro L298. Caractersticas de los sensores infrarrojos CNY70. Caractersticas del MAX232. Caractersticas elctricas tarjeta emisora de datos CEBEK C-0503. Caractersticas elctricas tarjeta receptora de datos CEBEK C-504. Curso de Robtica y otras aplicaciones en el aula de tecnologa.

Daniel Garca Bravo I.E.S. Joan Mir

87

Vous aimerez peut-être aussi