Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto...

65
Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de Productos Electrónicos Alumno: Juan Manuel Romero Rodríguez 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

Transcript of Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto...

Page 1: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

Proyecto

ROBOT-BALIZA

Departamento de Electricidad-Electrónica

Ciclo Superior de Desarrollo de Productos Electrónicos

Alumno: Juan Manuel Romero Rodríguez

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

Page 2: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

2 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

Índice: Pagina

1.- Explicación breve del Proyecto. …………………………………………………………….. 4

2.- Diagrama en Bloques del Robot Laberinto y Coche Teledirigido. ...................................... 5

3.- Análisis de los Bloques. ............................................................................................................ 6

3.1.- Alimentación del Circuito. ........................................................................................... 6

3.2.- Receptor de Radiofrecuencia. ...................................................................................... 6

3.3.- Sensores de Distancia, Brújula y Servomotor. ............................................................. 7

3.4.- Cargador del Programa. ............................................................................................... 8

3.5.- Control. .................................................................................................................... ..... 8

3.6.- Etapa de Potencia. ......................................................................................................... 9

3.7.- Indicadores Luminosos. ................................................................................................ 9

3.8.- Pantalla LCD. ............................................................................................................... 10

3.9.- Motores de C.C. .......................................................................................................... 10

3.10.- Mando. ........................................................................................................................ 11

3.11.- Baliza…………………………………………………………………………………

4.-Esquema eléctrico de simulación con Proteus. ....................................................................... 12

4.1.- Simulación del Robot Baliza. ..................................................................................... ..... 12

4.2.- Simulación del Robot Baliza + Coche Teledirigido. ....................................................... 13

5.- Programas Robot Baliza. ....................................................................................................……14

5.1.- (Simulación). ....................................................................................... 14

5.2.- (Real). ........................................................................................ .......... 20

6.- Programas Robot Baliza + Coche Teledirigido. ............................................................. 26

6.1.- (Simulación). ............................................................................... 26

6.2.- (Real). ................................................................................... ...... 36

6.3.-. ...................................................................................................... 45

7.- Librerías. .................................................................................................................. .................. 48

7.1.- I2C.INC ; Librería de control de bus I2C. ............................................. 48

7.2.- I2C_16F.INC ; Librería de control de bus I2C de Microsystems. ................ 50

7.3.- BIN_BCD.INC ; Librería que transforma un numero en binario en BCD. ..... 53

7.4.- PWM_RC1.INC ; Librería de Control de PWM por la patilla RC1. .................. 54

7.5.- PWM_RC2.INC ; Librería de Control de PWM por la patilla RC2. .................. 56

7.6.- RETARDOS.INC ; Librería de Retardos. ............................................................. 57

7.7.- LCD_4B_1.INC ; Librería de Control del LCD. ................................................ 61

7.8.- LCD_MENS.INC ; Librería de Control de mensajes en el LCD. ....................... 67

7.9.- SRF08_L1.INC ; Librería de control del sonar SRF08. .................................... 70

7.10.- RM1_S_RF.INC ; Librería de Recepción Serie. ................................................. 73

7.11.- T_M_S_RF.INC ; Librería de Transmisión Serie. .............................................. 76

8.- Diseño de Placas de Circuitos Impresos. ................................................................................ 78

8.1.- Alimentación del Circuito + Cargador del Programa. ......................................................78

8.1.1.- Esquema Eléctrico. .................................................................................. 78

8.1.2.- Cara de Componentes y de pistas Top Copper . ...................................... 78

8.1.3.- Cara de pistas Bottom Copper . ............................................................... 78

Page 3: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

3 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

Índice: Pagina

8.2.- Control + Potencia + etc. ................................................................................................... 79

8.2.1.- Esquema Eléctrico. .................................................................................. 79

8.2.2.- Cara de Componentes y de pistas Top Copper . ...................................... 80

8.2.3.- Cara de pistas Bottom Copper . ............................................................... 81

8.3.- Mando. .............................................................................................................................. 82

8.3.1.- Esquema Eléctrico. .................................................................................. 82

8.3.2.- Cara de Componentes y de pistas Top Copper . ...................................... 82

8.3.3.- Cara de pistas Bottom Copper . ............................................................... 82

8.4.- Baliza. ................................................................................... ............................................. 82

8.3.1.- Esquema Eléctrico. .................................................................................. 82

8.3.2.- Cara de Componentes y de pistas Top Copper . ...................................... 82

8.3.3.- Cara de pistas Bottom Copper . ............................................................... 82

9.- Diseño mecánico. ............................................................................................................ ........... 83

9.1.- Carrocería Placa-Robot. ............................................................................... 83

10.- Lista de Componentes. ..................................................................................................... ....... 84

10.1.- Alimentación del Circuito + Cargador del Programa. ............................... 84

10.2.- Control + Potencia + etc. ........................................................................... 85

10.3.- Mando. ....................................................................................................... 87

10.4.- Baliza………………………………………………………………………

10.5.- Carrocería. ................................................................................................. 88

11.- Coste Económico. ............................................................................................................ ....... 89

11.1.- Desarrollo del Proyecto. ........................................................................... 89

11.2.- Material . ................................................................................................... 89

12.- Referencias. ..................................................................................................................... ........ 89

13.- Anexos ...................................................................................................................... ............. 90

12.1.- Características Eléctricas del Motor de Corriente Continua. ................................. 90

12.2.- Características Eléctricas Tarjeta Emisora SAW para

Datos 433,92 MHz. ( CEBEK C-0503 ). ...............................................................

12.3.- Características Eléctricas Tarjeta Receptora de

Datos 433,92 MHz. ( CEBEK C-504 ). .................................................................

12.4.- Características Eléctricas del Sonar SRF08. ...........................................................

12.5.- Características Eléctricas del Compás Digital. CMPSO3. ....................................

12.6.- Características principales del PIC 16F876A. .......................................................

12.7.- Características pantalla LCD (2X16). ....................................................................

Page 4: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

4 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

1.- Explicación breve del Proyecto.

El proyecto que he llevado a cabo consiste en un robot cuya misión será la de detectar una “baliza”

e ir hacia ella. La función de la baliza es emitir una señal infrarroja a una determinada frecuencia.

En el robot estarán alojados dos receptores de infrarrojos que detectarán la señal infrarroja que

emite la baliza.

Además, el robot incluye un sensor de ultrasonidos, con la finalidad de detectar obstáculos y

esquivarlos.

También he añadido al robot tres salidas más que de momento están inutilizadas: dos para sensores

de ultrasonidos y la otra para un compás digital.

El microcontrolador que he utilizado es un PIC16F877, que consta de 5 puertos.

El control de giro del robot es mediante un servomotor. Consta a su vez de dos motores de tracción,

los cuales podremos controlar su velocidad mediante PWM.

Le he dotado de una pantalla LCD y unos led para indicar lo que hace en cada momento el robot e

interactuar con la persona que lo usa.

El robot incluye también una comunicación vía radiofrecuencia para poder ser utilizado sin cables y

a distancia. Esto se consigue con las tarjetas transmisora y receptora CEBECK C-0503 y C-0504.Estas

tarjetas envían y reciben datos en modulación AM que trabajan a una frecuencia portadora 433,92

MHz y tienen un Ancho de Banda de 4 KHz.

Otra característica importante del robot es que la fuente de alimentación y el cargador de programas

del PIC se ha elaborado en una placa aparte, separándolo así de la placa principal del robot.

El software del robot-baliza se puede grabar directamente en el microcontrolador sin necesidad de

extraerlo. Para ello se ha utilizado el grabador PICdownloader.exe. Los microcontroladores tienen

que tener cargado previamente un programa de comunicaciones para comunicarnos con un

Ordenador Personal.

Page 5: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

5 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

2.- Diagrama en Bloques del Robot Laberinto y Coche Teledirigido.

Page 6: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

6 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

3.- Análisis de los Bloques.

3.1.- Alimentación del Circuito.

La Fuente de Alimentación es un circuito regulador de tensión que se encarga de obtener una tensión

de 5V fijos y continuos a partir de una superior de 12V. Para ello se ha utilizado el regulador 7805 (Encapsulado

TO3) que nos puede dar una corriente de salida Imax de 1,5 A.

C2,C3 y C4 son condensadores de filtro, para eliminar ruido e interferencias.

El diodo D3 tiene la misión de proteger el circuito en caso de poner la batería BAT1 al revés.

El diodo Led D4 nos indica que la fuente esta encendida, estando limitada su corriente a 20 mA por la resistencia

R1.

Los diodos D1 y D2 son de protección del regulador 7805 de sobretensiones e inversiones de tensión de salida .

También obtenemos una tensión de 11,4 V para alimentar los motores.

3.2.- Receptor de Radiofrecuencia.

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.

Page 7: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

7 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

3.3.- Sensores de Distancia, Brújula y Servomotor.

El sensor SFR08 consiste en un medidor ultrasónico de distancia de bajo coste desarrollado por la firma

DEVANTECH Ltd. Emplea un microcontrolador PIC 16F872 que realiza todas las funciones de control e

interface, lleva dos capsulas ultrasónicas de 40 KHz que nos van a proporcionar la distancia a un objeto y una

célula LDR que nos va a indicar la luz ambiental existente.

El rango de medidas es hasta 6m, pero cuanto más cerca mida, más exacto será la medición.

Se controla a través del bus I2C.

El consumo es mínimo, de 3 a 15 mA.

Puede medir ecos.

Nos da la medida en cm, pulgadas o microsegundos.

El compás digital Se trata de un módulo diseñado por la firma DEVANTECH

Ltd. Capaz de medir la posición en grados respecto al norte magnético. Es un

compás o brújula digital. Emplea los sensores KMZ51 de PHILIPS sensibles al

campo magnético de la tierra. Ambos sensores están montados en ángulo recto

entre sí sobre la placa impresa .

La medida nos la puede dar de dos maneras:

Una señal PWM proporcional a la variación de grados.

Un número de 0 a 3600 proporcional a la variación de grados a través de bus

I2C.

El servomotor es un dispositivo similar a un motor de corriente continua, que tiene la capacidad de ubicarse en

cualquier posición dentro de su rango de operación, y mantenerse estable en dicha posición. Está conformado

por un motor, una caja reductora y un circuito de control.

Motor de corriente continua

Es el elemento que le brinda movilidad al servo. Cuando se aplica un potencial a sus dos terminales, este motor

gira en un sentido a su velocidad máxima. Si el voltaje aplicado en sus dos terminales es inverso, el sentido de

giro también se invierte.

Engranajes reductores

Se encargan de convertir gran parte de la velocidad de giro del motor de corriente continua en torsión.

Circuito de control

Este circuito es el encargado del control de la posición del motor. Recibe los pulsos de entrada y ubica al motor

en su nueva posición dependiendo de los pulsos recibidos.

Page 8: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

8 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

El servomotor consta de 3 terminales:

Los servomotores tienen 3 terminales:

Terminal positivo: Recibe la alimentación del motor (4 a 8 voltios)

Terminal negativo: Referencia tierra del motor (0 voltios)

Entrada de señal: Recibe la señal de control del motor

3.5.- Cargador del Programa.

El cargador de programa nos servirá para intercambiar datos en serie entre un PC y el microcontrolador

del robot. Por lo tanto será el interfaz que nos sirva para introducir los programas desde el PC al

microcontrolador.

El circuito integrado lleva internamente 2 conversores de nivel de TTL a rs232 y otros 2 de rs232 a TTL

con lo que en total podremos manejar 4 señales del puerto serie del PC.

Estos conversores son suficientes para manejar las señales más utilizadas del puerto serie del PC, que

son TX, RX, RTS y CTS.

Consiste en un circuito que intercambia niveles TTL a RS 232 donde

Un 0 en TTL equivale a 0V en RS232, equivalente a una tensión comprendida entre 3 y 15V.

Un 1en TTL equivale a 5V en RS232, equivalente a una tensión comprendida entre -3 y -15V. El Circuito Integrado MAX 232 se encarga de convertir los niveles de TTL a RS232.

Los datos se comunican en serie de la siguiente manera:

Primero se envía un “bit de star”, a continuación los “bits de datos” (primero el bit de mayor

peso) y finalmente los “bits de STOP”.

El número de bits de datos y de bits de Stop es uno de los parámetros configurables, así como

el criterio de paridad par o impar para la detección de errores. Normalmente, las

comunicaciones serie tienen los siguientes parámetros: 1 bit de Start, 8 bits de Datos, 1 bit de

Stop y sin paridad.

En esta figura se puede ver un ejemplo de la transmisión del dato binario 10011010. La línea

en reposo está a nivel alto:

Page 9: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

9 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

Número de pin Señal

1 DCD (Data Carrier Detect)

2 RX

3 TX

4 DTR (Data Terminal Ready)

5 GND

6 DSR (Data Sheet Ready)

7 RTS (Request To Send)

8 CTS (Clear To Send)

9 RI (Ring Indicator)

Page 10: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

10 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

Page 11: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

11 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

3.6.- Control.

Un microcontrolador PIC16F877 se encarga de realizar el control del robot (control con PWM de los

motores, lectura de los sensores infrarrojos, lectura del sensor de ultrasonidos e indicación de sus medidas en el

LCD) y de recibir los datos procedentes del receptor de radiofrecuencia. El microcontrolador PIC 16F877 trabaja

con un cristal de una frecuencia de 1 MHz.

Tiene un Jumper (J1) que nos sirve para elegir entre cargar el programa (procedente del Ordenador

Personal) en el microcontrolador o para recibir los datos del receptor de RF.

Se ha añadido un conmutador (SW5) que nos servirá para la elección del programa que queremos

utilizar: Robot Baliza o Coche Teledirigido.

El microcontrolador enviará también señales a la pantalla LCD, para mostrarnos diferentes mensajes y

lecturas.

CARACTERÍSTICAS 16F877

Frecuencia máxima DX-20MHz

Memoria de programa flash palabra de 14 bits 8KB

Posiciones RAM de datos 368

Posiciones EEPROM de datos 256

Puertos E/S A,B,C,D,E

Número de pines 40

Interrupciones 14

Timers 3

Módulos CCP 2

Comunicaciones Serie MSSP, USART

Comunicaciones paralelo PSP

Líneas de entrada de CAD de 10 bits 8

Juego de instrucciones 35 Instrucciones

Longitud de la instrucción 14 bits

Arquitectura Harvard

CPU Risc

Canales Pwm 2

Pila Harware -

Ejecución En 1 Ciclo Máquina -

Page 12: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

12 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

Page 13: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

13 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

3.7.- Etapa de Potencia.

La misión de este circuito es la de trabajar como un interruptor y alimentar a los motores desde VCC2.

Las señales procedentes del microcontrolador RC1 saturaran (Interruptor Cerrado VCE4 o VCE6 = 1V) o

cortarán los transistores (Interruptor Abierto VCE4 o VCE6 = 11,4V) Q4-Q5.

Mediante la patilla RC1 podremos controlar la velocidad del motor mediante PWM(Controlaremos el

tiempo a nivel alto de la frecuencia, para poder regular la velocidad).

Una pequeña corriente de base IB4 o IB5 [ IB3 = (VCC2 – VEB4-VEB5)/ R11)= (11.4V-0,7V-

0,7V)/10K = 1 mA] saturaran los transistores ya que la ganancia de los transistores en montaje Darlington es

muy grande t 4 x 5 = 2500 . Con una IB=1mA saturamos los transistores siempre y cuando el motor

consuma menos de IE t x IB = 1mA x 2500 = 2,5 A.

El optoacoplador tiene la misión de aislar eléctricamente el circuito de Control con el de Potencia, con

el fin de evitar que entre ruido al micro. Se obtiene una tensión VCE proporcional a la luz que incide en la base

del TRT (En caso de rotura del motor, la barrera de luz protege el sistema de control ya que este aguanta más de

2000V).

Funcionamiento:

RC1 = 1 Ib4 (Opto) 20 mA Vce4 (Opto) 0V. IB(Q3) 1mA (Q3 y Q4) saturado Vce4(TRT4)

1V Vmotor Izquiedo 10,4V Motor funcionando.

RC1 = 0 Ib4 (Opto) 0 mA Vce4 (Opto) 10V. IB(Q3) 0mA (Q3 y Q4) cortado Vce4(TRT4)

11,4V Vmotor Izquiedo 0V Motor parado.

Page 14: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

14 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

3.8.- Indicadores Luminosos.

Los indicadores luminosos LED nos indicaran en todo momento en que sentido de giro esta el robot o si está

parado.

Los LED están limitados en corriente por resistencias de 330 ohm.

I (Led) = [ (VR – V(Led)) / R ] =

I (Led) = [ (5V – 2V) / 330 ] = 9 mA

Page 15: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

15 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

3.9.- Pantalla LCD.

La pantalla de LCD nos muestra lo que está ocurriendo en el Robot. Nos indica la dirección de giro del robot y la

distancia a tiempo real hasta los objetos (Gracias al sensor de ultrasonidos). Características:

Es una pantalla de 2 Líneas por 16 caracteres.

Consumo de 7,5 mW.

Representa caracteres ASCII.

Desplaza los caracteres a derecha e Izquierda.

Memoria de 40 caracteres por línea de pantalla, visualizando 16 caracteres por línea.

Se pueden programar 8 caracteres.

Se puede gobernar de 2 formas diferentes:

o Conexión con un bus de 4 bits.

o Conexión con un bus de 8Bits.

El potenciómetro tiene la misión de controlar el contraste en el LCD.

3.10.- Motor de C.C.

Los motores de C.C. se componen de un rotor y un stator.

Se recomienda poner un filtro paso bajo de orden 1 de 20db/década para rechazar el ruido que genera el motor.

Este filtro atenuaria los ruidos generados por el motor a frecuencias superiores a 50 Hz.

Se recomienda poner el chasis a masa para filtrar los ruidos que generan los motores en el espectro de

radiofrecuencia, creando una Jaula de Faraday.

Finalmente, a la hora del montaje he incorporado dos motores en paralelo, en lugar de uno solo.

Page 16: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

16 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

3.11.- Mando.

El mando tiene la misión de transmitir un código asociado a cada pulsador, para poder controlar a

distancia el robot.

El microcontrolador PIC 16F877 lee los pulsadores y transmite los códigos vía serie a la tarjeta transmisora de

radiofrecuencia a una velocidad de 1562,5 baudios por segundo. Es una transmisión asíncrona (1bit de

comienzo, 8bit de Datos, 1 bit de parada sin bit de paridad ).

La Alimentación procede de un regulador 7805 que suministra 5V a todos los circuitos.

El TRT “Q1E” tiene la misión de deshabilitar la tarjeta de radiofrecuencia cuando esta no transmite datos.

La Tarjeta Emisora SAW para Datos 433,92 MHz. CEBEK C-0503 es un circuito híbrido encargado de

transmitir vía radiofrecuencia, los datos digitales procedentes del microprocesador (TX). La señal digital tiene

que tener una 20 Hz < fo < 4 KHz. Se modula en AM cuya frecuencia portadora es de 433,92 MHz.

El microcontrolador PIC 16F876a trabaja a una frecuencia de 4 MHz y ejecuta una instrucción en 1uS.

El Led D7E nos indica que el mando está encendido, está limitada su corriente en 20 mA.

El resto de los LED se iluminan cuando activamos el Pulsador correspondiente.

El diodo D7E tiene la misión de proteger el circuito en cado de invertir la Batería.

Los condensadores C1 y C2 son filtros.

VS

S

RB0E

RB1E

RB2E

RB3E

RB4E

RB1E RB3E RB0E RB2E RB4E

Q1EBD136_JOAN

Emisor de Datos CEBEK C-0503

GN

D1

1

Ve

2

-3

GN

D2

4

An

tena

11

GN

D3

13

Vcc

15

E_RF1E

1

CON1E

BORNIER1_JOAN

VI1

VO3

GN

D2

U2E7805_JOAN

A K

D6E

1N4007_JOAN12

BAT1E9V

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN4/SS7

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI/CCP212

RC2/CCP113

RC3/SCK/SCL14

RB7/PGD28

RB6/PGC27

RB526

RB425

RB3/PGM24

RB223

RB122

RB0/INT21

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI11

MCLR/Vpp/THV1

U1E

PIC16F876_JOAN

R7E2.2k

X1E

4MHz

C3E

15pF

C4E

15pF

R1E220

R2E220

R3E220

12

SW1E

12

SW3E

12

SW2E

AK

D1ELED-YELLOW_JOAN

AK

D2ELED-GREEN_JOAN

AK

D3ELED-RED_JOAN

R6E220

AK

D7ELED-RED_JOAN

Mando

1 2

SW6E

INTERRUPTOR_JOAN

C2E220uF

VDD

R4E220

12

SW4E

AK

D4ELED-RED_JOAN

R5E220

12

SW5E

AK

D5ELED-RED_JOAN

C1E220uF

VDD

Izquierda Atras Adelante Parar Derecha

Page 17: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

17 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

3.11.- Baliza.

La baliza consiste básicamente en un sistema de emisión de infrarrojos. Esta señal infrarroja nos servirá para que

los receptores de infrarrojos incorporados en el coche la detecten.

Se compone principalmente de un 555, cuya función es la de generar una determinada frecuencia (36Khz). Esta

frecuencia se trata de una señal cuadrada, que saturará y cortara el transistor Q1.

El diodo D1 servirá de protección en caso de conectar la alimentación al revés.

El diodo D2, limitado por su correspondiente resistencia de 330 ohm nos indicará si la baliza esta conectada.

Mediante el potenciómetro RV1 podremos controlar la frecuencia de salida de la señal infrarroja dentro de unos

determinados márgenes.

Page 18: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

18 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

4.-Esquema eléctrico de simulación con Proteus.

4.1.- Simulación del Robot Baliza.

Page 19: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

19 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

4.2.- Simulación del Robot Baliza + Coche Teledirigido.

Page 20: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

20 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

5.- Programas Robot-Baliza.

5.1.- (Simulación).

5.2.- (Real).

6.- Programas Robot Baliza + Coche Teledirigido.

6.1.- (Simulación).

6.2.- (Real).

6.3.-

Page 21: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

21 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

7.- Librerías.

7.1.- I2C.INC

title " Librería de Transmisión y recepción de datos con I2C "

Config_transmision_I2C BSF STATUS,RP0 ; Selecciono la pagina 1 de la memoria

BSF TRISC,4

BSF TRISC,3

MOVLW 0X09

MOVWF SSPADD ; Cargas 09H en el registro SSPADD La velocidad de

Transmisión

; será de 100 KHz

BCF STATUS,RP0 ; Selecciono la pagina 0 de la memoria

BCF PIR1,SSPIF

BSF SSPCON,SSPM3 ; I2C en modo maestro con una

; F de Tr. = Fosc/(4*(SSPADD+1))

BCF SSPCON,SSPM2

BCF SSPCON,SSPM1

BCF SSPCON,SSPM0

BSF SSPCON,SSPEN ; Permites la configuración serie de los pines SDA y SCL.

GOTO VOLVER

Bit_start_I2C BSF STATUS,RP0 ; Selecciono la pagina 1 de la memoria

BSF SSPCON2,SEN ; Lanzamos el bit de START.

BCF STATUS,RP0 ; Selecciono la pagina 0 de la memoria

BTFSS PIR1,SSPIF ; Compruebas si se ha transmitido el Bit de START.

GOTO $-1

BCF PIR1,SSPIF

GOTO VOLVER

Transmitir_dato_I2C MOVWF SSPBUF ; Transmitimos el dato al Esclavo

BCF STATUS,RP0 ; Selecciono la pagina 0 de la memoria

BTFSS PIR1,SSPIF ; Compruebas si se ha transmitido el Dato.

GOTO $-1

BCF PIR1,SSPIF

BSF STATUS,RP0 ; Selecciono la pagina 1 de la memoria

BTFSS SSPCON2,ACKSTAT ; Si el esclavo pone ACKSTAT = 0 la

; transmisión es correcta,

; Si no hay respuesta del esclavo enviamos STOP.

GOTO Trans_correcta

GOTO Bit_stop_I2C

Page 22: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

22 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

Trans_correcta BCF STATUS,RP0 ; Selecciono la pagina 0 de la memoria

GOTO VOLVER

Recibir_dato_I2C BSF STATUS,RP0 ; Selecciono la pagina 1 de la memoria

BSF SSPCON2,RCEN ; Permito la Recepción de datos

BCF STATUS,RP0 ; Selecciono la pagina 0 de la memoria

BTFSS PIR1,SSPIF ; Compruebo si he recibido algún dato.

GOTO $-1

BCF PIR1,SSPIF

MOVF SSPBUF,W ; Dato recibido en el registro SSPBUF

BSF STATUS,RP0 ; Selecciono la pagina 1 de la memoria

BSF SSPCON2,ACKDT ; Pone el maestro el bit de reconocimiento

; de que ha llegado el Dato.

BSF SSPCON2,ACKEN ; Permito que el bit de reconocimiento este activo.

BCF STATUS,RP0 ; Selecciono la pagina 0 de la memoria

BTFSS PIR1,SSPIF

GOTO $-1

BCF PIR1,SSPIF

GOTO VOLVER

Bit_stop_I2C BSF STATUS,RP0 ; Selecciono la pagina 1 de la memoria

BSF SSPCON2,PEN ; Activo STOP

BCF STATUS,RP0 ; Selecciono la pagina 0 de la memoria

BTFSS PIR1,SSPIF ; Compruebo que esta activado.

GOTO $-1

BCF PIR1,SSPIF

GOTO VOLVER

ReStart_I2C BSF STATUS,RP0 ; Comenzar de nuevos sin mandar STOP.

BSF SSPCON2,RSEN

BCF STATUS,RP0

BTFSS PIR1,SSPIF ; Compruebo que esta activado.

GOTO $-1

BCF PIR1,SSPIF

VOLVER RETURN

Page 23: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

23 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

7.2.- I2C_16F.INC

;******************************************************************************************

*****

; I2C_16FXXX.INC

; Autor: Mikel Etxebarria

; (c) Ingeniería de Microsistemas Programados S.L.

; www.microcontroladores.com

; Bilbao 2007

;

; El conjunto de rutinas de propósito general que se presentan a continuación permiten realizar las

funciones

; básicas del protocolo I2C mediante un PIC16FXXX. Este fichero se debe incluir en los futuros

programas

; fuente mediante la directiva INCLUDE:

;

; I2C_INI: Activa e inicia el módulo MSSP de algunos dispositivos PIC16FXXX para trabajar en

el

; modo I2C Master a 100KHz

; I2C_Send_Start: Genera en el bus I2C la condición de inicio

; I2C_Senta_Stop: Genera en el bus I2C la condición de Stop

; I2C_Send_Byte: Transmite el byte contenido en W por el bus I2C. La rutina finaliza cuando se recibe

el /ACK

; generado por el slave.

; I2C_Read_Byte: Lee un byte procedente del dispositivo I2C slave seleccionado y lo devuelve en el

registro W.

; Seguidamente se genera y transmite el bit /ACK si procede (bit 0 de variable ACK=0)

o el

; bit NACK (bit 0 de variable ACK=1)

; Leer_I2C: Lee un nº de bytes del dispositivo I2C. La variable Dir_I2C contiene la dirección I2C

del

; dispositivo.

; La variable I2C_Dir_Ini contiene la dirección interna inicial. La variable

I2C_N_Bytes

; contiene el nº de bytes a leer. Los bytes recibidos se depositan en RAM a partir de la

; posición indicada por I2C_Buffer.

; Escr_I2C: Escribe sobre el dispositivo I2C un nº de bytes. La variable Dir_I2C contiene la

dirección del ; dispositivo.

; La variable Dir_Ini contiene la dirección interna inicial. La variable I2C_N_Bytes

contiene el ; nº de bytes a escribir. Se supone que los bytes a escribir están previamente

depositados en un ; buffer de memoria cuyo inicio está representado por I2C_Buffer.

ifndef I2C_Var ;En el programa principal se ha definir la dirección inicial para las variables

empleadas en I2C_16FXXX

messg "ERROR !! - Establecer dirección de inicio de las variables empleadas en

I2C_16FXXX (p.e.

I2C_Var equ 0x20)"

endif

;******************************************************************************************

*****

Page 24: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

24 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

;Reserva posiciones RAM empleadas por las rutinas I2C. El inicio debe ser ajustado por el usuario

;para que esas posiciones no se solapen con las empleadas por otras rutinas.

cblock

I2C_Var ;Define inicio de posiciones RAM empleadas por las rutinas I2C

I2C_ACK ;Envío de ACK/NACK. Si I2C_ACK<0>=0 --> ACK si I2C_ACK<0>=1 --> NACK

Dir_I2C ;Dirección I2C del dispositivo

I2C_Dir_Ini ;Dirección interna del dispositivo I2C

I2C_N_Bytes ;Nº de bytes a transferir

I2C_Buffer ;Inicio del buffer de transferencia con un dispositivo I2C

endc

;******************************************************************************************

*****

;I2C_Ini: Ajusta el módulo MSSP en el modo Master con frecuencia de trabajo = Fosc/(4*(SPADD+1))

I2C_Ini bsf STATUS,RP0 ;Página 1

movlw b'10000000'

movwf SSPSTAT ;Velocidad estándar con niveles I2C

movlw .9

movwf SSPADD ;Valor en SSPADD para 100KHz

bcf STATUS,RP0 ;Página 0

movlw b'00101000'

movwf SSPCON ;Módulo MSSP en ON, modo Master y

;Fscl = Fosc/(4*(SPADD+1))

return

;******************************************************************************************

*****

;I2C_Send_Start: Envía la condición de inicio

I2C_Send_Start bcf PIR1,SSPIF ;Restaura el flag del módulo MSSPç

bsf STATUS,RP0 ;Página 1

bsf SSPCON2,SEN ;Activa secuencia de inicio

bcf STATUS,RP0 ;Página 0

I2C_Start_Wait btfss PIR1,SSPIF ;Fin de secuencia de inicio ??

goto I2C_Start_Wait ;No, esperar

return

;******************************************************************************************

*****

;I2C_Send_Stop: Envía la secuencia de stop

I2C_Send_Stop bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP

bsf STATUS,RP0 ;Página 1

bsf SSPCON2,PEN ;Activa secuencia de stop

bcf STATUS,RP0 ;Página 0

I2C_Stop_Wait btfss PIR1,SSPIF ;Fin de secuencia de Stop ??

goto I2C_Stop_Wait ;No, esperar

return

;******************************************************************************************

*****

;I2C_Send_Byte: Transmite el byte del W vía I2C. La rutina finaliza cuando se recibe /ACK

Page 25: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

25 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

I2C_Send_Byte bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP

movwf SSPBUF ;Byte a transmitir pasa al buffer de salida

I2C_Send_Byte_1 btfss PIR1,SSPIF ;Recibido el bit /ACK ??

goto I2C_Send_Byte_1 ;No, esperar

return

;******************************************************************************************

*****

;I2C_Read_Byte: Lee un byte procedente del dispositivo I2C seleccionado y lo devuelve en W

;Seguidamente se genera y transmite el bit /ACK si procede (bit 0 de variable ACK=0) o el

;bit NACK (bit 0 de variable ACK=1)

I2C_Read_Byte bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP

bsf STATUS,RP0 ;Página 1

bsf SSPCON2,RCEN ;Activa el receptor I2C

bcf STATUS,RP0 ;Página 0

I2C_Read_Wait btfss PIR1,SSPIF ;Recibidos los 8 bits ??

goto I2C_Read_Wait ;No, esperar

bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP

btfsc I2C_ACK,0 ;Enviar ACK ??

goto No_ACK ;No, enviar NACK

bsf STATUS,RP0 ;Si, selecciona página 1

bcf SSPCON2,ACKDT ;Pone bit ACK a "0"

bsf SSPCON2,ACKEN ;Activa la secuencia de generación del bit ACK

bcf STATUS,RP0 ;Página 0

ACK_Wait btfss PIR1,SSPIF ;Secuencia ACK finalizada ??

goto ACK_Wait ;No, esperar

movf SSPBUF,W ;Lee el byte recibido

return

;Algunos dispositivos precisan que el master envíe un NACK tras recibir el último byte

No_ACK bsf STATUS,RP0 ;Página 1

bsf SSPCON2,ACKDT ;Pone bit ACK a "1"

bsf SSPCON2,ACKEN ;Activa la secuencia de generación del bit NACK

bcf STATUS,RP0 ;Página 0

NACK_Wait btfss PIR1,SSPIF ;Secuencia NACK finalizada ??

goto NACK_Wait ;No, esperar

movf SSPBUF,W ;Lee el byte recibido

return

;******************************************************************************************

*****

;Leer_I2C: Lee un nº de bytes del dispositivo I2C. La variable Dir_I2C contiene la dirección

;I2C del dispositivo. La variable I2C_Dir_Ini contiene la dirección interna inicial. La variable

;I2C_N_Bytes contiene el nº de bytes a leer. Los bytes recibido se depositan en RAM a

;partir de la posición indicada por I2C_Buffer

Leer_I2C movlw I2C_Buffer

movwf FSR ;Inicio de la dirección del Buffer en RAM

bcf I2C_ACK,0 ;Envío de ACK tras cada byte leído (excepto el

último)

call I2C_Send_Start ;Secuencia de inicio

movf Dir_I2C,W

call I2C_Send_Byte ;Dirección I2C del dispositivo en modo escritura

movf I2C_Dir_Ini,W

call I2C_Send_Byte ;Envía la dirección interna del dispositivo

Page 26: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

26 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

call I2C_Send_Stop ;Envía secuencia de stop

call I2C_Send_Start ;Envía secuencia de inicio

movf Dir_I2C,W

iorlw b'00000001'

call I2C_Send_Byte ;Envía dirección I2C del dispositivo en modo

lectura

Leer_I2C_1 decfsz I2C_N_Bytes,F ;Ultimo byte a leer ??

goto Leer_I2C_2 ;No

goto Fin_Leer_I2C ;Si

Leer_I2C_2 call I2C_Read_Byte ;Lee el byte del dispositivo y manda ACK

movwf INDF ;Almacena en el buffer

incf FSR,F ;Siguiente posición del buffer

goto Leer_I2C_1 ;Continuar leyendo

Fin_Leer_I2C bsf I2C_ACK,0 ;Si, enviar NACK cuando se lea el último

call I2C_Read_Byte ;Lee último byte y manda NACK

movwf INDF ;Almacena en el buffer

incf FSR,F ;Siguiente posición del buffer

call I2C_Send_Stop ;Si, mandar condición de stop

return

;******************************************************************************************

*****

;Escr_I2C: Escribe sobre el dispositivo I2C un nº de bytes. La variable Dir_I2C contiene la

;dirección del dispositivo. La variable Dir_Ini contiene la dirección interna inicial. La

;variable N_Bytes contiene el nº de bytes a escribir. Se supone que los bytes a escribir están

;previamente depositados en un buffer de memoria cuyo inicio está representado por Buffer

Escr_I2C movlw I2C_Buffer

movwf FSR ;Inicio de la dirección del Buffer en RAM

call I2C_Send_Start ;Secuencia de inicio

movf Dir_I2C,W

call I2C_Send_Byte ;Dirección I2C del dispositivo en modo escritura

movf I2C_Dir_Ini,W

call I2C_Send_Byte ;Envía la dirección interna del dispositivo

Escr_I2C_1 movf INDF,W ;Coge del buffer en RAM el byte a escribir

call I2C_Send_Byte ;Lo escribe sobre el dispositivo I2C

incf FSR,F ;Siguiente dirección del buffer en RAM

decfsz I2C_N_Bytes,F ;I2C_Contador,F ;Es el último ??

goto Escr_I2C_1 ;No

call I2C_Send_Stop ;Envía secuencia de stop

return

7.3.- BIN_BCD.INC.

;********************************* Librería "BIN_BCD.INC"

****************************************

;

; ===================================================================

; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"

; E. Palacios, F. Remiro y L. López. www.pic16f84a.com

; Editorial Ra-Ma. www.ra-ma.es

; ===================================================================

;

; Un número binario natural de 8 bits es convertido a BCD. El resultado se guarda en tres

; posiciones de memorias llamadas: BCD_Centenas, BCD_Decenas y BCD_Unidades.

;

; El procedimiento utilizado es mediante restas de 10, tal como se explicó en el capítulo 9.

;

Page 27: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

27 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

; Entrada: En el registro W el número binario natural a convertir.

; Salidas: En (BCD_Centenas), (BCD_Decenas) y (BCD_Unidades).

; En el registro W también las decenas (nibble alto) y unidades (nibble bajo).

;********************************** Subrutina "BIN_a_BCD"

****************************************

CBLOCK ; En las subrutinas no se debe fijar la dirección

; de la RAM de usuario. Se toma a continuación de

BCD_Centenas ; la última asignada.

BCD_Decenas

BCD_Unidades

ENDC

BIN_a_BCD clrf BCD_Centenas ; Carga los registros con el resultado inicial.

clrf BCD_Decenas ; En principio las centenas y decenas a cero.

movwf BCD_Unidades ; Se carga el número binario a convertir.

BCD_Resta10 movlw .10 ; A las unidades se les va restando 10 en cada

subwf BCD_Unidades,W ; pasada. (W)=(BCD_Unidades) -10.

btfss STATUS,C ; ¿C = 1?, ¿(W) positivo?, ¿(BCD_Unidades)>=10?

goto BIN_BCD_Fin ; No, es menor de 10. Se acabó.

BCD_IncrementaDecenas movwf BCD_Unidades ; Recupera lo que queda por restar.

incf BCD_Decenas,F ; Incrementa las decenas y comprueba si

ha

movlw .10 ; llegado a 10. Lo hace mediante una

resta.

subwf BCD_Decenas,W ; (W)=(BCD_Decenas)-10).

btfss STATUS,C ; ¿C = 1?, ¿(W) positivo?,

;¿(BCD_Decenas)>=10?

goto BCD_Resta10 ; No. Vuelve a dar otra pasada, restándole

10 a

; las unidades.

BCD_IncrementaCentenas clrf BCD_Decenas ; Pone a cero las decenas

incf BCD_Centenas,F ; e incrementa las centenas.

goto BCD_Resta10 ; Otra pasada: Resta 10 al número a

convertir.

BIN_BCD_Fin swapf BCD_Decenas,W ; En el nibble alto de (W) también las

decenas.

addwf BCD_Unidades,W ; En el nibble bajo de (W) las unidades.

return ; Vuelve al programa principal.

; La directiva "END" se debe poner en el programa principal no aquí.

; ===================================================================

; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"

; E. Palacios, F. Remiro y L. López. www.pic16f84a.com

; Editorial Ra-Ma. www.ra-ma.es

; ===================================================================

7.4.- PWM_RC1.INC.

Page 28: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

28 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

title " Librería PWM salida por RC1 "

;El microcontrolador PIC 16f876a tiene un hardware integrado que puede generar 2 señales PWM

;por las patillas RC2 y RC1.

;El periodo para ambas señales se fija con la siguiente fornula

;T =[(PR2+1)*4*Tosc]*(TMR2_Valor_preescalar)

;El nivel alto T1H se controla con 10 bit ( Los 8 bit mas significativo con el registro CCPR1L y

;los dos bit menos significativos con CCP1X y CCP1Y que están en el registro CCP1CON)

;Esta señal sale por la patilla RC2.

;El nivel alto T2H se controla con 10 bit ( Los 8 bit mas significativo con el registro CCPR2L y

;los dos bit menos significativos con CCP2X y CCP2Y que están en el registro CCP2CON)

;Esta señal sale por la patilla RC1.

;Para refrescar el nivel alto T1H que haber transcurrido un tiempo superior a un periodo "T".

;El Servomotor de Futaba se controla con una señal cuadrada de periodo "T1".

;La posición del Servomotor lo determina el nivel alto de la señal "T1H"

;El Servomotor de Futaba necesita un periodo "T1" entre 10ms y 30 ms.

;Cargando los registros de forma correcta sale T1 =[(255+1)*4*1uS](16)=16,384 ms (Cristal de cuarzo 1 MHz)

;Tiene un control de Posición de -90 Grados < P (Angular)< +90 Grados controlado con T1H.

;Para -90 Grados corresponde un nivel alto T1H = 0,6 ms

;Para 0 Grados corresponde un nivel alto T1H = 1,2 ms

;Para +90 Grados corresponde un nivel alto T1H = 1,8 ms

;**************************** Igualdades

*******************************************************

PERIODO EQU 0xFF ; Representa el Periodo de la señal de PWM.

;**************************** Sección de Configuración

*******************************************

CONF_PWM_RC1 BSF STATUS,RP0 ; Ir al Banco1

BCF TRISC,1 ; Habilitamos PC1 como salida.

MOVLW PERIODO ; Cargamos el Periodo de la señal de PWM.

MOVWF PR2

BCF STATUS,RP0 ; Ir al Banco 0

MOVLW B'00000111' ;Cargamos el Valor Preescalar.(PWM INTERNO)

MOVWF T2CON

MOVLW B'00001100' ;Cargamos los 2 Bit menos significativos del nivel

;Alto de la Señal PWM y configuramos y lanzamos PWM.

MOVWF CCP2CON ;Salida de señal por RC1

MOVLW D'0' ; Inicializamos la PWM con cero.

MOVWF CCPR2L

Page 29: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

29 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

RETURN

;*************************** Principal

**********************************************************

PWM_RC1 MOVWF CCPR2L ; Nivel Alto de la señal PWM (Salida por RC1).

; CALL Retardo_20ms ; Tiene que transcurrir un periodo antes de refrescar

; el nivel alto de la señal.

RETURN

7.5.- PWM_RC2.INC.

title " Librería PWM salida por RC2 "

;El microcontrolador PIC 16f876a tiene un hardware integrado que puede generar 2 señales PWM

;por las patillas RC2 y RC1.

;El periodo para ambas señales se fija con la siguiente formula

;T =[(PR2+1)*4*Tosc]*(TMR2_Valor_preescalar)

;El nivel alto T1H se controla con 10 bit ( Los 8 bit mas significativo con el registro CCPR1L y

;los dos bit menos significativos con CCP1X y CCP1Y que están en el registro CCP1CON)

;Esta señal sale por la patilla RC2.

;El nivel alto T2H se controla con 10 bit ( Los 8 bit mas significativo con el registro CCPR2L y

;los dos bit menos significativos con CCP2X y CCP2Y que están en el registro CCP2CON)

;Esta señal sale por la patilla RC1.

;Para refrescar el nivel alto T1H que haber transcurrido un tiempo superior a un periodo "T".

;El Servomotor de Futaba se controla con una señal cuadrada de periodo "T1".

;La posición del Servomotor lo determina el nivel alto de la senal "T1H"

;El Servomotor de Futaba necesita un periodo "T1" entre 10ms y 30 ms.

;Cargando los registros de forma correcta sale T1 =[(255+1)*4*1uS](16)=16,384 ms (Cristal de cuarzo 1 MHz)

;Tiene un control de Posición de -90 Grados < P (Angular)< +90 Grados controlado con T1H.

;Para -90 Grados corresponde un nivel alto T1H = 0,6 ms

;Para 0 Grados corresponde un nivel alto T1H = 1,2 ms

;Para +90 Grados corresponde un nivel alto T1H = 1,8 ms

;**************************** Igualdades

*********************************************************

Page 30: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

30 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

PERIODO EQU 0xFF ; Representa el Periodo de la señal de PWM.

;**************************** Sección de Configuración

********************************************

CONF_PWM_RC2 BSF STATUS,RP0 ; Ir al Banco 1

BCF TRISC,2 ; Habilitamos PC2 como salida.

MOVLW PERIODO ; Cargamos el Periodo de la señal de PWM.

MOVWF PR2

BCF STATUS,RP0 ; Ir al Banco 0

MOVLW B'00000111' ; Cargamos el Valor Preescalar.(PWM INTERNO)

MOVWF T2CON

MOVLW B'00001100' ; Cargamos los 2 Bit menos significativos del nivel

; Alto de la señal PWM y configuramos y lanzamos PWM.

MOVWF CCP1CON ; Salida de señal por RC2

MOVLW D'0'

MOVWF CCPR1L

RETURN

;*************************** Principal

***********************************************************

PWM_RC2 MOVWF CCPR1L ; Nivel Alto de la señal PWM (Salida por RC2).

; CALL Retardo_20ms ; Tiene que transcurrir un periodo antes de refrescar

; el nivel alto de la señal.

RETURN

7.6.- RETARDOS.INC.

;**************************** Librería "RETARDOS.INC" ***************************************************** ; ; =================================================================== ; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" ; E. Palacios, F. Remiro y L. López. ; Editorial Ra-Ma. www.ra-ma.es ; =================================================================== ; ; Librería con múltiples subrutinas de retardos, desde 4 microsegundos hasta 20 segundos. ; Además se pueden implementar otras subrutinas muy fácilmente. ; ; Se han calculado para un sistema microcontrolador con un PIC trabajando con un cristal ; de cuarzo a 4 MHz. Como cada ciclo máquina son 4 ciclos de reloj, resulta que cada ; ciclo máquina tarda 4 x 1/4MHz = 1 µs. ; ; En los comentarios, "cm" significa "ciclos máquina". ; ;*********************************** ZONA DE DATOS ***************************************************************

Page 31: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

31 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

CBLOCK R_ContA ; Contadores para los retardos. R_ContB R_ContC ENDC ; ;****************************** RETARDOS de 4 hasta 10 microsegundos **************************************** ; ; A continuación retardos pequeños teniendo en cuenta que para una frecuencia de 4 MHZ, ; la llamada a subrutina "call" tarda 2 ciclos máquina, el retorno de subrutina ; "return" toma otros 2 ciclos máquina y cada instrucción "nop" tarda 1 ciclo máquina. ; Retardo_10micros ; La llamada "call" aporta 2 ciclos máquina. nop ; Aporta 1 ciclo máquina. nop ; Aporta 1 ciclo máquina. nop ; Aporta 1 ciclo máquina. nop ; Aporta 1 ciclo máquina. nop ; Aporta 1 ciclo máquina. Retardo_5micros ; La llamada "call" aporta 2 ciclos máquina. nop ; Aporta 1 ciclo máquina. Retardo_4micros ; La llamada "call" aporta 2 ciclos máquina. return ; El salto del retorno aporta 2 ciclos máquina. ; ; ********************************* RETARDOS de 20 hasta 500 microsegundos ********************************* ; Retardo_500micros ; La llamada "call" aporta 2 ciclos máquina. nop ; Aporta 1 ciclo máquina. movlw d'164' ; Aporta 1 ciclo máquina. Este es el valor de "K". goto RetardoMicros ; Aporta 2 ciclos máquina. Retardo_200micros ; La llamada "call" aporta 2 ciclos máquina. nop ; Aporta 1 ciclo máquina. movlw d'64' ; Aporta 1 ciclo máquina. Este es el valor de "K". goto RetardoMicros ; Aporta 2 ciclos máquina. Retardo_100micros ; La llamada "call" aporta 2 ciclos máquina. movlw d'31' ; Aporta 1 ciclo máquina. Este es el valor de "K". goto RetardoMicros ; Aporta 2 ciclos máquina. Retardo_50micros ; La llamada "call" aporta 2 ciclos máquina. nop ; Aporta 1 ciclo máquina. movlw d'14' ; Aporta 1 ciclo máquina. Este es el valor de "K". goto RetardoMicros ; Aporta 2 ciclos máquina. Retardo_20micros ; La llamada "call" aporta 2 ciclos máquina. movlw d'5' ; Aporta 1 ciclo máquina. Este es el valor de "K". ;

Page 32: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

32 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

; El próximo bloque "RetardoMicros" tarda: ; 1 + (K-1) + 2 + (K-1)x2 + 2 = (2 + 3K) ciclos máquina. ; RetardoMicros movwf R_ContA ; Aporta 1 ciclo máquina. Rmicros_Bucle decfsz R_ContA,F ; (K-1)x1 cm (cuando no salta) + 2 cm (al saltar). goto Rmicros_Bucle ; Aporta (K-1)x2 ciclos máquina. return ; El salto del retorno aporta 2 ciclos máquina. ; ;En total estas subrutinas tardan: ; - Retardo_500micros: 2 + 1 + 1 + 2 + (2 + 3K) = 500 cm = 500 µs. (para K=164 y 4 MHz). ; - Retardo_200micros: 2 + 1 + 1 + 2 + (2 + 3K) = 200 cm = 200 µs. (para K= 64 y 4 MHz). ; - Retardo_100micros: 2 + 1 + 2 + (2 + 3K) = 100 cm = 100 µs. (para K= 31 y 4 MHz). ; - Retardo_50micros : 2 + 1 + 1 + 2 + (2 + 3K) = 50 cm = 50 µs. (para K= 14 y 4 MHz). ; - Retardo_20micros : 2 + 1 + (2 + 3K) = 20 cm = 20 µs. (para K= 5 y 4 MHz). ; ; *************************************RETARDOS de 1 ms hasta 200 ms. ****************************************** ; Retardo_200ms ; La llamada "call" aporta 2 ciclos máquina. movlw d'200' ; Aporta 1 ciclo máquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos máquina. Retardo_100ms ; La llamada "call" aporta 2 ciclos máquina. movlw d'100' ; Aporta 1 ciclo máquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos máquina. Retardo_50ms ; La llamada "call" aporta 2 ciclos máquina. movlw d'50' ; Aporta 1 ciclo máquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos máquina. Retardo_20ms ; La llamada "call" aporta 2 ciclos máquina. movlw d'20' ; Aporta 1 ciclo máquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos máquina. Retardo_10ms ; La llamada "call" aporta 2 ciclos máquina. movlw d'10' ; Aporta 1 ciclo máquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos máquina. Retardo_5ms ; La llamada "call" aporta 2 ciclos máquina. movlw d'5' ; Aporta 1 ciclo máquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos máquina. Retardo_2ms ; La llamada "call" aporta 2 ciclos máquina. movlw d'2' ; Aporta 1 ciclo máquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos máquina. Retardo_1ms ; La llamada "call" aporta 2 ciclos máquina.

Page 33: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

33 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

movlw d'1' ; Aporta 1 ciclo máquina. Este es el valor de "M". ; ; El próximo bloque "Retardos_ms" tarda: ; 1 + M + M + KxM + (K-1)xM + Mx2 + (K-1)Mx2 + (M-1) + 2 + (M-1)x2 + 2 = ; = (2 + 4M + 4KM) ciclos máquina. Para K=249 y M=1 supone 1002 ciclos máquina ; que a 4 MHz son 1002 µs = 1 ms. ; Retardos_ms movwf R_ContB ; Aporta 1 ciclo máquina. R1ms_BucleExterno movlw d'249' ; Aporta Mx1 ciclos máquina. Este es el valor de "K". movwf R_ContA ; Aporta Mx1 ciclos máquina. R1ms_BucleInterno nop ; Aporta KxMx1 ciclos máquina. decfsz R_ContA,F ; (K-1)xMx1 cm (cuando no salta) + Mx2 cm (al saltar). goto R1ms_BucleInterno ; Aporta (K-1)xMx2 ciclos máquina. decfsz R_ContB,F ; (M-1)x1 cm (cuando no salta) + 2 cm (al saltar). goto R1ms_BucleExterno ; Aporta (M-1)x2 ciclos máquina. return ; El salto del retorno aporta 2 ciclos máquina. ; ;En total estas subrutinas tardan: ; - Retardo_200ms: 2 + 1 + 2 + (2 + 4M + 4KM) = 200007 cm = 200 ms. (M=200 y K=249). ; - Retardo_100ms: 2 + 1 + 2 + (2 + 4M + 4KM) = 100007 cm = 100 ms. (M=100 y K=249). ; - Retardo_50ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 50007 cm = 50 ms. (M= 50 y K=249). ; - Retardo_20ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 20007 cm = 20 ms. (M= 20 y K=249). ; - Retardo_10ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 10007 cm = 10 ms. (M= 10 y K=249). ; - Retardo_5ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 5007 cm = 5 ms. (M= 5 y K=249). ; - Retardo_2ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 2007 cm = 2 ms. (M= 2 y K=249). ; - Retardo_1ms : 2 + 1 + (2 + 4M + 4KM) = 1005 cm = 1 ms. (M= 1 y K=249). ; ; *********************************RETARDOS de 0.5 hasta 20 segundos ****************************************** ; Retardo_20s ; La llamada "call" aporta 2 ciclos máquina. movlw d'200' ; Aporta 1 ciclo máquina. Este es el valor de "N". goto Retardo_1Decima ; Aporta 2 ciclos máquina. Retardo_10s ; La llamada "call" aporta 2 ciclos máquina. movlw d'100' ; Aporta 1 ciclo máquina. Este es el valor de "N". goto Retardo_1Decima ; Aporta 2 ciclos máquina. Retardo_5s ; La llamada "call" aporta 2 ciclos máquina. movlw d'50' ; Aporta 1 ciclo máquina. Este es el valor de "N". goto Retardo_1Decima ; Aporta 2 ciclos máquina. Retardo_2s ; La llamada "call" aporta 2 ciclos máquina. movlw d'20' ; Aporta 1 ciclo máquina. Este es el valor de "N". goto Retardo_1Decima ; Aporta 2 ciclos máquina. Retardo_1s ; La llamada "call" aporta 2 ciclos máquina. movlw d'10' ; Aporta 1 ciclo máquina. Este es el valor de "N".

Page 34: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

34 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

goto Retardo_1Decima ; Aporta 2 ciclos máquina. Retardo_500ms ; La llamada "call" aporta 2 ciclos máquina. movlw d'5' ; Aporta 1 ciclo máquina. Este es el valor de "N". ; ; El próximo bloque "Retardo_1Decima" tarda: ; 1 + N + N + MxN + MxN + KxMxN + (K-1)xMxN + MxNx2 + (K-1)xMxNx2 + ; + (M-1)xN + Nx2 + (M-1)xNx2 + (N-1) + 2 + (N-1)x2 + 2 = ; = (2 + 4M + 4MN + 4KM) ciclos máquina. Para K=249, M=100 y N=1 supone 100011 ; ciclos máquina que a 4 MHz son 100011 µs = 100 ms = 0,1 s = 1 décima de segundo. ; Retardo_1Decima movwf R_ContC ; Aporta 1 ciclo máquina. R1Decima_BucleExterno2 movlw d'100' ; Aporta Nx1 ciclos máquina. Este es el valor de "M". movwf R_ContB ; Aporta Nx1 ciclos máquina. R1Decima_BucleExterno movlw d'249' ; Aporta MxNx1 ciclos máquina. Este es el valor de "K". movwf R_ContA ; Aporta MxNx1 ciclos máquina. R1Decima_BucleInterno nop ; Aporta KxMxNx1 ciclos máquina. decfsz R_ContA,F ; (K-1)xMxNx1 cm (si no salta) + MxNx2 cm (al saltar). goto R1Decima_BucleInterno ; Aporta (K-1)xMxNx2 ciclos máquina. decfsz R_ContB,F ; (M-1)xNx1 cm (cuando no salta) + Nx2 cm (al saltar). goto R1Decima_BucleExterno ; Aporta (M-1)xNx2 ciclos máquina. decfsz R_ContC,F ; (N-1)x1 cm (cuando no salta) + 2 cm (al saltar). goto R1Decima_BucleExterno2 ; Aporta (N-1)x2 ciclos máquina. return ; El salto del retorno aporta 2 ciclos máquina. ; ;En total estas subrutinas tardan: ; - Retardo_20s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 20000807 cm = 20 s. ; (N=200, M=100 y K=249). ; - Retardo_10s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 10000407 cm = 10 s. ; (N=100, M=100 y K=249). ; - Retardo_5s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 5000207 cm = 5 s. ; (N= 50, M=100 y K=249). ; - Retardo_2s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 2000087 cm = 2 s. ; (N= 20, M=100 y K=249). ; - Retardo_1s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 1000047 cm = 1 s. ; (N= 10, M=100 y K=249). ; - Retardo_500ms: 2 + 1 + (2 + 4N + 4MN + 4KMN) = 500025 cm = 0,5 s. ; (N= 5, M=100 y K=249). ; =================================================================== ; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" ; E. Palacios, F. Remiro y L. López. ; Editorial Ra-Ma. www.ra-ma.es ; ===================================================================

Page 35: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

35 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

7.7.- LCD_4B_1.INC.

;************************************ Librería "LCD_4B_1.INC"

***********************************

;

; ===================================================================

; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"

; E. Palacios, F. Remiro y L. López.

; Editorial Ra-Ma. www.ra-ma.es

; ===================================================================

;

; Estas subrutinas permiten realizar las tareas básicas de control de un módulo LCD de 2

; líneas por 16 caracteres, compatible con el modelo LM016L. ;

; El visualizador LCD está conectado al Puerto B del PIC mediante un bus de 4 bits. Las

; conexiones son:

; - Las 4 líneas superiores del módulo LCD, pines <DB7:DB4> se conectan a las 4

; líneas superiores del Puerto B del PIC, pines <RB7:RB4>.

; - Pin RS del LCD a la línea RA0 del PIC.

; - Pin R/W del LCD a la línea RA1 del PIC, o a masa.

; - Pin Enable del LCD a la línea RA2 del PIC.

;

; Se utilizan llamadas a subrutinas de retardo de tiempo localizadas en la librería RETARDOS.INC.

;

;******************************** ZONA DE DATOS

**********************************************

CBLOCK

LCD_Dato

LCD_GuardaDato

LCD_GuardaTRISB

LCD_Auxiliar1

LCD_Auxiliar2

ENDC

LCD_CaracteresPorLinea EQU .16 ; Número de caracteres por línea de la pantalla.

#DEFINE LCD_PinRS PORTA,0

#DEFINE LCD_PinRW PORTA,1

#DEFINE LCD_PinEnable PORTA,2

#DEFINE LCD_BusDatos PORTB

; ********************************Subrutina "LCD_Inicializa"

**************************************

;

; Inicialización del módulo LCD: Configura funciones del LCD, produce reset por software,

; borra memoria y enciende pantalla. El fabricante especifica que para garantizar la

; configuración inicial hay que hacerla como sigue:

;

LCD_Inicializa

bsf STATUS,RP0 ; Configura las líneas conectadas al pines RS,

bcf LCD_PinRS ; R/W y E.

bcf LCD_PinEnable

bcf LCD_PinRW

bcf STATUS,RP0

bcf LCD_PinRW ; En caso de que esté conectado le indica

; que se va a escribir en el LCD.

bcf LCD_PinEnable ; Impide funcionamiento del LCD poniendo E=0.

Page 36: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

36 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

bcf LCD_PinRS ; Activa el Modo Comando poniendo RS=0.

call Retardo_20ms

movlw b'00110000'

call LCD_EscribeLCD ; Escribe el dato en el LCD.

call Retardo_5ms

movlw b'00110000'

call LCD_EscribeLCD

call Retardo_200micros

movlw b'00110000'

call LCD_EscribeLCD

movlw b'00100000' ; Interface de 4 bits.

call LCD_EscribeLCD

; Ahora configura el resto de los parámetros:

call LCD_2Lineas4Bits5x7 ; LCD de 2 líneas y caracteres de 5x7 puntos.

call LCD_Borra ; Pantalla encendida y limpia. Cursor al principio

call LCD_CursorOFF ; de la línea 1. Cursor apagado.

call LCD_CursorIncr ; Cursor en modo incrementar.

return

;********************************** Subrutina "LCD_EscribeLCD"

********************************

;

; Envía el dato del registro de trabajo W al bus de dato y produce un pequeño pulso en el pin

; Enable del LCD. Para no alterar el contenido de las líneas de la parte baja del Puerto B que

; no son utilizadas para el LCD (pines RB3:RB0), primero se lee estas líneas y después se

; vuelve a enviar este dato sin cambiarlo.

LCD_EscribeLCD

andlw b'11110000' ; Se queda con el nibble alto del dato que es el

movwf LCD_Dato ; que hay que enviar y lo guarda.

movf LCD_BusDatos,W ; Lee la información actual de la parte baja

andlw b'00001111' ; del Puerto B, que no se debe alterar.

iorwf LCD_Dato,F ; Enviará la parte alta del dato de entrada

; y en la parte baja lo que había antes.

bsf STATUS,RP0 ; Acceso al Banco 1.

movf TRISB,W ; Guarda la configuración que tenía antes TRISB.

movwf LCD_GuardaTRISB

movlw b'00001111' ; Las 4 líneas inferiores del Puerto B se dejan

andwf PORTB,F ; como estaban y las 4 superiores como salida.

bcf STATUS,RP0 ; Acceso al Banco 0.

movf LCD_Dato,W ; Recupera el dato a enviar.

movwf LCD_BusDatos ; Envía el dato al módulo LCD.

call Retardo_20micros

bsf LCD_PinEnable ; Permite funcionamiento del LCD mediante un pequeño

bcf LCD_PinEnable ; pulso y termina impidiendo el funcionamiento del LCD.

bsf STATUS,RP0 ; Acceso al Banco 1. Restaura el antiguo valor en

movf LCD_GuardaTRISB,W ; la configuración del Puerto B.

movwf PORTB ; Realmente es TRISB.

bcf STATUS,RP0 ; Acceso al Banco 0.

return

; ******************************* Subrutinas variadas para el control del módulo LCD

****************** ;

; Los comandos que pueden ser ejecutados son:

;

Page 37: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

37 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

LCD_CursorIncr ; Cursor en modo incrementar.

movlw b'00000110'

goto LCD_EnviaComando

LCD_Linea1 ; Cursor al principio de la Línea 1.

movlw b'10000000' ; Dirección 00h de la DDRAM

goto LCD_EnviaComando

LCD_Linea2 ; Cursor al principio de la Línea 2

.

movlw b'11000000' ; Dirección 40h de la DDRAM

goto LCD_EnviaComando

LCD_PosicionLinea1 ; Cursor a posición de la Línea 1, a partir de la

iorlw b'10000000' ; dirección 00h de la DDRAM más el valor del

goto LCD_EnviaComando ; registro W.

LCD_PosicionLinea2 ; Cursor a posición de la Línea 2, a partir de la

iorlw b'11000000' ; dirección 40h de la DDRAM más el valor del

goto LCD_EnviaComando ; registro W.

LCD_OFF ; Pantalla apagada.

movlw b'00001000'

goto LCD_EnviaComando

LCD_CursorON ; Pantalla encendida y cursor encendido.

movlw b'00001110'

goto LCD_EnviaComando

LCD_CursorOFF ; Pantalla encendida y cursor apagado.

movlw b'00001100'

goto LCD_EnviaComando

LCD_Borra ; Borra toda la pantalla, memoria DDRAM y pone el

movlw b'00000001' ; cursor a principio de la línea 1.

goto LCD_EnviaComando

LCD_2Lineas4Bits5x7 ; Define la pantalla de 2 líneas, con caracteres

movlw b'00101000' ; de 5x7 puntos y conexión al PIC mediante bus de

goto LCD_EnviaComando ; 4 bits.

;************************* Subrutinas "LCD_EnviaComando" y "LCD_Caracter"

*********************

;

; "LCD_EnviaComando". Escribe un comando en el registro del módulo LCD. La palabra de

; comando ha sido entregada a través del registro W. Trabaja en Modo Comando.

; "LCD_Caracter". Escribe en la memoria DDRAM del LCD el carácter ASCII introducido a

; a través del registro W. Trabaja en Modo Dato.

;

LCD_EnviaComando

bcf LCD_PinRS ; Activa el Modo Comando, poniendo RS=0.

Page 38: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

38 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

goto LCD_Envia

LCD_Caracter

bsf LCD_PinRS ; Activa el "Modo Dato", poniendo RS=1.

call LCD_CodigoCGROM ; Obtiene el código para correcta visualización.

LCD_Envia

movwf LCD_GuardaDato ; Guarda el dato a enviar.

call LCD_EscribeLCD ; Primero envía el nibble alto.

swapf LCD_GuardaDato,W ; Ahora envía el nibble bajo. Para ello pasa el

; nibble bajo del dato a enviar a parte alta del byte.

call LCD_EscribeLCD ; Se envía al visualizador LCD.

btfss LCD_PinRS ; Debe garantizar una correcta escritura manteniendo

call Retardo_2ms ; 2 ms en modo comando y 50 µs en modo carácter.

call Retardo_50micros

return

;***************************Subrutina "LCD_CodigoCGROM"

*************************************

;

; A partir del carácter ASCII número 127 los códigos de los caracteres definidos en la

; tabla CGROM del LM016L no coinciden con los códigos ASCII. Así por ejemplo, el código

; ASCII de la "Ñ" en la tabla CGRAM del LM016L es EEh.

;

; Esta subrutina convierte los códigos ASCII de la "Ñ", "º" y otros, a códigos CGROM para que

; que puedan ser visualizado en el módulo LM016L.

;

; Entrada: En (W) el código ASCII del carácter que se desea visualizar.

; Salida: En (W) el código definido en la tabla CGROM.

LCD_CodigoCGROM

movwf LCD_Dato ; Guarda el valor del carácter y comprueba si es

LCD_EnheMinuscula ; un carácter especial.

sublw 'ñ' ; ¿Es la "ñ"?

btfss STATUS,Z

goto LCD_EnheMayuscula ; No es "ñ".

movlw b'11101110' ; Código CGROM de la "ñ".

movwf LCD_Dato

goto LCD_FinCGROM

LCD_EnheMayuscula

movf LCD_Dato,W ; Recupera el código ASCII de entrada.

sublw 'Ñ' ; ¿Es la "Ñ"?

btfss STATUS,Z

goto LCD_Grado ; No es "Ñ".

movlw b'11101110' ; Código CGROM de la "ñ". (No hay símbolo para

movwf LCD_Dato ; la "Ñ" mayúscula en la CGROM).

goto LCD_FinCGROM

LCD_Grado

movf LCD_Dato,W ; Recupera el código ASCII de entrada.

sublw 'º' ; ¿Es el símbolo "º"?

btfss STATUS,Z

Page 39: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

39 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

goto LCD_FinCGROM ; No es "º".

movlw b'11011111' ; Código CGROM del símbolo "º".

movwf LCD_Dato

LCD_FinCGROM

movf LCD_Dato,W ; En (W) el código buscado.

return

; *******************Subrutina "LCD_DosEspaciosBlancos" y "LCD_LineaBlanco"

*********************

;

; Visualiza espacios en blanco.

LCD_LineaEnBlanco

movlw LCD_CaracteresPorLinea

goto LCD_EnviaBlancos

LCD_UnEspacioBlanco

movlw .1

goto LCD_EnviaBlancos

LCD_DosEspaciosBlancos

movlw .2

goto LCD_EnviaBlancos

LCD_TresEspaciosBlancos

movlw .3

LCD_EnviaBlancos

movwf LCD_Auxiliar1 ; (LCD_Auxiliar1) se utiliza como contador.

LCD_EnviaOtroBlanco

movlw ' ' ; Esto es un espacio en blanco.

call LCD_Caracter ; Visualiza tanto espacios en blanco como se

decfsz LCD_Auxiliar1,F ; haya cargado en (LCD_Auxiliar1).

goto LCD_EnviaOtroBlanco

return

;********************** Subrutinas "LCD_ByteCompleto" y "LCD_Byte"

*****************************

;

; Subrutina "LCD_ByteCompleto", visualiza el byte que almacena el registro W en el

; lugar actual de la pantalla. Por ejemplo, si (W)=b'10101110' visualiza "AE".

;

; Subrutina "LCD_Byte" igual que la anterior, pero en caso de que el nibble alto sea cero

; visualiza en su lugar un espacio en blanco. Por ejemplo si (W)=b'10101110' visualiza "AE"

; y si (W)=b'00001110', visualiza " E" (un espacio blanco delante).

;

; Utilizan la subrutina "LCD_Nibble" que se analiza más adelante.

;

LCD_Byte

movwf LCD_Auxiliar2 ; Guarda el valor de entrada.

andlw b'11110000' ; Analiza si el nibble alto es cero.

btfss STATUS,Z ; Si es cero lo apaga.

Page 40: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

40 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

goto LCD_VisualizaAlto ; No es cero y lo visualiza.

movlw ' ' ; Visualiza un espacio en blanco.

call LCD_Caracter

goto LCD_VisualizaBajo

LCD_ByteCompleto

movwf LCD_Auxiliar2 ; Guarda el valor de entrada.

LCD_VisualizaAlto

swapf LCD_Auxiliar2,W ; Pone el nibble alto en la parte baja.

call LCD_Nibble ; Lo visualiza.

LCD_VisualizaBajo

movf LCD_Auxiliar2,W ; Repite el proceso con el nibble bajo.

call LCD_Nibble ; Lo visualiza.

return

; *******************************Subrutina "LCD_Nibble"

****************************************

; ; Visualiza en el lugar actual de la pantalla, el valor hexadecimal que almacena en el nibble

; bajo del registro W. El nibble alto de W no es tenido en cuenta. Ejemplos:

; - Si (W)=b'01010110', se visualizará "6".

; - Si (W)=b'10101110', se visualizará "E".

;

LCD_Nibble

andlw b'00001111' ; Se queda con la parte baja.

movwf LCD_Auxiliar1 ; Lo guarda.

sublw 0x09 ; Comprueba si hay que representarlo con letra.

btfss STATUS,C

goto LCD_EnviaByteLetra

movf LCD_Auxiliar1,W

addlw '0' ; El número se pasa a carácter ASCII sumándole

goto LCD_FinVisualizaDigito ; el ASCII del cero y lo visualiza.

LCD_EnviaByteLetra

movf LCD_Auxiliar1,W

addlw 'A'-0x0A ; Sí, por tanto, se le suma el ASCII de la 'A'.

LCD_FinVisualizaDigito

goto LCD_Caracter ; Y visualiza el carácter. Se hace con un "goto"

; para no sobrecargar la pila.

; ===================================================================

; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"

; E. Palacios, F. Remiro y L. López.

; Editorial Ra-Ma. www.ra-ma.es

; ===================================================================

7.8.- LCD_MENS.INC.

;**************************** Librería "LCD_MENS.INC" ********************************

Page 41: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

41 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

;

; ===================================================================

; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"

; E. Palacios, F. Remiro y L. López.

; Editorial Ra-Ma. www.ra-ma.es

; ===================================================================

;

; Librería de subrutinas para el manejo de mensajes a visualizar en un visualizador LCD.

CBLOCK

LCD_ApuntaCaracter ; Indica la posición del carácter a visualizar

; respecto del comienzo de todos los mensajes,

; (posición de la etiqueta "Mensajes").

LCD_ValorCaracter ; Código ASCII del carácter a

ENDC ; visualizar.

; Los mensajes tienen que estar situados dentro de las 256 primeras posiciones de la

; memoria de programa, es decir, no pueden superar la dirección 0FFh.

; ******************************** Subrutina "LCD_Mensaje"

**************************************

;

; Visualiza por pantalla el mensaje apuntado por el registro W.

;

; Los mensajes deben localizarse dentro de una zona encabezada por la etiqueta "Mensajes" y que

; tenga la siguiente estructura:

;

; Mensajes ; ¡Etiqueta obligatoria!

; addwf PCL,F

; Mensaje0 ; Posición inicial del mensaje.

; DT ".. ..", 0x00 ; Mensaje terminado en 0x00.

; Mensaje1

; ...

; ...

; FinMensajes

;

; La llamada a esta subrutina se realizará siguiendo este ejemplo:

;

; movlw Mensaje0 ; Carga la posición del mensaje.

; call LCD_Mensaje ; Visualiza el mensaje.

;

LCD_Mensaje

movwf LCD_ApuntaCaracter ; Posición del primer carácter del mensaje.

movlw Mensajes ; Halla la posición relativa del primer carácter

subwf LCD_ApuntaCaracter,F ; del mensaje respecto de etiqueta "Mensajes".

decf LCD_ApuntaCaracter,F ; Compensa la posición que ocupa "addwf PCL,F".

LCD_VisualizaOtroCaracter

movf LCD_ApuntaCaracter,W

call Mensajes ; Obtiene el código ASCII del carácter apuntado.

movwf LCD_ValorCaracter ; Guarda el valor de carácter.

movf LCD_ValorCaracter,F ; Lo único que hace es posicionar flag Z. En caso

btfsc STATUS,Z ; que sea "0x00", que es código indicador final

goto LCD_FinMensaje ; de mensaje, sale fuera.

LCD_NoUltimoCaracter

call LCD_Caracter ; Visualiza el carácter ASCII leído.

Page 42: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

42 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

incf LCD_ApuntaCaracter,F ; Apunta a la posición del siguiente carácter

goto LCD_VisualizaOtroCaracter ; dentro del mensaje.

LCD_FinMensaje

return ; Vuelve al programa principal.

; ****************************Subrutina "LCD_MensajeMovimiento"

******************************-

; ; Visualiza un mensaje de mayor longitud que los 16 caracteres que pueden representarse

; en una línea, por tanto se desplaza a través de la pantalla.

;

; En el mensaje debe dejarse 16 espacios en blanco, al principio y al final para

; conseguir que el desplazamiento del mensaje sea lo más legible posible.

;

CBLOCK

LCD_CursorPosicion ; Contabiliza la posición del cursor dentro de la

ENDC ; pantalla LCD

LCD_MensajeMovimiento

movwf LCD_ApuntaCaracter ; Posición del primer carácter del mensaje.

movlw Mensajes ; Halla la posición relativa del primer carácter

subwf LCD_ApuntaCaracter,F ; del mensaje respecto de la etiqueta "Mensajes".

decf LCD_ApuntaCaracter,F ; Compensa la posición que ocupa "addwf PCL,F".

LCD_PrimeraPosicion

clrf LCD_CursorPosicion ; El cursor en la posición 0 de la línea.

call LCD_Linea2

; call LCD_Borra ; Se sitúa en la primera posición de la línea 1 y

; borra la pantalla.

LCD_VisualizaCaracter

movlw LCD_CaracteresPorLinea ; ¿Ha llegado a final de línea?

subwf LCD_CursorPosicion,W

btfss STATUS,Z

goto LCD_NoEsFinalLinea

LCD_EsFinalLinea

call Retardo_100ms ; Lo mantiene visualizado durante este tiempo.

; call Retardo_200ms

movlw LCD_CaracteresPorLinea-1 ; Apunta a la posición del segundo carácter visualizado

subwf LCD_ApuntaCaracter,F ; en pantalla, que será el primero en la siguiente

goto LCD_PrimeraPosicion ; visualización de línea, para producir el efecto

; de desplazamiento hacia la izquierda.

LCD_NoEsFinalLinea

movf LCD_ApuntaCaracter,W

call Mensajes ; Obtiene el ASCII del carácter apuntado.

movwf LCD_ValorCaracter ; Guarda el valor de carácter.

movf LCD_ValorCaracter,F ; Lo único que hace es posicionar flag Z. En caso

btfsc STATUS,Z ; que sea "0x00", que es código indicador final

goto LCD_FinMovimiento ; de mensaje, sale fuera.

LCD_NoUltimoCaracter2

Page 43: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

43 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

call LCD_Caracter ; Visualiza el carácter ASCII leído.

incf LCD_CursorPosicion,F ; Contabiliza el incremento de posición del

; cursor en la pantalla.

incf LCD_ApuntaCaracter,F ; Apunta a la siguiente posición por visualizar.

goto LCD_VisualizaCaracter ; Vuelve a visualizar el siguiente carácter

; de la línea.

LCD_FinMovimiento

return ; Vuelve al programa principal.

; ===================================================================

; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"

; E. Palacios, F. Remiro y L. López.

; Editorial Ra-Ma. www.ra-ma.es

; ===================================================================

7.9.- SRF08_L1.INC.

;******************************************************************************************

*****

; SRF08_16FXXX.INC

; Autor: Mikel Etxebarria

; (c) Ingeniería de Microsistemas Programados S.L.

; www.microcontroladores.com

; Bilbao 2007

;

;El conjunto de rutinas que se presentan a continuación permiten realizar las funciones de control

;del sonar SRF08 de la firma Devantech mediante el interface I2C con un PIC16FXXX. Este fichero

;se debe incluir en los futuros programas fuente mediante la directiva INCLUDE:

;

;SRF08_in: El SRF08 inicia una nueva medida en in. Resultado en SRF08_Byte_H y

SRF08_Byte_L

;SRF08_cm: El SRF08 inicia una nueva medida en cm. Resultado en SRF08_Byte_H y

SRF08_Byte_L

;SRF08_us: El SRF08 inicia una nueva medida en us. Resultado en SRF08_Byte_H y

SRF08_Byte_L

;SRF08_Luz: Realiza la medida de luminosidad que recibe el sónar SRF08 a través de la célula

LDR.

; El resultado de 8 bits se deposita almacena en SRF08_Byte_H

;SRF08_Rango: Ajusta el rango de la distancia a medir: distancia=((rango*43)+43). Para medidas de

; distancia cortas, un menor rango permite medidas mas rápidas. Por defecto el rango

; es de 0xff (11 m).El nuevo rango se indica en SRF08_Byte_H.

;SRF08_Firm: Lee la versión del firmware interno del sónar SRF08. El resultado se deposita en

; SRF08_Byte_H

;SRF08_I2C_Dir: Cambia la dirección I2C del SRF08. SRF08_Byte_H debe contener la nueva dirección

I2C

ifndef SRF08_Var ;En el programa principal se ha definir la dirección inicial para las variables

;empleadas en SRF08_16FXXX.inc

Page 44: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

44 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

messg "ERROR !! - Establecer dirección de inicio de las variables empleadas en

SRF08_16FXXX

(p.e. SRF08_Var equ 0x20)"

endif

SRF08 equ 0xe0 ;Dirección I2C del SRF08 de fabrica.

cblock

SRF08_Var ;Define inicio de posiciones RAM empleadas por

las

;rutinas SRF08

SRF08_Byte_H ;Resultado de la lectura (alto)

SRF08_Byte_L ;Resultado de la lectura (bajo)

SRF08_Comando ;Comando a ejecutar

SRF08_DIR ;Variable que se tiene que inicializar en el

programa

;principal

;con la dirección del sensor.

;Ejemplo: MOVLW 0XE0

; MOVWF SRF08_DIR

endc

;******************************************************************************************

****

;SRF08_in: Realiza una medida en pulgadas. El resultado se almacén en SRF08_Byte_H y en SRF08_Byte_L

SRF08_in movlw 0x50

movwf SRF08_Comando ;Almacena comando a ejecutar

goto SRF08_Ejec ;Ejecuta el comando

;******************************************************************************************

****

;SRF08_cm: Realiza una medida en cm. El resultado se almacén en SRF08_Byte_H y en SRF08_Byte_L

SRF08_cm movlw 0x51

movwf SRF08_Comando ;Almacena comando a ejecutar

goto SRF08_Ejec ;Ejecuta el comando

;******************************************************************************************

****

;SRF08_us: Realiza una medida en us. El resultado se almacén en SRF08_Byte_H y en SRF08_Byte_L

SRF08_us movlw 0x52

movwf SRF08_Comando ;Almacena comando a ejecutar

goto SRF08_Ejec ;Ejecuta el comando

;******************************************************************************************

*****

;SRF08_Ejec: El SRF08 ejecuta un determinado comando.

SRF08_Ejec call I2C_Send_Start ;Secuencia de inicio

movlw SRF08_DIR

Page 45: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

45 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

call I2C_Send_Byte ;Dirección I2C del SRF08 modo escritura

movlw 0

call I2C_Send_Byte ;Dirección interna 0x00 (registro de comandos)

movf SRF08_Comando,W

call I2C_Send_Byte ;Enviar comando a ejecutar

call I2C_Send_Stop ;Secuencia de stop

call Retardo_100ms ;Temporización de 80mS necesaria para realizar la

ejecución

;Secuencia para la lectura del resultado medido por el SRF08

movlw SRF08_DIR

movwf Dir_I2C ;Almacena dirección I2C del dispositivo (el

SRF08)

movlw 2

movwf I2C_Dir_Ini ;Dirección inicial interna 0x02 (byte alto del

resultado de la medida)

movlw 2

movwf I2C_N_Bytes ;Nº de bytes a leer (2, parte alta y baja de la

medida)

call Leer_I2C

movlw I2C_Buffer

movwf FSR

movf INDF,W

movwf SRF08_Byte_H

incf FSR,F

movf INDF,W

movwf SRF08_Byte_L

return

;******************************************************************************************

*****

;SRF08_Luz: Realiza la medida de luminosidad que recibe el sónar SRF08 a través de la célula LDR. El

resultado

;de 8 bits se deposita almacena en SRF08_Byte_H

SRF08_Luz movlw 0x51 ;Al ejecutar un comando cualquiera, la medida de

luz se

movwf SRF08_Comando ;actualiza. Se ejecuta el comando de medir

distancia en

;cm

call SRF08_Ejec ;Ejecuta el comando

;A continuación se lee el contenido de la posición 1 que contiene el valor procedente de la célula LDR

movlw SRF08_DIR

movwf Dir_I2C ;Almacena dirección I2C del dispositivo (el

SRF08)

movlw 1

movwf I2C_Dir_Ini ;Dirección inicial interna 0x01 (registro del sensor

de luz)

movlw 1

movwf I2C_N_Bytes ;Nº de bytes a leer (1)

call Leer_I2C ;Realiza la lectura

movf I2C_Buffer,W

movwf SRF08_Byte_H ;Almacena el resultado

return

Page 46: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

46 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

;******************************************************************************************

*****

;SRF08_Rango: Ajusta el rango de la distancia a medir: distancia=((rango*43)+43). Para medidas de distancia

;cortas, un menor rango permite medidas mas rápidas. Por defecto el rango es de 0xff (11 m). El nuevo rango

;se indica en SRF08_Byte_H.

SRF08_Rango call I2C_Send_Start ;Secuencia de inicio

movlw SRF08_DIR

call I2C_Send_Byte ;Dirección I2C del SRF08 modo escritura

movlw 2

call I2C_Send_Byte ;Dirección interna 0x02 (registro de rango)

movf SRF08_Byte_H,W ;Carga el rango

call I2C_Send_Byte ;Transmite el nuevo rango

call I2C_Send_Stop ;Secuencia de stop

return

;******************************************************************************************

*****

;SRF08_Firm: Lee la versión del firmware interno del sónar SRF08. El resultado se deposita en

;SRF08_Byte_H

SRF08_Firm movlw SRF08_DIR

movwf Dir_I2C ;Almacena dirección I2C del dispositivo (el

SRF08)

movlw 0

movwf I2C_Dir_Ini ;Dirección inicial interna 0x00 (nº de versión del

firmware interno)

movlw 1

movwf I2C_N_Bytes ;Nº de bytes a leer

call Leer_I2C ;Leer dispositivo

movlw I2C_Buffer

movwf FSR

movf INDF,W

movwf SRF08_Byte_H ;Almacena el resultado

return

;******************************************************************************************

*****

;SRF08_I2C_Dir: Cambia la dirección I2C del SRF08. SRF08_Byte_H debe contener la nueva dirección I2C

SRF08_I2C_Dir call I2C_Send_Start ;Secuencia de inicio

movlw SRF08

call I2C_Send_Byte ;Dirección I2C del SRF08 modo escritura

movlw 0

call I2C_Send_Byte ;Dirección interna 0x00 (registro de comandos)

movlw 0xA0 ;1ª secuencia para el cambio de dirección

call I2C_Send_Byte ;Enviar comando a ejecutar

call I2C_Send_Stop ;Secuencia de stop

call I2C_Send_Start ;Secuencia de inicio

movlw SRF08

call I2C_Send_Byte ;Dirección I2C del SRF08 modo escritura

movlw 0

call I2C_Send_Byte ;Dirección interna 0x00 (registro de comandos)

movlw 0xAA ;2ª secuencia para el cambio de dirección

call I2C_Send_Byte ;Enviar comando a ejecutar

call I2C_Send_Stop ;Secuencia de stop

call I2C_Send_Start ;Secuencia de inicio

Page 47: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

47 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

movlw SRF08

call I2C_Send_Byte ;Dirección I2C del SRF08 modo escritura

movlw 0

call I2C_Send_Byte ;Dirección interna 0x00 (registro de comandos)

movlw 0xA5 ;3ª secuencia para el cambio de dirección

call I2C_Send_Byte ;Enviar comando a ejecutar

call I2C_Send_Stop ;Secuencia de stop

call I2C_Send_Start ;Secuencia de inicio

movlw SRF08

call I2C_Send_Byte ;Dirección I2C del SRF08 modo escritura

movlw 0

call I2C_Send_Byte ;Dirección interna 0x00 (registro de comandos)

movf SRF08_Byte_H,W ;Nueva dirección I2C

call I2C_Send_Byte ;Enviar comando a ejecutar

call I2C_Send_Stop ;Secuencia de stop

return

7.10.- RM1_S_RF.INC.

title " Librería de recepción SERIE vía Radiofrecuencia para una

Tarjeta Emisora SAW para Datos 433,92 MHz ( CEBEK C-0504 ) "

; Esta configurada la Interrupción en Recepción Serie. Es necesario cargar el Vector de Interrupción

; ORG 0X04

; GOTO INTERRUPCION

; La Subrutina de Recepción Serie devuelve el dato valido en el Registro DATO_SERIE_VALIDO.

; Valida un dato si llega dos veces consecutivos.

;****************************

Registros**********************************************************

CBLOCK

DATO_SERIE1

DATO_SERIE2

DATO_SERIE_VALIDO

LLAVE_ENTRADA

CONTA_SERIEL

CONTA_SERIEH

ENDC

;*********************************** Sección de Configuración

*************************************

CONFIGURACION_RECEP_SERIE BSF STATUS,RP0 ; Ir al Banco 1

BSF TRISC,7 ; Poner la patilla RC7 como entrada.

Page 48: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

48 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

BCF TXSTA,BRGH ; Trabajar con velocidad baja de

recepción.

MOVLW D'39' ; Cargar la Velocidad de Recepción de

Datos.

MOVWF SPBRG ; Br = Fosc/64(SPBRG+1)=

4MHz/64(39+1)=

; 1562,5 bit/s

BCF TXSTA,SYNC ; Habilitamos la recepción asíncrona.

MOVLW B'11000000' ; Habilitar Interrupción Serie

MOVWF INTCON

MOVLW B'00100000' ; Habilitar Interrupción Serie

MOVWF PIE1

BCF STATUS,RP0 ; Ir al Banco 0

MOVLW B'10010000' ; Configurar y lanzar la Recepcion Serie

MOVWF RCSTA

RETURN

;****************************** Subrutina de Recepcion Serie

***************************************

;Tiene que estar dentro de la Rutina de INTERRUPCION

RECEPCION_DATO_SERIE BCF PIR1,RCIF ; Borramos Flag de la Recepcion.

NO_DATO_SERIE1 BTFSC PIR1,RCIF ; Preguntamos si hemos recibido una

nuevo

; DATO.

GOTO SI_DATO_SERIE1 ; Si en 65535 ms no ha llegado un nuevo

dato

; salir de serie.

MOVLW D'1'

ADDWF CONTA_SERIEL,F

BTFSS STATUS,C

GOTO NO_DATO_SERIE1

MOVLW D'1'

ADDWF CONTA_SERIEH,F

BTFSS STATUS,C

GOTO NO_DATO_SERIE1

GOTO SALIR_SERIE

SI_DATO_SERIE1 CLRF CONTA_SERIEL ; Si ha llegado un dato antes de 65535 ms

borrar

; los registros.

CLRF CONTA_SERIEH

MOVF RCREG,W

MOVWF DATO_SERIE1 ; Guardamos el Dato Primero

BCF PIR1,RCIF ; Borramos Flag de la Recepcion.

NO_LLAVE_ENTRADA BTFSC PIR1,RCIF ; Preguntamos si ha llegado la Llave

; "LLAVE_ENTRADA".

GOTO SI_LLAVE_ENTRADA ; Si en 65535 ms no ha llegado un nuevo

dato

; salir de serie.

Page 49: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

49 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

MOVLW D'1'

ADDWF CONTA_SERIEL,F

BTFSS STATUS,C

GOTO NO_LLAVE_ENTRADA

MOVLW D'1'

ADDWF CONTA_SERIEH,F

BTFSS STATUS,C

GOTO NO_LLAVE_ENTRADA

GOTO SALIR_SERIE

SI_LLAVE_ENTRADA CLRF CONTA_SERIEL ; Si ha llegado la Llave de Entrada

CLRF CONTA_SERIEH ; antes de 65535 ms borrar los registros.

MOVF RCREG,W ; Preguntamos si ha llegado la Llave

; "LLAVE_ENTRADA".

XORWF LLAVE_ENTRADA,W

BTFSS STATUS,Z ; Si es correcta la Llave volvemos a

preguntar.

GOTO SALIR_SERIE ; No es correcta la Llave volvemos al PP

previa

; recuperación de registros.

BCF PIR1,RCIF ; Borramos Flag de la Recepcion.

NO_DATO_SERIE2 BTFSC PIR1,RCIF ; Preguntamos si hemos recibido una

nuevo

; DATO.

GOTO SI_DATO_SERIE2 ; Si en 65535 ms no ha llegado un nuevo

dato

; salir de serie.

MOVLW D'1'

ADDWF CONTA_SERIEL,F

BTFSS STATUS,C

GOTO NO_DATO_SERIE2

MOVLW D'1'

ADDWF CONTA_SERIEH,F

BTFSS STATUS,C

GOTO NO_DATO_SERIE2

GOTO SALIR_SERIE

SI_DATO_SERIE2 CLRF CONTA_SERIEL ; Si ha llegado la Llave de Entrada

CLRF CONTA_SERIEH ; antes de 65535 ms borrar los registros.

MOVF RCREG,W

MOVWF DATO_SERIE2 ; Guardamos el Dato Segundo

MOVF DATO_SERIE1,W ; Si ambos datos son Iguales validamos el

dato

; serie recibido.

SUBWF DATO_SERIE2,F

BTFSS STATUS,Z

GOTO SALIR_SERIE

VALIDAR_DATO_SERIE MOVF DATO_SERIE1,W

MOVWF DATO_SERIE_VALIDO ; El Dato se queda cargado en el

; Registro

DATO_SERIE_VALIDO.

SALIR_SERIE BCF PIR1,RCIF

RETURN

Page 50: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

50 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

7.11.- T_M_S_RF.INC.

title " Transmisor SERIE via Radiofrecuencia para una Tarjeta Emisora SAW

para Datos 433,92 MHz. ( CEBEK C-0503 ) "

; Transmite una Llave y un Dato un numero de veces.

;************************************* Igualdades

************************************************

TODOCERO EQU B'00000000' ; (Dato). Llave para iniciar un código, la tarjeta de

; transmisión de datos necesita el pulso de STOP para

; transmitir un código.

Numero_de_Transmisiones EQU D'2'

;************************************* Registros

*************************************************

CBLOCK

DATO_TRANSMITIDO

CONTADOR_TRANSMISION

LLAVE_ENTRADA

ENDC

;********************************* Sección de Configuración

***************************************

CONFIGURACION_TRANS_SERIE BSF STATUS,RP0 ; Ir al Banco 1.

MOVLW D'39'

MOVWF SPBRG ; Cargar la Velocidad de Transmisión de

Datos.

; BR = (Fosc/64(X+1)) BR =

(4MHz/64(39+1))

; = 1562,5 Hz

MOVLW B'00100000'

MOVWF TXSTA ; Configuración de la Transmisión Serie.

BCF STATUS,RP0 ; Ir al Banco 0.

BSF RCSTA,SPEN ; Activamos la Puerta Serie (TX).

RETURN

;***************************** Lanzar Llaves y Muestra Digital

************************************

LANZAR_DATO_SERIE MOVWF DATO_TRANSMITIDO ; Guardamos el W en el registro

; DATO_TRANSMITIDO.

Page 51: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

51 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

MOVLW Numero_de_Transmisiones ; Cargamos el

; Numero_de_Transmisiones

MOVWF CONTADOR_TRANSMISION ; en el registro

;

CONTADOR_TRANSMISION.

MOVLW TODOCERO ; Lanzar llave TODOCERO.

MOVWF TXREG ; Transmisión de Datos en Serie.

BSF STATUS,RP0

SEG1_TRANSMISION BTFSS TXSTA,TRMT ; Preguntamos si se ha

transmitido el

; dato.

GOTO SEG1_TRANSMISION

BCF STATUS,RP0

REPETIR_TRANSMISION MOVF LLAVE_ENTRADA,W ; Lanzar llave

LLAVE_ENTRADA.

MOVWF TXREG ; Transmisión de Datos en Serie.

BSF STATUS,RP0

SEG2_TRANSMISION BTFSS TXSTA,TRMT ; Preguntamos si se ha

transmitido el

; dato.

GOTO SEG2_TRANSMISION

BCF STATUS,RP0

MOVF DATO_TRANSMITIDO,W ; Lanzar

DATO_TRANSMITIDO.

MOVWF TXREG ; Transmisión de Datos en Serie.

BSF STATUS,RP0

SEG3_TRANSMISION BTFSS TXSTA,TRMT ; Preguntamos si se ha

transmitido el

; dato.

GOTO SEG3_TRANSMISION

BCF STATUS,RP0

DECFSZ CONTADOR_TRANSMISION,F ; Llevamos en cuenta el

; numero de

transmisiones.

GOTO REPETIR_TRANSMISION

RETURN

Page 52: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

52 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

8.- Diseño de Placas de Circuitos Impresos.

8.1.- Alimentación del Circuito + Cargador del Programa.

8.1.1.- Esquema Eléctrico.

8.1.2.- Cara de Componentes 8.1.3.- Cara de pistas Bottom Copper.

y de pistas Top Copper. (MIRROR)

Page 53: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

53 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

8.2.- Control + Potencia + etc.

8.2.1.- Esquema Eléctrico.

Page 54: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

54 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

8.2.2.- Cara de Componentes y de pistas Top Copper .

Page 55: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

55 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

8.2.3.- Cara de pistas Bottom Copper . (MIRROR)

Page 56: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

56 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

8.3.- Mando.

8.3.1.- Esquema Eléctrico.

8.3.2.- Cara de Componentes 8.3.3.- Cara de pistas Bottom Copper .

y de pistas Top Copper .

VS

S

RB0E

RB1E

RB2E

RB3E

RB4E

RB1E RB3E RB0E RB2E RB4E

Q1EBD136_JOAN

Emisor de Datos CEBEK C-0503

GN

D1

1

Ve

2

-3

GN

D2

4

An

tena

11

GN

D3

13

Vcc

15

E_RF1E

1

CON1E

BORNIER1_JOAN

VI1

VO3

GN

D2

U2E7805_JOAN

A K

D6E

1N4007_JOAN12

BAT1E9V

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN4/SS7

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI/CCP212

RC2/CCP113

RC3/SCK/SCL14

RB7/PGD28

RB6/PGC27

RB526

RB425

RB3/PGM24

RB223

RB122

RB0/INT21

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI11

MCLR/Vpp/THV1

U1E

PIC16F876_JOAN

R7E2.2k

X1E

4MHz

C3E

15pF

C4E

15pF

R1E220

R2E220

R3E220

12

SW1E

12

SW3E

12

SW2E

AK

D1ELED-YELLOW_JOAN

AK

D2ELED-GREEN_JOAN

AK

D3ELED-RED_JOAN

R6E220

AK

D7ELED-RED_JOAN

Mando

1 2

SW6E

INTERRUPTOR_JOAN

C2E220uF

VDD

R4E220

12

SW4E

AK

D4ELED-RED_JOAN

R5E220

12

SW5E

AK

D5ELED-RED_JOAN

C1E220uF

VDD

Izquierda Atras Adelante Parar Derecha

Page 57: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

57 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

8.4.- Baliza.

8.3.1.- Esquema Eléctrico.

8.3.2.- Cara de Componentes 8.3.3.- Cara de pistas Bottom Copper .

y de pistas Top Copper .

Page 58: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

58 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

9.- Diseño mecánico.

9.1.- Carrocería Placa-Robot.

Page 59: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

59 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

10.- Lista de Componentes.

10.1.- Alimentación del Circuito + Cargador del Programa.

Lista de materiales Alimentación del Circuito + Cargador de Programa.DSN

Título: Alimentación del Circuito + Cargador de Programa. DSN

Autor: Juan Manuel Romero Rodríguez

Revision:

Creado: lunes, 08 de octubre de 2007

Ultima modificación: jueves, 29 de noviembre de 2007

Número de Componentes: 22

1 Resistencia.

Cantidad: Referencia Valor Coste Unitario Coste

1 R1 220 0.05 0.05

9 Condensadores.

Cantidad: Referencia Valor Coste Unitario Coste

1 C1 330nF 0.05 0.05

2 C2, C12 100nF 0.05 0.10

2 C3, C4 220uF 0.30 0.60

4 C8-C11 1uF 0.15 0.60

2 Circuitos Integrados.

Cantidad: Referencia Valor Coste Unitario Coste

1 U1 7805_JOAN 1 2

1 U5 MAX232 2 2

4 Diodos.

Cantidad: Referencia Valor Coste Unitario Coste

3 D1-D3 1N4007_JOAN 0.20 0.60

1 D4 LED-GREEN_JOAN 0.20 0.20

6 Componentes diversos.

Cantidad: Referencia Valor Coste Unitario Coste

1 J1 CONN-D9M (Macho) 1 1

2 J2, J3 CONN-SIL5 ( Macho- Macho

Cuadrado Acodado)

0.5 1

1 SW1 INT_ENCENDIDO 1 1

1 Placa C.I. 50x74 cm 6 6

1 Zócalo de C.I. 16 patillas 0.5 0.5

Coste total 1 Alimentación del Circuito + Cargador de Programa 15,70 €

viernes, 08 de febrero de 2008 18:41:31

Page 60: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

60 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

10.2.- Control + Potencia + etc.

Lista de materiales Control+Potencia+etc.DSN

Título: Control+Potencia+etc.DSN

Autor: Juan Manuel Romero Rodríguez

Revisión:

Creado: jueves, 22 de noviembre de 2007

Ultima modificación: miércoles, 19 de diciembre de 2007

Número de Componentes: 79

13 Resistencias

Cantidad: Referencia Valor Coste Unitario Coste

3 R1, R11, R13 220 0.05 0.15

1 R2 10k 0.05 0.05

1 R3 100 0.05 0.05

5 R4-R8 330 0.05 0.25

2 R9, R10 4,7K 0.05 0.10

2 R12 1K 0.05 0.10

3 Condensadores

Cantidad: Referencia Valor Coste Unitario Coste

2 C1, C2 15pF 0.05 0.10

1 C3 100nF 0.05 0.05

3 Circuitos Integrados.

Cantidad: Referencia Valor Coste Unitario Coste

1 U1 PIC16F877_JOAN 8 8

1 U2 OPTOCOUPLER-NPN 0.5 1

1 U3 L298 2 2

2 Transistores.

Cantidad: Referencia Valor Coste Unitario Coste

2 Q1,Q2 BD136_JOAN 1 2

9 Diodos.

Cantidad: Referencia Valor Coste Unitario Coste

4 D6- D9 1N4007_JOAN 0.20 0.80

2 D3(ADELANTE), D5(ATRAS) LED-YELLOW_JOAN 0.20 0.40

1 D4(PARADO) LED-RED_JOAN 0.20 0.20

2 D1(IZQUIERDA), D2(DERECHA) LED-GREEN_JOAN 0.20 0.40

42 Componentes diversos.

Cantidad: Referencia Valor Coste Unitario Coste

Page 61: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

61 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

1 Conector de BAT1 Bornier 2 0.30 0.30

1 Conector de CMP1 CONN-SIL3 0.10 0.10

1 CMP1 (Compás Digital) CMPS03_JOAN 40 40

2 INICIO, RESET PULSADOR_JOAN 0.20 0.40

2 J2A, J3A (Macho-Hembra Cuadrado) CONN-SIL5 0.15 0.30

1 JUMP1 ( Macho-Macho Cuadrado) CONN_SIL3_JOAN 0.10 0.10

1 Conector de LCD1 CONN-SIL14 0.15 0.15

1 LCD1 LCD-16 X 2_JOAN 7 7

2 Conector de MOT_ DER, MOT_IZQ Bornier 2 0.30 0.60

2 MOT_ DER, MOT_IZQ 9V 10 20

1 RF1 ANTENA_JOAN 0.0 0.0

1 Conector de RF2 CONN-SIL15 0.5 0.5

1 RF2 CEBEK-C-0504_JOAN 7 7

1 RV1 10k 0.30 0.30

3 Conector de ULTR1-ULTR3 CONN-SIL5 0.15 0.45

3 ULTR1 SRF08_JOAN 35 35

1 X1 CRYSTAL_JOAN (1 MHz) 1 1

1 Placa de C.I. 110 x 160 cm. 12 12

1 Zócalo de C.I. 40 patillas 0.5 0.5

2 Zócalo de C.I. 6 patillas 0.5 1

1 Batería 12V/ 2200 mA 20 20

4 Separadores metálicos Macho-Hembra Métrica 3 0.5 2

4 Tuercas Métrica 3 0.1 0.4

4 Tornillos Métrica 3 x 10 mm. 0.1 0.4

1 Servo Futaba 17 17

Coste total 2 Control+Potencia+etc €

viernes, 08 de febrero de 2008 18:58:31

10.3.- Mando.

Lista de materiales Mando.DSN

Título: Mando.DSN

Autor: Pedro Alonso Sanz, Alfonso García Gallego, Juan Dongil García

Revisión:

Creado: miércoles, 16 de febrero de 2005

Ultima modificación: viernes, 08 de febrero de 2008

Número de Componentes: 49

7 Resistecias.

Cantidad: Referencia Valor Coste Unitario Coste

6 R1E-R6E 220 0.05 0.30

1 R7E 2.2k 0.05 0.05

4 Condensadores.

Cantidad: Referencia Valor Coste Unitario Coste

2 C1E, C2E 220uF 0.30 0.60

Page 62: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

62 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

2 C3E, C4E 15pF 0.05 0.10

2 Circuitos Integrados.

Cantidad: Referencia Valor Coste Unitario Coste

1 U1E PIC16F876_JOAN 5 5

1 U2E 7805_JOAN 1 1

1 Transistor.

Cantidad: Referencia Valor Coste Unitario Coste

1 Q1E BD136_JOAN 1 1

7 Diodos.

Cantidad: Referencia Valor Coste Unitario Coste

1 D1E LED-YELLOW_JOAN 0.20 0.20

1 D2E LED-GREEN_JOAN 0.20 0.20

4 D3E-D5E, D7E LED-RED_JOAN 0.20 0.80

1 D6E 1N4007_JOAN 0.20 0.20

28 Componentes diversos.

Cantidad: Referencia Valor Coste Unitario Coste

1 Conector de BAT1E Bornier 2 0.30 0.30

1 CON1E BORNIER1_JOAN 0.00 0.00

1 Conector de E_RF1E CONN-SIL15 0.15 0.15

1 E_RF1E CEBEK-C-0503_JOAN 7 7

5 SW1E-SW5E PULSADOR_JOAN 0.20 1

1 SW6E INTERRUPTOR_JOAN 1 1

1 X1E CRYSTAL_JOAN

(4 MHz)

1 1

1 Placa de C.I. 50 x 110 cm. 6 6

1 Zócalo de C.I. 28 patillas 0.5 0.5

1 Batería de petaca 9V 1 1

4 Separadores metálicos Macho-Hembra Métrica 3 0.5 2

4 Tuercas Métrica 3 0.1 0.4

4 Tornillos Métrica 3 x 10 mm. 0.1 0.4

1 Porta Baterías 0.5 0.5

1 Soporte de plástico 50 x 110 cm. 1 1

Coste total 3 Mando 31,75 €

viernes, 08 de febrero de 2008 20:25:59

Page 63: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

63 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

10.4.- Baliza.

Lista de materiales Alimentación del Circuito + Cargador de Programa.DSN

Título: Alimentación del Circuito + Cargador de Programa. DSN

Autor: Juan Manuel Romero Rodríguez

Revision:

Creado: lunes, 08 de octubre de 2007

Ultima modificación: jueves, 29 de noviembre de 2007

Número de Componentes: 22

4 Resistencias.

Cantidad: Referencia Valor Coste Unitario Coste

1 R2 120 0.05 0.05

1 R3 15K 0.05 0.05

1 R4 4,7K 0.05 0.05

1 R5 330 0.05 0.05

3 Condensadores.

Cantidad: Referencia Valor Coste Unitario Coste

1 C1 100uF 0.30 0.30

1 C2 1nF 0.05 0.05

1 C3 100nF 0.05 0.05

1 Circuito Integrado.

Cantidad: Referencia Valor Coste Unitario Coste

1 U1 NE555_JOAN 0.50 0.50

3 Diodos.

Cantidad: Referencia Valor Coste Unitario Coste

1 D1 1N4007_JOAN 0.20 0.60

1 D2 LED-GREEN_JOAN 0.20 0.20

1 D2(EMISOR IR) Infrarrojos 0.30 0.30

4 Componentes diversos.

Cantidad: Referencia Valor Coste Unitario Coste

1 RV1 5K 0.30 0.30

1 SW1 INT_ENCENDIDO 1 1

1 Placa C.I. 60 x 80 cm 6 6

1 Zócalo de C.I. 8 patillas 0.5 0.5

Coste total 1 Alimentación del Circuito + Cargador de Programa €

viernes, 08 de febrero de 2008 18:41:31

Page 64: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

64 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

10.5.- Carrocería.

Lista de materiales Carrocería.DSN

Título: Carrocería.DSN

Autor: Juan Manuel Romero Rodríguez

Revisión:

Creado: miércoles, 16 de febrero de 2005

Ultima modificación: viernes, 08 de febrero de 2008

Número de Componentes: 12

12 Componentes diversos.

Cantidad: Referencia Valor Coste Unitario Coste

1 Soporte de plástico 20 x 13 cm 2 2

2 Prolongadores de eje. 0.15 0.30

4 Tornillos M3x 40 0.10 0.40

4 Tuercas M3 0.10 0.40

4 Arandelas M3 0.05 0.20

Coste total 4 Carrocería 3,30 €

viernes, 08 de febrero de 2008 20:25:59

11.- Coste Económico.

11.1.- Desarrollo del Proyecto.

Coste 20 € / Hora.

10 Horas de desarrollo Hardware. .................................................................. 200 €

30 Horas de desarrollo Software. ................................................................... 600 €

10 Horas de montaje del Prototipo. ................................................................ 200 €

10 Horas de realización de la Memoria. ........................................................ 200 €

5 Horas de búsqueda de materiales. .............................................................. 100 €

10 Horas de Pruebas. ................................................................................ ...... 200 €

______

1500 €

11.2.- Material .

Alimentación del Circuito + Cargador de Programa. .................................. 15,70 €

Control+Potencia+etc. ................................................................................. 194,10 €

Mando. .......................................................................................................... 31,75 €

Baliza. ……………………………………………………………………..

Carrocería. ..................................................................................................... 4,90 €

_______

246,45 €

Total. ..................................................................................................................... 1746,45 €

Page 65: Proyectopedrojoanmiro.webcindario.com/Desarrollo_de_Proyectos/... · 2009-06-10 · Proyecto ROBOT-BALIZA Departamento de Electricidad-Electrónica Ciclo Superior de Desarrollo de

65 Ciclo Superior de Desarrollo de Productos Electrónicos

I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica

12.- Referencias.

[1] Libro: Título: Microcontroladores PIC16F84. Desarrollo de proyectos (2ª Edición)

Autores: Enrique Palacios, Fernando Remiro, Lucas J. López.

Editorial: Ra_Ma

[2] Empresa suministradora de materiales:

Diotronic S.A. C/Juan Bravo 58. Pagina Web: www.ditronic.com

Ingeniería de Sistemas Programados. Pagina Web: www.microcontroladores.com

[3] Motores COPAL Pagina Web: www.voti.nl/winkel/catalog.html

13.- Anexos.

12.1.- Características Eléctricas del Motor de Corriente Continua.

12.2.- Características Eléctricas Tarjeta Emisora SAW para

Datos 433,92 MHz. ( CEBEK C-0503 ).

12.3.- Características Eléctricas Tarjeta Receptora de

Datos 433,92 MHz. ( CEBEK C-504 ).

12.4.- Características Eléctricas del Sonar SRF08.

12.5.- Características Eléctricas del Compás Digital. CMPSO3.

12.6.- Características principales del PIC 16F876A.