Está en la página 1de 135

Proyecto Final de carrera

Diseo de un Generador RF en Banda L

MEMORIA

Titulacin: Ingeniera Tcnica Industrial en Electrnica Industrial

AUTOR: Jose A. Garca-Uceda Calvo.


DIRECTOR: Antonio Ramn Lzaro.

Julio / 2006.
DISEO DE UN GENERADOR DE RF EN BANDA L

NDICE

1
DISEO DE UN GENERADOR DE RF EN BANDA L

NDICE

1 Memoria Descriptiva........................................................................ 5
1.1 Objeto del Proyecto ....................................................................................... 5
1.2 Posibles Soluciones y Solucin Adoptada .................................................... 5
1.3 Descripcin General del Equipo.................................................................... 7
1.4 Descripcin General de la Solucin Adoptada............................................ 10
1.4.1 Mdulo 1, Sintetizador. ....................................................................... 10
1.4.2 Mdulo 2, Programacin mediante Microcontrolador. ....................... 25
1.4.3 Mdulo 3, Vco..................................................................................... 33
1.5 Resultados y conclusiones ........................................................................... 34
1.5.1 Resultados............................................................................................ 34
1.5.2 Conclusiones........................................................................................ 38
2 Memoria de Clculo ........................................................................ 40
2.1 Programa UMA v1.0 ................................................................................... 40
2.1.1 Algoritmo de programacin por puerto paralelo ................................. 41
2.1.2 Algoritmo de programacin por puerto serie ...................................... 44
2.2 Programa de gestin del Micro................................................................... 57
2.2.1 Recepcin de los datos. ....................................................................... 57
2.2.2 Algoritmo de programacin................................................................. 58
2.2.3 Rutinas auxiliares ................................................................................ 59
2.2.4 Funcin Main....................................................................................... 60
3 Planos................................................................................................ 64
3.1 Placa del circuito impreso 1......................................................................... 64
3.1.1 Situacin de los componentes en placa 1 ............................................ 64
3.1.2 Mascara de cara soldadura, placa 1 ( Bottom ).................................... 65
3.2 Placa del circuito impreso 2......................................................................... 66
3.2.1 Situacin de los componentes en placa 2 ............................................ 66
3.2.2 Mascara de cara soldadura placa 2 ( Top ) .......................................... 67
3.2.3 Mascara de cara soldadura placa 2 ( Bottom )..................................... 68
3.3 Placa del circuito impreso 3......................................................................... 69
3.3.1 Situacin de los componentes en placa 3 ............................................ 69
3.3.2 Mascara de cara soldadura placa 3 ( Top ) .......................................... 70
3.3.3 Mascara de cara soldadura placa 3 ( Bottom )..................................... 71

2
DISEO DE UN GENERADOR DE RF EN BANDA L

3.4 Placa del circuito impreso 4......................................................................... 72


3.4.1 Situacin de los componentes en placa 4 ............................................ 72
3.4.2 Mascara de cara soldadura placa 4 ( Top ) .......................................... 73
3.4.3 Mascara de cara soldadura placa 4 ( Bottom )..................................... 74
3.5 Placa del circuito impreso 5......................................................................... 75
3.5.1 Situacin de los componentes en placa 5 ............................................ 75
3.5.2 Mascara de cara soldadura placa 5 ( Top ) .......................................... 76
3.5.3 Mascara de cara soldadura placa 5 ( Bottom )..................................... 77
4 Presupuesto ...................................................................................... 79
4.1 Mediciones .................................................................................................. 79
4.2 Cuadro de precios ........................................................................................ 83
4.3 Aplicacin de precios .................................................................................. 87
4.4 Resumen del presupuesto del prototipo....................................................... 92
5 Bibliografa....................................................................................... 94
5.1 Libros y Manuales consultados .................................................................. 94
5.2 Pginas Web consultadas............................................................................. 95
6 Anexos............................................................................................... 97
6.1 Manual de usuario ....................................................................................... 97
6.2 Cdigo fuente para el PIC16F876A .......................................................... 102
6.3 Cdigo fuente del programa UMA v1.0................................................... 108
6.4 UMA1021M DataSheet............................................................................. 135

3
DISEO DE UN GENERADOR DE RF EN BANDA L

MEMORIA DESCRIPTIVA

4
DISEO DE UN GENERADOR DE RF EN BANDA L

1 Memoria Descriptiva
1.1 Objeto del Proyecto

Este proyecto tiene como objetivo realizar un Generador de RF en Banda L. El


proyecto servir como herramienta docente para el laboratorio de comunicaciones en el
que los alumnos de esta asignatura podrn experimentar con el generador.
El proyecto en s, consiste en disear un sintetizador de frecuencias de RF basado en
un PLL (Phase Lock Loop) que sea capaz de sintetizar una serie de frecuencias para su
posterior estudio. El PLL ser controlado en todo momento por un programa de gestin a
travs de un PC o a travs de un Microcontrolador. El programa de gestin se realizar en
un lenguaje visual para que el alumno se encuentre con un entorno amigable.

1.2 Posibles Soluciones y Solucin Adoptada

Para buscar una solucin al problema planteado es necesario tener claro el concepto
de PLL, por eso se va a dar una pequea explicacin a modo de apunte.

Figura 1. Diagrama de bloques de un PLL, configuracin tpica.

El objetivo del PLL es transmitir la pureza espectral y estabilidad de una seal de


referencia de un oscilador fijo (en nuestro caso, un oscilador de cristal de cuarzo) a un
oscilador controlado por tensin (VCO), para poder sintetizar un determinado nmero de
frecuencias de salida, por ejemplo: Para un rango de frecuencias de entre 1300 y 2000
MHz. Dicho margen depende del VCO seleccionado.
La frecuencia de salida se determina con el valor de los divisores de la seal de
referencia y de los prescalers de entrada.
El comparador de fase (y frecuencia) da una seal de error proporcional a la
diferencia de fase entre la seal dividida procedente de la referencia, y la salida dividida de
los prescalers de entrada (ver figura 1). La frecuencia de esta seal de comparacin se
denomina frecuencia de comparacin:

5
DISEO DE UN GENERADOR DE RF EN BANDA L

Fref
Fcomp = [1]
M

Cuando el PLL est enganchado (o en estado de locking) la frecuencia de salida


vale:

N
Fout = N Fcomp = Fref [2]
M

La seal de salida del comparador de fase se filtra con un filtro pasa bajos
denominado filtro de lazo, la salida del cual modifica la tensin de control de VCO y por
tanto la frecuencia del VCO. El objetivo de este filtro es solo dejar pasar variaciones lentas
de la seal de error, por tanto, idealmente, cuando las frecuencias de las dos seales de
entrada al comparador de fase son idnticas, la salida del comparador es nula, y la tensin
de control del VCO se mantiene constante.
Si por cualquier razn, por ejemplo cuando se conecta la alimentacin, las
frecuencias de las dos seales no son iguales, la seal de salida del comparador no es cero,
y el filtro de lazo acta intentando reducir la seal de salida del comparador y por tanto
intentado igualar las frecuencias, hasta llegar al estado de locking o PLL enganchado. Bajo
estas condiciones la seal de salida sigue las variaciones de la seal de referencia. Esta
propiedad se utiliza en moduladores de frecuencia, FM.
Los PLLs modernos utilizan detectores de fase denominados charge pump, que
bombean pulsos de corriente de duracin proporcional al error de fase, de manera, que el
filtro de lazo integra estos pulsos y los convierte en una seal de control para el VCO.
Normalmente se utilizan filtros pasivos para realizar el filtro de lazo.
La amplitud de los pulsos de corriente se puede programar, de manera que puedan
modificar por configuracin del ancho del filtro del lazo. Normalmente, disponemos de dos
bombas una normal y otra llamada FAST. Esta segunda bomba, en determinadas
aplicaciones se utiliza con un filtro de lazo adicional que slo acta durante la adquisicin
de frecuencias (por ejemplo cuando se cambia de canal en un mvil), ya que aumenta la
corriente, el ancho de lazo aumenta, y el tiempo de adquisicin disminuye, una vez
enganchado a la nueva frecuencia se desactiva, utilizando solo la bomba normal. En otras
ocasiones, se conecta en paralelo con la normal, para dar ms flexibilidad cuando se
selecciona al ancho de banda del lazo.
Los PLL`s modernos, como el UMA1021, disponen de un indicador de lock rpido,
de manera que se puede utilizar para indicar a un microprocesador si el PLL est
enganchado.
Teniendo claro el concepto de PLL y los bloques que lo componen, nos vemos
capaces de dar una solucin al problema propuesto.
Hoy en da el mercado ofrece cantidad de productos similares con prestaciones muy

6
DISEO DE UN GENERADOR DE RF EN BANDA L

parecidas y a veces resulta difcil declinarnos por un dispositivo u otro. Nosotros nos
hemos fijado en un sintetizador de frecuencias denominado UMA1021M BICMOS de la
casa Phillips (UMA1021M Data Sheet. Low-voltage frequency synthesizer for radio telephones. Philips
Semiconductors. 1999), el datasheet de este sintetizador lo podemos encontrar en el apartado 6
de esta memoria, Anexos. Este sintetizador esta formado por dos divisores de frecuencia
(uno para la referencia y otro para la frecuencia de entrada), un comparador de fase, 1
bomba charge-pump, otra Fast y un mdulo que nos permite la programacin de este
sintetizador.
Una vez elegido el sintetizador nos queda por definir el oscilador que vamos a
utilizar para la frecuencia de referencia y el VCO que vamos a utilizar para corregir el error
de fase.
Para la referencia utilizaremos un cristal de cuarzo de unos 12 MHz, el cristal elegido
pertenece a la casa AEL (9710 Series Oscilador). En cuanto al VCO elegido pertenece a la
casa Mini-Circuits y es el modelo POS2000 capaz de trabajar con frecuencias de entre
1260 MHz (para V=0V) y 2000 MHz (para V=15V). Dado que utilizaremos alimentacin
de 5V, el margen de sintona se reducir hasta unos 1450 MHz, dado que la tensin de
control no puede superar la alimentacin.
Una vez determinados los componentes esenciales para la realizacin del PLL, slo
nos queda especificar como vamos a programar el sintetizador.

Para programar el sintetizador, podemos utilizar el puerto paralelo del PC. A travs
de este puerto se puede disear un programa en lenguaje C++ capaz de llevar acabo esa
gestin. Del puerto paralelo deben salir 3 lneas que vayan conectadas directamente al bus
del sintetizador sin necesidad de ningn dispositivo adicional.
Como alternativa tambin programaremos el sintetizador por medio de un
microcontrolador tambin controlado por el mismo programa de gestin antes comentado.
El microcontrolador recibir consignas a travs del puerto serie del PC. El micro ser
capaz de reconocer una serie de consignas provenientes del software de gestin y de esa
forma podr programar el sintetizador.

1.3 Descripcin General del Equipo

El equipo esta formado por una serie de bloques conectados entre s, y a su vez estos
se dividen en subbloques dando forma y sentido al proyecto. Podramos decir que el
equipo se divide en 3 mdulos principales:

Mdulo 1, Sintetizador:

Sintetizador UMA1021M.
Alimentacin del circuito.
Filtro de 4 Orden.
Bus 3-wire.
Frecuencia de referencia.
7
DISEO DE UN GENERADOR DE RF EN BANDA L

Mdulo 2, Programacin mediante Microcontrolador:

Microcontrolador PIC16F876A
Alimentacin del circuito.
Oscilador XT.
Circuito Mclr.
Circuito MAX232.
Bus 3-wire.

Mdulo 3, Vco

Vco POS-2000

El equipo est diseado para ser utilizado por usuarios del laboratorio de
comunicaciones. Dichos usuarios debern conectar los diferentes mdulos para su
posterior utilizacin dependiendo del tipo de programacin elegida para programar el
sintetizador, siempre y cuando se utilicen los mdulos por separado ya que se han hecho
diferentes diseos PCB, todos ellos igual de vlidos. En el caso de elegir que la
programacin sea de forma serial, se debern conectar todos los mdulos, mientras que
para una programacin va puerto paralelo se podr prescindir del mdulo 2, o sea, el
mdulo que lleva el microcontrolador Pic, siempre y cuando se hallan decidido utilizar las
tres placas por separado (para mas informacin sobre los diseos ir a apartado 3, planos).

8
DISEO DE UN GENERADOR DE RF EN BANDA L

PC

MICRO
PIC16F876A

SINTETIZADOR
UMA1021M

VCO
POS-2000

Figura 2. Diagrama de bloques.

9
DISEO DE UN GENERADOR DE RF EN BANDA L

1.4 Descripcin General de la Solucin Adoptada

1.4.1 Mdulo 1, Sintetizador.

1.4.1.1 Sintetizador UMA1021M

El sintetizador elegido para realizar este proyecto es el UMA1021M BICMOS de la


casa Phillips. El UMA1021M integra un prescaler, un comparador de fase y divisores
programables de frecuencia que sirven para implementar un PLL o lazo de amarre de fase.

Figura 3. Composicin y estructura del sintetizador.

10
DISEO DE UN GENERADOR DE RF EN BANDA L

Caractersticas del sintetizador:

Tabla 1. Parmetros significativos del sintetizador.

El Main divider o divisor principal funciona con niveles de seal de entre 50 y


225mV (rms) y frecuencias que van de 300 MHz a 2,2 GHz. Este divisor esta formado por
un prescaler completamente programable seguido de un contador. Los valores que pueden
ser cargados en el divisor van desde el 512 al 131071 ambos incluidos.
El Referente divider o divisor de referencia funciona con niveles de seal de entre
50 y 500mV (rms) y frecuencias que van de 3 a 35 MHz. Los valores que pueden ser
cargados en el divisor van desde el 8 al 2047 ambos incluidos.
El Comparador de fase funciona a base de ir recibiendo y comparando las dos
seales provenientes de los divisores. Tras la comparacin se generan pulsos
proporcionales al error de fase entre las dos seales mediante el mdulo Charge-pump,
pudiendo elegir el modo rpido o normal. Estos pulsos son mltiplos de la corriente Iset
que previamente el diseador configura mediante una resistencia Rset en el pin 19 del
sintetizador. El comparador dispone de una bandera que se levanta cada vez que el
sintetizador se engancha o est en estado de Lock. Esta indicacin de enganche se hace a
travs del pin 20 del sintetizador.
La Interfaz serial que lleva integrada el sintetizador sirve para programar tanto los
divisores de la frecuencia como el charge-pump, la configuracin de IsetEsta interfaz se
conecta a un bus 3-wire.
El sintetizador dispone de tres pines para la alimentacin del mismo: Vcc, Vdd1 y
Vdd2. As mismo tambin viene previsto de diferentes pines para las masa: Vss1, Vss2,
Vss3 y GND.
El generador de pulsos Charge pump dispone de su propia alimentacin y masa, que
son Vcc y Gnd. El resto del sintetizador se alimenta con las otras seales.
El rango en el que se puede alimentar al sintetizador va desde 2.7 V para una tensin
mnima y 5.5 V para la mxima. Esto sirve tanto para alimentacin del charge pump como
para el resto del integrado. El fabricante nos recomienda que si utilizamos tensiones
diferentes, cumplamos el siguiente criterio: Vdd>=Vcc. Tambin nos recomienda que

11
DISEO DE UN GENERADOR DE RF EN BANDA L

cortocircuitemos las masas para que el integrado no sufra ningn tipo de dao. De otra
forma se nos sugiere que a la entrada de los 3 pines de alimentacin incluyamos un par de
capacidades para estabilizar la entrada.

Tabla 2. Parmetros significativos del sintetizador.

Siguiendo las recomendaciones del fabricante y los parmetros indicados en la


tabla, el circuito queda alimentado a 5V, aplicando el siguiente criterio:
VDD1=VDD2=VCC. Tambin aplicamos a la entrada de cada alimentacin un pequeo
filtro.

VCC

FAST LOCK

CPF ISET 100pF 12

CP VCC
100nF 100pF
VDD2 GND 100nF

VSS3 XTALA

12 RFI XTALB
100nF 100pF
VSS2 VDD1

POL E_NOT
12
VCC PON DATA

VSS1 CLK

VCC

Figura 4. Alimentacin del sintetizador.

12
DISEO DE UN GENERADOR DE RF EN BANDA L

La corriente Iset se fija con un resistencia conectada a la patilla Iset. En dicho


terminal existe una referencia de tensin estable de 1.2 V, por tanto:

Tabla 3. Parmetros significativos del sintetizador.

1,2
Iset = [3]
Rset

Para una corriente Iset = 200uA , Rset = 5k 6

FAST LOCK
5k6
CPF ISET

CP VCC

VDD2 GND

VSS3 XTALA

RFI XTALB

VSS2 VDD1

POL E_NOT

PON DATA

VSS1 CLK

Figura 5. Resistencia de configuracin Rset.

13
DISEO DE UN GENERADOR DE RF EN BANDA L

En el pin 1 nos encontramos con el modo Fast que sirve para activar el modo rpido
del mdulo charge pump.

Tabla 4. Parmetros significativos del sintetizador.

Para limitar la corriente ponemos una resistencia de entrada de unos 100k. El


fabricante nos recomienda que como mnimo pase una corriente de 400uA. Con esta
configuracin le llega una corriente de unos 500uA. El circuito queda configurado de la
siguiente forma:

VCC

100k
FAST LOCK

CPF ISET

CP VCC

VDD2 GND

VSS3 XTALA

RFI XTALB

VSS2 VDD1

POL E_NOT

PON DATA

VSS1 CLK

Figura 6. Configuracin del pin1, Fast.

14
DISEO DE UN GENERADOR DE RF EN BANDA L

El pin 6 como podemos ver, se usa para la recepcin de la frecuencia de entrada RFI

Tabla 5. Parmetros significativos del sintetizador.

En el circuito aplicado a la entrada RFI podemos apreciar 1 condensador de


desacoplo para evitar la componente continua de la seal y una resistencia conectada a
masa que nos marca la impedancia de entrada. El otro condensador sirve para lo mismo,
desacopla la seal de continua.

FAST LOCK

CPF ISET

CP VCC

VDD2 GND

VSS3 XTALA
18 18 56pF
RFI XTALB
OUT VCO
VSS2 VDD1
18 56
POL E_NOT

PON DATA

56pF VSS1 CLK

RFI

Figura 7. Configuracin del pin 6, RFI.

15
DISEO DE UN GENERADOR DE RF EN BANDA L

La patilla POL sirve para indicarle a la patilla PON como se va a activar, con un 1
o con un 0. Nosotros hemos decidido que se active mediante un 1 con lo cual POL va
a ir conectado a Vcc. Se le pone una resistencia de 100k para limitar la corriente.

Tabla 6. Parmetros significativos del sintetizador.

FAST LOCK

CPF ISET

CP VCC

VDD2 GND

VSS3 XTALA

RFI XTALB
1nF
VSS2 VDD1
100
POL E_NOT
VCC
PON DATA

100 VSS1 CLK

1nF

Figura 8. Configuracin de los pines 8 y 9, POL y PON.

El pin 20 sirve para indicarnos si el PLL se ha enganchado. El sintetizador nos indica


el estado de lock o enganche mediante un cambio de voltaje en esta patilla. Cuando no
esta enganchado mantiene el voltaje que le aplicamos nosotros, 5 voltios. Cuando se
engancha pasa a 0 voltios. Se le aplica una resistencia para limitar la corriente con un valor
de 100k. El fabricante nos recomienda que como mnimo pase una corriente de 400uA.
Con esta configuracin le llega una corriente de unos 500uA.

16
DISEO DE UN GENERADOR DE RF EN BANDA L

Tabla 7. Parmetros significativos del sintetizador.

100k
FAST LOCK
VCC
CPF ISET

CP VCC

VDD2 GND

VSS3 XTALA

RFI XTALB

VSS2 VDD1

POL E_NOT

PON DATA

VSS1 CLK

Figura 9. Configuracin del pin 20, Lock.

1.4.1.2 Alimentacin del circuito

El sistema de alimentacin de nuestro circuito gira en torno al regulador de tensin


LM7805. La utilizacin de este tipo de regulador supone una serie de ventajas, como son:

Proteccin contra cortocircuitos


Proteccin contra sobrecargas
Regulacin de lnea del orden de 3 mV.
Regulacin de carga del orden de 10 mV.
Corriente de reposo mxima de 8 mA.
Resistencia de salida de 8 mA.

Como se puede apreciar en la figura se trata de un dispositivo de tres terminales. Uno


es el de entrada de la tensin no regulada, otro es el de salida y el tercero es un terminal
comn a la entrada y a la salida que suele estar conectado a tierra. Nuestro regulador se
encargar de estabilizar la tensin a su salida a un valor de 5 V. Para ello la tensin de
entrada debe estar comprendida entre los 7 y los 20 V.

17
DISEO DE UN GENERADOR DE RF EN BANDA L

Por lo que respecta al resto del circuito, los dos condensadores implementan polos
dominantes necesarios para estabilizar el regulador, dado que en base es un circuito
realimentado.

IN LM7805 OUT

GND

100nF
100nF

Figura 10. Alimentacin del circuito.

1.4.1.3 Filtro de 4 Orden

Para obtener un funcionamiento ptimo del sintetizador es muy importante hacer un


buen diseo del filtro. Generalmente se utilizan filtros pasivos cuando se utilizan bombas
de carga o Charge Pump aunque si se desea tambin se pueden utilizar filtros activos.
Los filtros pasivos tienen la ventaja que son de bajo coste, estn formados de pocos
componentes y son mas inmunes al ruido.

Tabla 8. Parmetros significativos del sintetizador.

Normalmente con un filtro de tercer orden bastara y sera suficiente (para segn que
aplicaciones), pero si se quieren eliminar los espurios producidos por la frecuencia de
comparacin es conveniente introducir otra red RC al filtro, pasando a ser de 4 orden. El
clculo del filtro se ha calculado como sigue:

18
DISEO DE UN GENERADOR DE RF EN BANDA L

Datos para el diseo del filtro

- Fvco = 1400 MHz


- Fpc = 200 KHz
- Ts = 600 s
- KVCO = 30 MHz / V
1,2
- Iset = , Rset = 5k 6 con lo cual Iset = 200 A
Rset
- Icp = 16 Iset = 3,6mA / cycle para el caso mximo
2,5 2,5
- Fn = = = 4170 Hz [4]
Ts 600 s
Fvco 1400 MHz
-Main divider ratio N: N = = = 7000 [5]
Fpc 200 KHz

Teniendo esto podemos empezar con el clculo del filtro. Primero haremos
el clculo de un filtro de tercer orden y posteriormente le aplicaremos una nueva red RC
para que se convierta en uno de cuarto orden:

Main capacitor

Kvco Icp
C2 = [6]
Wn 2 N
30 MHz 3,6mA
C2 = = 20nF
Wn 2 7000

Damping resistor

N
R2 = 2 [7]
Kvco Icp C 2

7000
R2 = 2 0,9 = 3k 6
30 MHz 3,6mA 20nF

19
DISEO DE UN GENERADOR DE RF EN BANDA L

Filter capacitor

C2 C
C1 2 [8]
15 10

C1 = 2nF

La red RC adicional sera la siguiente:

R3 2 R 2 [9]

R3 = 2 3k 6 = 7 k 2

R2 C 2
C3 [10]
20 R3
3k 6 20nF
C3 = = 500 pF
20 7 k 2

Figura 11. Filtro pasivo de 3 orden, Filtro pasivo de 4 orden.

20
DISEO DE UN GENERADOR DE RF EN BANDA L

Aplicando los parmetros hallados anteriormente el filtro de lazo queda de la


siguiente forma:

C2 20nF

C1 2nF
R2 3K6
C3 500pF
FAST LOCK

CPF ISET

CP VCC
VCO IN
R3 7K2 VDD2 GND

VSS3 XTALA

RFI XTALB

VSS2 VDD1

POL E_NOT

PON DATA

VSS1 CLK

Figura 12. Implementacin del filtro en el diseo.

1.4.1.4 Bus 3-wire

El sintetizador necesita ser programado para comenzar a trabajar. Este dispositivo se


programa a travs del bus 3-wire que lleva incorporado (pines 11, 12 y 13). Este protocolo
utiliza 3 seales: una de sincronizacin Clk, una de habilitacin Enot y una tercera Data
que es por donde se transmiten los datos en forma de tramas. A cada linia del bus se le ha
aplicado un filtro para evitar interferencias.

Tabla 9. Parmetros significativos del sintetizador.

21
DISEO DE UN GENERADOR DE RF EN BANDA L

FAST LOCK

CPF ISET

CP VCC

VDD2 GND

VSS3 XTALA

RFI XTALB

VSS2 VDD1

POL E_NOT

PON DATA

VSS1 CLK

33pF 33pF 33pF

12 12 12

CLK DATA E_NOT

Figura 13. Bus 3-wire.

Figura 14. Tren de pulsos del Bus 3-wire.

22
DISEO DE UN GENERADOR DE RF EN BANDA L

1.4.1.5 Frecuencia de Referencia

La frecuencia de referencia que utiliza nuestro sintetizador la produce el dispositivo


AEL (9710 Series Oscilador) de 12 MHz. Las caractersticas principales se muestran en el
siguiente cuadro:

Tabla 10. Parmetros significativos del sintetizador.

23
DISEO DE UN GENERADOR DE RF EN BANDA L

Caractersticas de la frecuencia de referencia del sintetizador:

Tabla 11. Parmetros significativos del sintetizador.

FAST LOCK

CPF ISET

CP VCC
12 Mhz VCC
VDD2 GND 1nF 10k

VSS3 XTALA OUT VCC

RFI XTALB

VSS2 VDD1 GND NC

POL E_NOT

PON DATA

VSS1 CLK

Figura 15. Implementacin del Oscilador de referencia en el sintetizador.

24
DISEO DE UN GENERADOR DE RF EN BANDA L

1.4.2 Mdulo 2, Programacin mediante Microcontrolador.

Figura 16. Mdulo 2.

1.4.2.1 Microcontrolador PIC16F876A

El elemento que controla todo el mdulo 2 es un microcontrolador PIC16F876A.


Este integrado de la familia microchip es un C de ocho bits que cuenta con una memoria
de programa tipo FLASH (8 k x 14 word, word de 14 bits) y una de datos RAM de 368
bytes, ambas internas, as como tambin una memoria EEPROM de datos interna de 256
bytes. Puede tener hasta 14 fuentes de interrupcin, de las cules slo vamos a destacar
una: la que acontece cuando se recibe una trama va serie. Tambin cuenta con tres puertos
de entrada/salida: el puerto A, de 6 bits, los puertos B y C, de 8 bits.

25
DISEO DE UN GENERADOR DE RF EN BANDA L

Figura 17. Microcontrolador PIC16F87x.

Los pines de los puertos pueden ser programados como pines de entrada y salida
respectivamente, cada uno independiente de los dems. La configuracin de los pines que
hemos utilizado para nuestra aplicacin es la siguiente: El puerto A al no utilizarlo nos es
indiferente a la hora de programarlo, mientras que el puerto B, en concreto los pines RB7,
RB6 y RB5 se han programado como salidas ya que sern los elegidos para configurar el
bus 3-wire para este mdulo. Respecto al puerto C utilizado para la transmisin/recepcin
de datos se comenta en el siguiente punto.

Los microcontroladores PIC16F87x contienen un mdulo de comunicaciones serie


de tipo sncrono y asncrono: ste es el mdulo USART (Universal Synchronous
Asynchronous Receiver Transmitter ). El USART puede funcionar como un sistema de
comunicacin bidireccional asncrono, adaptndose a multitud de perifricos y dispositivos
que transfieren informacin de esta forma. Dadas nuestras necesidades de comunicar el
microcontrolador con un PC externo, ste mdulo nos ser til para realizar esta labor.

La transferencia se realiza mediante las seales: Tx (transmisin) y Rx (recepcin).


Dichas seales se encuentran en las lneas RC6 y RC7 del microcontrolador,
respectivamente. En el protocolo de comunicacin serie cada palabra de informacin o
dato se enva independientemente de los dems. Las palabras suelen constar de 8 9 bits y
van precedidas por un bit de START y se finalizan con un bit de STOP. Los bits se
transfieren a una frecuencia fija y normalizada. La velocidad de transmisin en baudios
(bits por segundo) a la que se realiza la transferencia debe ser un valor normalizado. En
nuestro caso utilizaremos una velocidad de 9600 baudios.

Respecto a la circuitera aplicada a el micro: el pin 1, Mclr, se le ha asignado un


circuito para producir el reset. Los pines 8 y 19, Vss, son la masa mientras que el pin 20 es
el de la alimentacin, Vdd. Los pines 9 y 10,Osc 1 y 2 se utilizan para introducir seales
de reloj al sistema. Y respecto a los puertos, ya han sido comentados anteriormente.

26
DISEO DE UN GENERADOR DE RF EN BANDA L

1.4.2.2 Alimentacin del circuito

El sistema de alimentacin de nuestro circuito gira en torno al regulador de tensin


LM7805. La utilizacin de este tipo de regulador supone una serie de ventajas, como son:

Proteccin contra cortocircuitos


Proteccin contra sobrecargas
Regulacin de lnea del orden de 3 mV.
Regulacin de carga del orden de 10 mV.
Corriente de reposo mxima de 8 mA.
Resistencia de salida de 8 mA.

Como se puede apreciar en la figura se trata de un dispositivo de tres terminales. Uno


es el de entrada de la tensin no regulada, otro es el de salida y el tercero es un terminal
comn a la entrada y a la salida que suele estar conectado a tierra. Nuestro regulador se
encargar de estabilizar la tensin a su salida a un valor de 5 V. Para ello la tensin de
entrada debe estar comprendida entre los 7 y los 20 V.
Por lo que respecta al resto del circuito, el diodo, previene de inversiones de
polaridad, que puedan ocasionar cualquier desperfecto circuital. Los condensadores
implementan polos dominantes necesarios para estabilizar el regulador, dado que en base
es un circuito realimentado. El condensador de mayor capacidad implementa un filtro
pasabajos para la entrada del regulador. El LED sirve para indicarnos que la placa est
alimentada. Y por ltimo la resistencia situada en serie limita la intensidad que circula a
travs del LED a unos 3,3 mA.

1N4004
Led
IN OUT
LM7805

GND

100nF 1k
47uF 100nF

Figura 18. Alimentacin del circuito.

27
DISEO DE UN GENERADOR DE RF EN BANDA L

MCLR RB7

RA0 RB6

RA1 RB5

RA2 RB4
VCC
RA3 RB3

RA4 RB2

RA5 RB1

VSS RB0

OSC1 VDD
100nF
OSC2 VSS

RC0 RC7

RC1 RC6

RC2 RC5

RC3 RC4

Figura 19. Alimentacin del Micro.

1.4.2.3 Circuito Oscilador ( XT)

Sabiendo el valor del cristal de cuarzo requerido, para nuestro proposito de 4MHz, se
ha extrado el valor de los condensadores (15pF) necesarios de tablas de las hojas de
caractersticas del propio microcontrolador (pag. 122 del datasheet).
El microcontrolador puede trabajar a una frecuencia mxima de 20 MHz. Es
desaconsejable utilizar un cristal de esa frecuencia. Una de las razones es que hacer
trabajar a esa frecuencia al micro lo hara mucho mas sensible al ruido. Por otro lado, a
20MHz se limita el rango de voltaje de entrada entre 4,5-5,5V; mientras que para 4MHz
sera de 4,0-5,5V. Finalmente y como razn fundamental, remarcaremos que no es
necesaria ni mucho menos una frecuencia similar. Con un valor de 4MHz como el
utilizado tendremos margen temporal suficiente para el manejo de la informacin
manteniendo una disciplina de envo constante mediante el trabajo de USART a 9600 bps.

28
DISEO DE UN GENERADOR DE RF EN BANDA L

MCLR RB7

RA0 RB6

RA1 RB5

RA2 RB4

RA3 RB3

RA4 RB2

RA5 RB1

15pF VSS RB0

OSC1 VDD
4 Mhz
OSC2 VSS

RC0 RC7
15pF
RC1 RC6

RC2 RC5

RC3 RC4

Figura 20. Circuito Oscilador.

1.4.2.4 Circuito Mclr

El Pic experimenta un reset de encendido (Power-On) cuando se detecta un flanco de


subida en el rango de 1,2 a 1,7 V en el pin Mclr. A priori no es necesario utilizar pequeos
circuitos RC para controlar este reset por parte del usuario (maniobras de reset). Basta con
un pulsador y un divisor de tensin para este fin. Alimentando el conjunto, el usuario podr
resetear el dispositivo cuando tenga necesidad.
Para le correcto generado del reset nos serviremos de un condensador conectado en
paralelo con el pin Mclr, de esta manera, fijaremos el incremento del voltaje sin importar el
tipo de alimentacin que se le aplique al equipo. En definitiva, utilizaremos un circuito RC.

29
DISEO DE UN GENERADOR DE RF EN BANDA L

VCC

10k

MCLR RB7

2
RA0 RB6

RA1 RB5

1
RA2 RB4
4,7uF
RA3 RB3

100 RA4 RB2

RA5 RB1

VSS RB0

OSC1 VDD

OSC2 VSS

RC0 RC7

RC1 RC6

RC2 RC5

RC3 RC4

Figura 21. Circuito Mclr.

1.4.2.5 Circuito MAX232

Para podernos comunicar con el PC externo utilizaremos la norma RS-232, que es


una de las ms extendidas. Una de sus caractersticas es la de los rangos de tensin que
utiliza para representar los niveles lgicos. El nivel alto se representa con una tensin
comprendida entre 3 y 15 V, mientras que el nivel bajo utiliza el rango de +3 a +15 V.
Dado que nuestro sistema, y en particular el microcontrolador, trabaja a niveles de tensin
comprendidos entre 0 y 5 V se hace necesaria la inclusin de una etapa para adaptarse a la
norma. Esto se consigue mediante la utilizacin de un circuito integrado MAX232. En la
siguiente figura podemos ver cmo conectarlo para conseguir nuestros propsitos.

El MAX232 dispone de dos canales de entrada para niveles TTL, que son el T1IN y
el T2IN, con sus correspondientes salidas: T1OUT y T2OUT. Tambin posee dos canales
de entrada para niveles RS-232 R1IN y R2IN y sus correspondientes salidas, R1OUT y
R2OUT. Se alimenta con +5 V.

Para nuestra aplicacin slo ser necesario el uso de un canal. El microcontrolador


transmite informacin a travs de la lnea T1IN, a nivel TTL, y T1OUT, a nivel RS-232.
Del mismo modo, el PC puede comunicarse con el microcontrolador por las lneas R1IN y
R1OUT.

30
DISEO DE UN GENERADOR DE RF EN BANDA L

El chip MAX232, as tambin, como otros compatibles, pueden necesitar de


aplicacin de algunas capacidades para el correcto funcionamiento de los mismos. En
nuestro caso necesitaremos 5 capacidades. Una de estas capacidades se situara en paralelo
con la alimentacin. Esta capacidad tiene la finalidad de implementar un filtro paso bajo
para la tensin de alimentacin.

C1+ VCC
VCC
1uF
1uF VS+ GND
5
C1- T1OUT 9
4
C2+ R1IN 8
1uF 3
C2- R1OUT 7
2
VS- T1IN 6
1
1uF T2OUT T2IN
RX PIC
R2IN R2OUT
TX PIC

Figura 22. Conexin del C. I. MAX232 a un conector DB9 estndar.

1.4.2.6 Bus 3-wire

El protocolo de comunicacin 3-wire, es el que se utilizar en este proyecto para la


programacin del sintetizador UMA1021M y el recomendado por el fabricante. Aunque se
podra utilizar otro tipo de protocolo, como por ejemplo el I2C, se desestim por la
simplicidad del protocolo 3-wire.
Nuestro Bus de comunicacin consta de 3 seales para tres hilos: la primera seal
es la de Clk, la segunda seal ser la de Datos y la tercera y ltima seal ser la de
habilitacin, Enot.
Estas tres linias de comunicacin van conectadas directamente al sintetizador a travs
de un cable. Las seales del Bus 3-wire son generadas por el micro a travs del puerto B,
en concreto mediante los pines RB7, RB6 y RB5.

31
DISEO DE UN GENERADOR DE RF EN BANDA L

MCLR RB7
CLK
RA0 RB6
DATA
RA1 RB5
E_NOT
RA2 RB4

RA3 RB3

RA4 RB2

RA5 RB1

VSS RB0

OSC1 VDD

OSC2 VSS

RC0 RC7

RC1 RC6

RC2 RC5

RC3 RC4

Figura 23. Bus 3-wire.

32
DISEO DE UN GENERADOR DE RF EN BANDA L

1.4.3 Mdulo 3, Vco.

Para corregir el error de desfase se utiliza un oscilador controlado por tensin o


VCO. El oscilador que vamos a utilizar trabaja con seales de entre 1370 y 2000 MHz
suficiente para el rango de frecuencias que vamos a utilizar. El Vco en cuestin es un
POS2000 de la casa Mini-Circuits.

POS2000 VCO

TUNE GND
IN VCO

GND GND

GND GND

OUT VCC
OUT VCO VCC

Figura 24. VCO, POS2000.

El oscilador funciona con un voltaje de 12 voltios con lo que hemos decido


alimentarlo de forma independiente en vez de hacer un fuente de tensin compartida.
Para regular la tensin que alimenta al VCO hemos utilizado el regulador LM7812
con las mismas caractersticas que los reguladores antes comentados aunque con pequeas
diferencias como la regulacin, que en este caso es de 12 voltios. Por este motivo no se va
a comentar en este apartado el circuito que alimenta al VCO.

IN LM7812 OUT

GND

100nF
100nF

Figura 25. Alimentacin del VCO.

33
DISEO DE UN GENERADOR DE RF EN BANDA L

1.5 Resultados y conclusiones

1.5.1 Resultados

Los resultados obtenidos son ptimos. Por eso nos damos por satisfechos viendo los
resultados obtenidos en el laboratorio.
Como ejemplo de estos resultados hemos hecho medidas tales como: el tiempo de
commutacin entre frecuencias y la obtencin del ruido de fase. Un ejemplo de estas
medidas son comentadas a continuacin:

En la figura 26, podemos apreciar el tiempo que pasa a la hora de cambiar de una
frecuencia baja a una mas alta, que es del orden de unos 300 S , y la inyeccin de pulsos
que hacen posible el enganche de la nueva frecuencia.

100
Figura 26. Tiempo de commutacin.

34
DISEO DE UN GENERADOR DE RF EN BANDA L

Para apreciar el ruido de fase hemos aplicado el criterio mostrado en la figura 27.

Figura 27. Ruido de fase.

En la figura 28, podemos deducir que a 293,3KHz de la frecuencia de enganche


1,399GHz , tenemos el siguiente ruido de fase:

RBW
L( f )dBc / Hz = ( Ps Pssb ) 10 log10 ( ) [11]
1Hz
3KHz
L( f )dBc / Hz = 61,1 10 log10 ( )
1Hz
L( f )dBc / Hz = 61,1 34,77 = 95,87 dBc / Hz

Figura 28. Ruido de fase a 293KHz de la frecuencia de enganche.

35
DISEO DE UN GENERADOR DE RF EN BANDA L

En la figura 29, repetimos la medida pero en este caso a 100 KHz de la frecuencia
de enganche 1,399GHz , resultando el siguiente ruido de fase:

RBW
L( f )dBc / Hz = ( Ps Pssb ) 10 log10 ( ) [11]
1Hz
3KHz
L( f )dBc / Hz = 66,2 10 log10 ( )
1Hz
L( f )dBc / Hz = 66,2 34,77 = 100,97 dBc / Hz

Figura 29. Ruido de fase a 100KHz de la frecuencia de enganche.

36
DISEO DE UN GENERADOR DE RF EN BANDA L

En la figura 30, reducimos a 10 KHz de la frecuencia de enganche 1,399GHz ,


obteniendo el siguiente ruido de fase:

RBW
L( f )dBc / Hz = ( Ps Pssb ) 10 log10 ( ) [11]
1Hz
1KHz
L( f )dBc / Hz = 44,9 10 log10 ( )
1Hz
L( f )dBc / Hz = 44,9 30 = 74,9dBc / Hz

Figura 30. Ruido de fase a 10KHz de la frecuencia de enganche.

37
DISEO DE UN GENERADOR DE RF EN BANDA L

1.5.2 Conclusiones

Para concluir podemos decir que el desarrollo e implementacin del proyecto se ha


realizado con xito, logrando que todos los mdulos interacten de forma satisfactoria. Se
ha podido comprobar el funcionamiento total del circuito PLL, programacin, enganche,
etc.

Como posibles ampliaciones y mejoras; una ampliacin interesante sera la


inclusin de mdulos para la recepcin y tratado de datos ya que el sistema fue pensado
originalmente para comprobar como funciona un circuito PLL a nivel docente; y es por eso
que sera interesante seguir la cadena de mdulos que hacen posible una comunicacin.

Otra posible mejora est relacionada con la sensibilidad del sistema y el alcance del
mismo. Se podra mejorar el diseo del filtro para poder trabajar con todo el ancho de
banda que nos es capaz de proporcionar el VCO. De otra forma tambin se podra trabajar
para reducir el ruido de fase e incluir un atenuador variable para poder modificar la
potencia de salida, ya que ahora es fija.

Para finalizar las conclusiones podemos mencionar las dificultades presentadas


durante el desarrollo. De entre todas ellas, la mas significativas se han dado en las demoras
de los componentes solicitados y la fabricacin de los prototipos, as como tambin se han
encontrado dificultades a la hora de acceder a los laboratorios.

38
DISEO DE UN GENERADOR DE RF EN BANDA L

MEMORIA DE CLCULO

39
DISEO DE UN GENERADOR DE RF EN BANDA L

2 Memoria de Clculo

En este apartado se explica el funcionamiento general de los dos programas y la


estrategia de resolucin adoptada. Para ello se incorporan una serie de comentarios que
facilitarn la compresin de dichos programas. Los cdigos completos, tanto el del Micro
como el ejecutado en el Pc, se encuentran de forma ntegra en el apartado 6 de esta
memoria, Anexos.

2.1 Programa UMA v1.0

Figura 31. Programa de gestin, UMA v1.0.

El objetivo de este programa es poder programar el sintetizador UMA1021M de


forma sencilla y que ofrezca un entorno de fcil comprensin. Para ello se ha desarrollado
el software en plataforma WIN32 bajo varios sistemas operativos dentro de la gama
Windows.
El programa de gestin y programacin, quitando su entorno visual, es sencillo y de
fcil solucin. En los apartados siguientes se explicar de la forma mas sencilla posible, los
algoritmos mas importantes y la estrategia adoptada.

40
DISEO DE UN GENERADOR DE RF EN BANDA L

2.1.1 Algoritmo de programacin por puerto paralelo

Para programar el sintetizador UMA1021M se necesitan nicamente tres seales;


una de sincronizacin clk, otra de habilitacin Enot y por ltimo la seal de entrada de
datos, osea datos.
Para generar estas tres seales hemos creado las siguientes rutinas:

//---------------------------------------------------------------------//
// Funcin que genera la seal de nivel bajo del clk
//---------------------------------------------------------------------//
void clockd()
{
int x;
x=PortIn(LPT1i);
x=x&254;
PortOut(LPT1o,x);
}

Esta funcin nos sirve para generar el nivel bajo de la seal de reloj. Como se
puede observar es realmente sencillo. nicamente hemos de saber la direccin del puerto
paralelo y el pin exacto donde queremos generar la seal de nivel bajo. Nosotros hemos
elegido el pin D0 para generar la seal de clk.

//---------------------------------------------------------------------//
// Funcin que genera la seal de nivel alto del clk
//---------------------------------------------------------------------//
void clockup()
{
int x,i;
x=PortIn(LPT1i);
x=x|1;
PortOut(LPT1o,x);
}

Esta funcin al igual que la anterior, sirve para generar la seal de clk, aunque esta
a diferencia de la otra genera el nivel alto.

41
DISEO DE UN GENERADOR DE RF EN BANDA L

//---------------------------------------------------------------------//
// Funcin que genera la seal de habilitacin del sintetizador
//---------------------------------------------------------------------//
void endown()
{
int x;
x=PortIn(LPT1i);
x=x&251;
PortOut(LPT1o,x);
}

//---------------------------------------------------------------------//
// Funcin que genera la seal de inhabilitacin del sintetizador
//---------------------------------------------------------------------//
void enup()
{
int x;
x=PortIn(LPT1i);
x=x|4;
PortOut(LPT1o,x);
}

Estas dos funciones sirven para generar tanto la seal de habilitacin como la de
inhabilitacin de escritura en los registros del sintetizador. Funciona de igual forma que la
seal de reloj con la nica diferencia que esta seal se escribe en el pin D2 del puerto
paralelo.
La seal de datos se explicar mas adelante. La funcin que nos ocupa en estos
momentos se denomina db(int decimal). Esta funcin sirve para convertir un nmero
entero en una secuencia binaria, o para ser mas claros convierte un nmero de notacin
decimal a binario.

42
DISEO DE UN GENERADOR DE RF EN BANDA L

//---------------------------------------------------------------------//
// Funcin que convierte un entero en una secuencia binaria
//---------------------------------------------------------------------//
db(int decimal)
{
int dummy=decimal,i=0;
while (i<17)
{
data[i]= fmod(dummy,2);
dummy = dummy/2;
i++;
}
return (0);
}
Ya que la seal de datos es una seal que se propaga de forma serie por el pin D1
del puerto paralelo, de ah la necesidad de convertir enteros en secuencias binarias.
La siguiente y ltima funcin sirve tanto como para generar la seal de datos, como
para programar y utilizar todas las funciones antes comentadas. De echo esta funcin es la
que programa al sintetizador.

//---------------------------------------------------------------------//
// Funcin que programa al sintetizador utilizando el puerto paralelo
//---------------------------------------------------------------------//
void latch (int *addr, int *data)
{
int x,i;
clockup();
endown();
ctr.cont=0;
for (i=16;i>=0;i--)
{
x=PortIn(LPT1i);
if (data[i]==1){ x=x|2;}
if (data[i]==0){ x=x&253;}
PortOut(LPT1o,x);
clockd();
x=PortIn(LPT1i);
clockup();
ctr.cont=ctr.cont+1;
}

43
DISEO DE UN GENERADOR DE RF EN BANDA L

for (i=3;i>=0;i--)
{
x=PortIn(LPT1i);
if (addr[i]==1){ x=x|2;}
if (addr[i]==0){x=x&253;}
PortOut(LPT1o,x);
clockd();
x=PortIn(LPT1i);
clockup();
ctr.cont=ctr.cont+1;

}
enup();
}

Con esto, queda claro como programamos el sintetizador por medio del puerto
paralelo. Hay que decir, que el cdigo completo, est en el apartado de Anexos, pues se ha
credo nicamente comentar la generacin de las seales que hacen posible la
programacin del dispositivo.

2.1.2 Algoritmo de programacin por puerto serie

La diferencia entre programar el sintetizador por el puerto serie y programarlo por el


puerto paralelo esta, en que de forma serie, no se programa directamente el sintetizador
sino que se de hace de forma indirecta. Quien realmente programa el sintetizador es el
microcontrolador que acta de enlace entre PC y sintetizador. El micro recibe todas las
consignas e informacin (que provienen del PC) necesaria para generar las seales de
comunicacin y programacin que hacen posible la programacin del sintetizador. De esta
forma, la opcin de programar a partir del puerto serie, slo conlleva el envo de
informacin sobre los registros a programar; ya que ser el micro, est vez, quien genere
todas las seales y no el PC como en la programacin por puerto paralelo. Dicho esto
queda claro, que slo se enva informacin (al micro) y en ningn caso se generan seales
de programacin.

La rutina de programacin por puerto serie es la que sigue. Se intentarn comentar


las partes mas crticas de la misma.

44
DISEO DE UN GENERADOR DE RF EN BANDA L

//---------------------------------------------------------------------//
// Funcin de Borland que nos permite enviar toda informacin al micro
// para que este programe con la informacin recibida el sintetizador
//---------------------------------------------------------------------//
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
int j;
charA="a";

if((RadioButton5->Checked==true))
{
/----------------------------------------------------------------------/
/ Aqu va la rutina/s de programacin por puerto paralelo (..)
/ no las comentamos ya que se trataron en el apartado anterior
/----------------------------------------------------------------------/
}

/-----------------------------------------------------------------------/
/ Programacin Por el Puerto Serie
/-----------------------------------------------------------------------/
// seleccionamos programacin por puerto serie
if((RadioButton6->Checked==true))
{
if(ctr.tmp)
{
// variable que tiene que estar a uno para que
// podamos entrar, de esta manera
// se evita que el usuario le de a la tecla
// grabar dispositivo, reiteradamente.
// Se podra decir que es una proteccin

// Enviamos un Eco al micro si responde


// quiere decir que est preparado para
// recibir la informacin

WriteFile(hcomPort, "g", 1, &dwBytWri, 0);

45
DISEO DE UN GENERADOR DE RF EN BANDA L

for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00; // Limpiamos nuestro buffer de informacin
} // de entrada al Pc

ccc=0;
do{
Sleep(100); // Retardo de 100 ms
// Esperamos que el micro nos envie g
// que no es mas, que el eco del carcter
// enviado previamente

ReadFile(hcomPort, acBuf, 1, &dwBytRea, 0);

if(acBuf[0]=='g') // Si recibimos g, micro conectado


{ // En caso contrario se nos informa
Memo1->Clear(); // del estado del micro
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Micro Conectado >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

for(ii=0;ii<22;ii++) // Limpiamos el Buffer


{
acBuf[ii]=0x00;
}

flagm=1;
ccc=6;
}
ccc++;
}while(ccc<6);

// En caso de que el Micro no este conectado se nos informa

46
DISEO DE UN GENERADOR DE RF EN BANDA L

if(flagm==0)
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Micro NO Conectado >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(2000);
Memo1->Clear();
}

if(flagm==1) // Si Micro, la bandera flagm=1, entonces


{ // Informamos del envo de consignas
Sleep(1000);
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Enviando Consignas...>");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

for(ii=0;ii<22;ii++) // Inicializamos los vectores


{ // que vamos a utilizar
acBuf[ii]=0x00;
tramaA[ii]=0x00;
tramaB[ii]=0x00;
tramaC[ii]=0x00;
}

// Aqu va la primera tramaEs el Main divider


db(ctr.mdr); // Conversin de entero a binario
for(j=0;j<17;j++)
{
if(data[j]==1)
{
tramaA[j]='1';

47
DISEO DE UN GENERADOR DE RF EN BANDA L

}
if(data[j]==0)
{
tramaA[j]='0';
}
}
strrev(tramaA); // Esta funcin invierte la tramaA

tramaA[17]='0'; tramaA[18]='1'; tramaA[19]='0'; tramaA[20]='0';

// Estos bits nos indican la direccin del registro


// en el que vamos a escribir los datos del sintetizador

charA="a"; // Indicativo de final de trama


strcat(tramaA,charA); // Funcin que concatena dos strings

dwlen=strlen(tramaA);// Funcin que nos calcula los bytes que hay en


// la trama
// Enviamos la tramaA
WriteFile(hcomPort, tramaA, dwlen, &dwBytWri, 0);

//Aqu va la segunda trama....Es el Reference divider.......


db(ctr.rdr); // Conversin de entero a binario
for(j=0;j<17;j++)
{
if(data[j]==1)
{
tramaB[j]='1';
}
if(data[j]==0)
{
tramaB[j]='0';
}
}
strrev(tramaB); // Esta funcin invirte tramaB

tramaB[17]='0'; tramaB[18]='1'; tramaB[19]='0'; tramaB[20]='1';

// Estos bits nos indican la direccin del registro

48
DISEO DE UN GENERADOR DE RF EN BANDA L

// en el que vamos a escribir los datos del sintetizador

charA="b"; // Indicativo de final de trama


strcat(tramaB,charA);// Concatena dos strings
dwlen=strlen(tramaB);// Funcin que nos calcula los bytes que hay
// en la trama
WriteFile(hcomPort, tramaB, dwlen, &dwBytWri, 0);// Enviamos la tramaB

// Aqui va la tercera trama....Es el charge pump, sPON y OOL


// que es el Registro de Control

for (j=0;j<17;j++) // Limpiamos


{
data[j]=0;
}

data[6]=ctr.pd; // introducimos Power Down


data[9]=ctr.cr0; // Charge Pump
data[10]=ctr.cr1; // Charge Pump
data[12]=ctr.ool; // Out Of Lock

for(j=0;j<17;j++)
{
if(data[j]==1)
{
tramaC[j]='1';
}
if(data[j]==0)
{
tramaC[j]='0';
}
}
strrev(tramaC); // Invertimos la tramaC

tramaC[17]='0'; tramaC[18]='0'; tramaC[19]='0'; tramaC[20]='1';


// Estos bits nos indican la direccin del registro
// en el que vamos a escribir los datos del sintetizador

49
DISEO DE UN GENERADOR DE RF EN BANDA L

charA="c"; // Indicativo de final de trama


strcat(tramaC,charA); // Concateno los dos Strings
// Funcin que nos calcula los bytes que hay en la trama
dwlen=strlen(tramaC);
WriteFile(hcomPort, tramaC, dwlen, &dwBytWri, 0);// Envio la tramaC

// Verificacin de las Tramas Enviadas, en caso de seleccin


if(CheckBox4->Checked==true)
{
Sleep(1000); // Informamos de la verificacin
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Verificando...>");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

// Envio al micro un comando para que cuando lleguen


// las tramas me las vuelva a
// enviar por si hay errores en la transmisin

WriteFile(hcomPort, "d", 1, &dwBytWri, 0);

// Comando indicativo de verificacin


// Esperamos a que lleguen las tramas para poder compararlas

do{
Sleep(100); // Retardo de 100 ms
// Leo el Puerto serie
ReadFile(hcomPort, acBuf, dwlen, &dwBytRea, 0);
// Empieza la comparacin
if(acBuf[21]=='a')
{
for(ii=0;ii<22;ii++)
{
// En el caso que las tramas recibidas sean diferentes
// se nos informa de ello

50
DISEO DE UN GENERADOR DE RF EN BANDA L

if(tramaA[ii]!=acBuf[ii])
{
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < -ERROR- TramaA incorrecta >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(2000);
flagError=1;
}
}
flag=1;
}
}while(flag==0);

for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
}

flag=0;

do{
ReadFile(hcomPort, acBuf, dwlen, &dwBytRea, 0);
if(acBuf[21]=='b')
{
for(ii=0;ii<22;ii++)
{
if(tramaB[ii]!=acBuf[ii])
{
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < -ERROR- TramaB incorrecta >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

51
DISEO DE UN GENERADOR DE RF EN BANDA L

Sleep(2000);
flagError=1;
}
}
flag=1;
}
}while(flag==0);

for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
}

flag=0;

do{
ReadFile(hcomPort, acBuf, dwlen, &dwBytRea, 0);
if(acBuf[21]=='c')
{
for(ii=0;ii<22;ii++)
{
if(tramaC[ii]!=acBuf[ii])
{
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < -ERROR- TramaC incorrecta >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(2000);
flagError=1;
}
}
flag=1;
}
}while(flag==0);
} // Fin del if en el caso de haber elegido verificacin

52
DISEO DE UN GENERADOR DE RF EN BANDA L

// Una vez sabemos que las tramas estn bien le digo al micro
// que empiece a programar el
// sintetizador. En el caso de no elegir la verificacin de las
// tramas entraramos en esta
// rutina directamente

if(flagError==0)
{
Sleep(1000);
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" <...en programacin>");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

// Envio comando de programacin


WriteFile(hcomPort, "e", 1, &dwBytWri, 0);

for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
}

// Espero a Recibir consigna del micro....el sintetizador


// esta programado ?

do{

ReadFile(hcomPort, acBuf, 1, &dwBytRea, 0);


// Leemos el Puerto por si nos
Sleep(10); // llega el character f que es el
ccc++; // indicativo de programacin ok

53
DISEO DE UN GENERADOR DE RF EN BANDA L

if(acBuf[0]=='f') // Si es s, informamos del evento


{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Dispositivo Programado >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

for(ii=0;ii<22;ii++)// Limpiamos el buffer


{
acBuf[ii]=0x00;
}
flagp=1; // Banderas indicativas de programacin positiva
ccb=1;
ccc=0;
}

if((ccc==1500)&&(flagp==0)&&(ccb==0)) // Condicin de fallo del


// micro
{
Memo1->Clear(); // Informamos del evento
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < El Micro No Responde >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
ccc=0;
flagp=1;
}
}while(flagp==0);

ccb=0;
Sleep(100);

// En caso de haber programado bien, esperamos a que el sintetizador


// se enganche

54
DISEO DE UN GENERADOR DE RF EN BANDA L

// Si logra engancharse, nos avisa, en caso contrario tambin

do{
// Esperamos la llega del commando l

ReadFile(hcomPort, acBuf, 1, &dwBytRea, 0);


ccc++;
// Si se cumple la condicin nos indica que el pll est enganchado

if(acBuf[0]=='l') {
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < PLL Enganchado >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

Memo2->Color = clRed;
Sleep(2000);
Memo2->Color = clLime;

for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
}
flagp=0;
ccb=1;
ccc=0;
}
if((ccc==1500)&&(flagp==1)&&(ccb==0))// si no se cumple informamos
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < No Engancha o Out of Lock >");
Memo1->Lines->Add(" < no est habilitado >");

55
DISEO DE UN GENERADOR DE RF EN BANDA L

Memo1->Lines->Add("");
Memo2->Color = clLime;
ccc=0;
flagp=0;
}
}while(flagp==1);

flagp=0;
}
else
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Vuelve a intentarlo >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
}
flagm=0;
}
}//fin if ctr.tmp
ctr.tmp=0;
}//fin if serie
}

56
DISEO DE UN GENERADOR DE RF EN BANDA L

2.2 Programa de gestin del Micro

El objetivo principal del microcontrolador es programar el sintetizador. El micro es


capaz de recibir consignas que provienen del PC interpretarlas y ejecutar las acciones
relacionadas con dichas consignas.
Para que el micro sea capaz de programar, primero ha de obtener la informacin
necesaria, o sea, los datos. Estos datos provienen del PC en tramas de 21 bits y el medio
que utiliza para su transporte se basa en el protocolo de comunicacin RS232. Una vez
recibidos los datos el micro los guarda en registros para su posterior utilizacin.
Para que el micro comience a programar con la informacin guardada en los
registros, el programa de gestin del PC se lo ha de ordenar. Una vez que se enva la orden
de programacin, el micro comienza a programar el sintetizador.
A partir de aqu, se explica de forma general (y dependiendo del caso, de forma
especfica) la gestin y programacin del sintetizador mediante el microcontrolador.

2.2.1 Recepcin de los datos.

Como hemos dicho antes, nuestra comunicacin se basa en el protocolo de


comunicacin RS232 (comunicacin PC-uC). Cada vez que llega un dato o consigna al
micro se produce una interrupcin, de esa forma el micro no tiene porque estar esperando a
que lleguen los datos. Una vez captado el dato, este se guarda en un vector de 21
posiciones. Si en vez de ser un dato de informacin lo que recibimos, es una consigna o
comando el micro lo reconoce y lo procesa.
La rutina de servicio a la interrupcin provocada por la llegada de un dato es la
siguiente:

//---------------------------------------------------------------------//
// Rutina de servicio a la interrupcin
//---------------------------------------------------------------------//
#int_rda
void serial_isr()
{
if(kbhit()) // Si llega algo
{
cc=0x00; // Inicializamos la variable
cc=getc();// La funcin getc() nos da el dato capatado del exterior
if((cc!='a')&&(cc!='b')&&(cc!='c')&&(cc!='d')&&(cc!='e'))
{ Add_buffrec(cc);} // Acumulamos los datos que no son consignas
if(cc=='a'){flaga=1;} // Flag que nos indica fin de la 1 trama
if(cc=='b'){flagb=1;} // Flag que nos indica fin de la 2 trama

57
DISEO DE UN GENERADOR DE RF EN BANDA L

if(cc=='c'){flagc=1;} // Flag que nos indica fin de la 3 trama


if(cc=='d'){flagd=1;} // Flag que nos indica verificacin de tramas
if(cc=='e'){flage=1;} // Flag que nos indica programacin activa
}
}

Cuando llega un dato que no es de informacin se activa una bandera o flag que nos
servir o no, para ejecutar una accin mientras que si el dato recibido es una dato de
informacin se acumula en un buffer para su posterior tratado.

2.2.2 Algoritmo de programacin

Una vez llegada toda la informacin necesaria para programar el sintetizador, solo
queda generar las seales adecuadas y el sintetizador recibir toda la informacin que le
har ser funcional.

Rutina de generacin de seales para la programacin del sintetizador:

//---------------------------------------------------------------------//
// Esta funcin hace los pasos para meter los datos en el registro del
// sintetizador del chip, en su direccin addr y con datos data
//---------------------------------------------------------------------//
void latch (char *data)
{
int i;
output_high(PIN_B7); // Seal de clk a nivel alto
output_low(PIN_B5); // Seal de habilitacin a nivel bajo
for (i=0;i<21;i++) // Introduccin de # y @
{
if (data[i]=='1')
{
output_high(PIN_B6); // Seal de datos equivalente a un 1 lgico
}
if (data[i]=='0')
{
output_low(PIN_B6); // Seal de datos equivalente a un 0 lgico
}
output_low(PIN_B7); // Seal de clk a nivel bajo
output_high(PIN_B7); // Seal de clk a nivel alto

58
DISEO DE UN GENERADOR DE RF EN BANDA L

}
output_high(PIN_B5); // Seal de habilitacin a nivel alto
}

A travs de *data introducimos las tres tramas de 21 bits que necesita el


sintetizador para que sea operativo.

2.2.3 Rutinas auxiliares

A lo largo del programa se utilizan una serie de rutinas que aunque no son la piedra
angular del cdigo, sin ellas no podramos trabajar. Las rutinas son las siguientes:

//---------------------------------------------------------------------//
// Inicializacin del Buffer de recepcin y tramas
//---------------------------------------------------------------------//
void Ini_buff_rec(void)
{
int i;
for(i=0;i<MAXLENBUFF;i++)
{
buffrec[i]=0x00;
}
if(flagr==1)
{
for(i=0;i<MAXLENBUFF;i++)
{
tramaA[i]=0x00;
tramaB[i]=0x00;
tramaC[i]=0x00;
}
flagr=0;
}
xbuffrec=0x00;
}

59
DISEO DE UN GENERADOR DE RF EN BANDA L

//---------------------------------------------------------------------//
// Acumula los datos de informacin que entran por la USART
//---------------------------------------------------------------------//
void Add_buffrec(char c)
{
buffrec[xbuffrec++]=c;
}

//---------------------------------------------------------------------//
// Inicializacin tras Reset del Micro
//---------------------------------------------------------------------//

void On_reset(void)
{
flagr=1;
output_low(PIN_B7);
output_low(PIN_B6);
output_high(PIN_B5);
disable_interrupts(GLOBAL);
delay_ms(100);
Ini_buff_rec();
enable_interrupts(int_rda);
enable_interrupts(global);
}

2.2.4 Funcin Main

La funcin Main realiza principalmente las siguientes gestiones:

//---------------------------------------------------------------------//
// Copia de las tramas recibidas.
//---------------------------------------------------------------------//
if(flaga==1)
{
strcpy(tramaA,buffrec);// Funcin que copia el string buffrec en tramaA
Ini_buff_rec();
flaga=0;
}

60
DISEO DE UN GENERADOR DE RF EN BANDA L

if(flagb==1)
{
strcpy(tramaB,buffrec);// Funcin que copia el string buffrec en tramaB
Ini_buff_rec();
flagb=0;
}
if(flagc==1)
{
strcpy(tramaC,buffrec);// Funcin que copia el string buffrec en tramaC
Ini_buff_rec();
flagc=0;
}

//---------------------------------------------------------------------//
// Verifica las trama recibidas
//---------------------------------------------------------------------//
if(flagd==1)
{
for(j=0;j<21;j++){ // Enviamos la tramaA al PC para que la compare
putc(tramaA[j]);} // de esta forma sabemos si es corrupta
putc(cc='a');
delay_ms(10);
for(j=0;j<21;j++){ // Enviamos la tramaB al PC para que la compare
putc(tramaB[j]);}
putc(cc='b');
delay_ms(10);
for(j=0;j<21;j++){ // Enviamos la tramaC al PC para que la compare
putc(tramaC[j]);}
putc(cc='c');
flagd=0;
}

61
DISEO DE UN GENERADOR DE RF EN BANDA L

//---------------------------------------------------------------------//
// Programacin del sintetizador
//---------------------------------------------------------------------//
if(flage==1)
{
cont=0;
latch(tramaA); // Funcin que genera las seales de programacin
latch(tramaB); // Funcin que genera las seales de programacin
latch(tramaC); // Funcin que genera las seales de programacin
putc(cc='f'); // Envo por Tx a PC... dispositivo programado
On_reset();
flage=0;
flagl=1;
}

//---------------------------------------------------------------------//
// Detecta el enganche o estado de locking del sintetizador.
//---------------------------------------------------------------------//
if((input(PIN_B4)==0)&&(flagl==1))
{
putc(cc='l');// Si en el pin B4 leemos un 0 el programa envia por
// TX un comando
flagl=0; // que nos indica que el sintetizador esta enganchado
On_reset();
}

62
DISEO DE UN GENERADOR DE RF EN BANDA L

PLANOS

63
DISEO DE UN GENERADOR DE RF EN BANDA L

3 Planos

3.1 Placa del circuito impreso 1

3.1.1 Situacin de los componentes en placa 1

64
DISEO DE UN GENERADOR DE RF EN BANDA L

3.1.2 Mascara de cara soldadura, placa 1 ( Bottom )

65
DISEO DE UN GENERADOR DE RF EN BANDA L

3.2 Placa del circuito impreso 2

3.2.1 Situacin de los componentes en placa 2

66
DISEO DE UN GENERADOR DE RF EN BANDA L

3.2.2 Mascara de cara soldadura placa 2 ( Top )

67
DISEO DE UN GENERADOR DE RF EN BANDA L

3.2.3 Mascara de cara soldadura placa 2 ( Bottom )

68
DISEO DE UN GENERADOR DE RF EN BANDA L

3.3 Placa del circuito impreso 3

3.3.1 Situacin de los componentes en placa 3

69
DISEO DE UN GENERADOR DE RF EN BANDA L

3.3.2 Mascara de cara soldadura placa 3 ( Top )

70
DISEO DE UN GENERADOR DE RF EN BANDA L

3.3.3 Mascara de cara soldadura placa 3 ( Bottom )

71
DISEO DE UN GENERADOR DE RF EN BANDA L

3.4 Placa del circuito impreso 4

3.4.1 Situacin de los componentes en placa 4

72
DISEO DE UN GENERADOR DE RF EN BANDA L

3.4.2 Mascara de cara soldadura placa 4 ( Top )

73
DISEO DE UN GENERADOR DE RF EN BANDA L

3.4.3 Mascara de cara soldadura placa 4 ( Bottom )

74
DISEO DE UN GENERADOR DE RF EN BANDA L

3.5 Placa del circuito impreso 5

3.5.1 Situacin de los componentes en placa 5

75
DISEO DE UN GENERADOR DE RF EN BANDA L

3.5.2 Mascara de cara soldadura placa 5 ( Top )

76
DISEO DE UN GENERADOR DE RF EN BANDA L

3.5.3 Mascara de cara soldadura placa 5 ( Bottom )

77
DISEO DE UN GENERADOR DE RF EN BANDA L

PRESUPUESTO

78
DISEO DE UN GENERADOR DE RF EN BANDA L

4 Presupuesto
4.1 Mediciones

Captulo 1: Horas de diseo.

N Ud Descripcin N Partes Subtotal TOTAL


HORAS DE DISEO PROTOTIPO
1.1 H 400 400
HORAS DE DISEO Y DESARROLLO 400
DEL PROTOTIPO

Captulo 2: Componentes electrnicos.

N Ud Descripcin N Partes Subtotal TOTAL


MAX232
2.1 U C.I. MAX232 1 1
TRANSMISIN/RECEPCIN DE 1
SEALES TTL/232
UMA1021M
2.2 U C.I. UMA1021M SSOP20 1 1
SINTETIZADOR DE FRECUENCIAS 1

PIC 16F876A
2.3 U MICROCONTROLADOR PIC 16F876A 1 1
DE 28 PINES 1

VCO POS2000
2.4 U VCO POS2000 CON UN RANGO DE 1 1
FRECUENCIAS DE 1370 A 2000 MHz 1

CONDENSADOR 1uf
2.5 U 4 4
CONDENSADOR ELETROLTCO 1uf 4

CONDENSADOR 100nf
2.6 U 4 4
CONDENSADOR CERMICO 100nf 4

CONDENSADOR 47uf
2.7 U 1 1
CONDENSADOR ELECTROLTCO 1
47uf
CONDENSADOR 4,7uf
2.8 U 1 1
CONDENSADOR ELECTROLTCO 1
4,7uf

79
DISEO DE UN GENERADOR DE RF EN BANDA L

CONDENSADOR 15pf
2.9 U 2 2
CONDENSADOR CERMICO 15pf 2

CONDENSADOR SMD 100pf


2.10 U 3 3
CONDENSADOR SMD 1206 100pf 3

CONDENSADOR SMD 100nf


2.11 U 7 7
CONDENSADOR SMD 1206 100nf 7

CONDENSADOR SMD 56pf


2.12 U 2 2
CONDENSADOR SMD 1206 56pf 2

CONDENSADOR SMD 1nf


2.13 U 4 4
CONDENSADOR SMD 1206 1nf 4

CONDENSADOR SMD 33pf


2.14 U 3 3
CONDENSADOR SMD 1206 33pf 3

CONDENSADOR SMD 3,7nf


2.15 U 1 1
CONDENSADOR SMD 1206 3,7nf 1

CONDENSADOR SMD 37nf


2.16 U 1 1
CONDENSADOR SMD 1206 37nf 1

DIODO
2.17 U 1 1
DIODO MODELO 1N4004 1

LED VERDE
2.18 U 1 1
DIODO EMISOR DE LUZ 3mm COLOR 1
VERDE
LM7805
2.19 U 2 2
REGULADOR DE TENSIN MODELO 2
LM7805
LM7812
2.19 U 1 1
REGULADOR DE TENSIN MODELO 1
LM7812
OSCILADOR 4MHz
2.20 U 1 1
CRISTAL DE CUARZO DE 4MHz 1

OSCILADOR 12MHz
2.21 U 1 1
OSCILADOR XTAL 12MHz 1
RESISTENCIA 10K
2.22 U 1 1
RESISTENCIA DE 10K W 1
RESISTENCIA 1K
2.23 U 1 1
RESISTENCIA DE 1K W 1
RESISTENCIA 100
2.24 U 1 1
RESISTENCIA DE 100 W 1

80
DISEO DE UN GENERADOR DE RF EN BANDA L

RESISTENCIA SMD 100K


2.25 U 4 4
RESISTENCIA SMD 1206 DE 100K 4
W
RESISTENCIA SMD 12
2.26 U 7 7
RESISTENCIA SMD 1206 DE 12 W 7
RESISTENCIA SMD 18
2.27 U 3 3
RESISTENCIA SMD 1206 DE 18 W 3
RESISTENCIA SMD 56
2.28 U 1 1
RESISTENCIA SMD 1206 DE 56 W 1
RESISTENCIA SMD 5K6
2.29 U 1 1
RESISTENCIA SMD 1206 DE 5K6 W 1
RESISTENCIA SMD 10K
2.30 U 1 1
RESISTENCIA SMD 1206 DE 10K W 1
RESISTENCIA SMD 1K8
2.31 U 1 1
RESISTENCIA SMD 1206 DE 1K8 W 1
RESISTENCIA SMD 3K6
2.32 U 1 1
RESISTENCIA SMD 1206 DE 3K6 W 1
RESISTENCIA SMD 100
2.33 U 2 2
RESISTENCIA SMD 1206 DE 100 W 2
MICRO PULSADOR
2.34 U 1 1
MICRO PULSADOR 4 CONTACTOS 1

Captulo 3: Placas de Circuito Impreso.

N Ud Descripcin N Partes Subtotal TOTAL


CIRCUITO IMPRESO
3.1 U PLACA CIRCUITO IMPRESO DOBLE 1 1
1
CARA 50x100 mm
CIRCUITO IMPRESO
3.2 U 1 1
PLACA CIRCUITO IMPRESO UNA 1
CARA 80x90 mm
CIRCUITO IMPRESO
3.3 U 1 1
PLACA CIRCUITO IMPRESO DOBLE 1
CARA 30x40 mm

81
DISEO DE UN GENERADOR DE RF EN BANDA L

Captulo 4: Conectores y Cables.

N Ud Descripcin N Partes Subtotal TOTAL


CONECTOR DB9
4.1 U CONECTOR PARA PCB DB9 HEMBRA 1 1
1
ACODADO
CABLE CONECTOR DB9
4.2 U CABLE CONECTOR DB9 HEMBRA- 1 1
1
MACHO
CONECTOR ALIMENTACIN
4.3 U CONECTOR ALIMENTACIN 5 5
5
ATORNILLADO 2X1
CONECTOR SMA
4.4 U CONECTOR SMA PARA PCB 5 5
5
HEMBRA
CABLE SMA
4.5 U CABLE CONEXION SMA MACHO- 3 3
3
MACHO
CONECTOR 5x1 SMD
4.6 U CONECTOR 5x1 SMD TIPO REGLETA 1 1
1

CABLE ALIMENTACIN
4.7 U CABLE ALIMENTACIN 3 3
3
ROJO/NEGRO
CABLE PLANO
4.8 U CABLE PLANO BUS 5 HILOS 1 1
1

CABLE ADAPTADO DB25


4.9 U CABLE ADAPTADO DB25 A 5 HILOS 1 1
1

Captulo 5: Varios.

N Ud Descripcin N Partes Subtotal TOTAL


SOPORTE METACRILATO
5.1 U SOPORTE PARA PCBS DE 1 1
1
METACRILATO

82
DISEO DE UN GENERADOR DE RF EN BANDA L

4.2 Cuadro de precios

Captulo 1: Horas de diseo.

N Ud Descripcin Precio ( )
HORAS DE DISEO PROTOTIPO
1.1 H HORAS DE DISEO Y DESARROLLO 40 CUARENTA EUROS
DEL PROTOTIPO

Captulo 2: Componentes electrnicos.

N Ud Descripcin Precio ( )
MAX232

2.1 U C.I. MAX232 1,09


UN EURO CON NUEVE
TRANSMISIN/RECEPCIN DE CNTIMOS
SEALES TTL/232

UMA1021M
CUATRO EUROS CON
2.2 U C.I. UMA1021M SSOP20 4,40 CUARENTA CNTIMOS
SINTETIZADOR DE FRECUENCIAS
PIC 16F876A
NUEVE EUROS CON
2.3 U 9,7
MICROCONTROLADOR PIC 16F876A SETENTA CNTIMOS
DE 28 PINES
VCO POS2000
CUATRO EUROS CON 12
2.4 U VCO POS2000 CON UN RANGO DE 4,12 CNTIMOS
FRECUENCIAS DE 1370 A 2000 MHz
CONDENSADOR 1uf
2.5 U 0,13 TRECE CNTIMOS
CONDENSADOR ELETROLTCO 1uf
CONDENSADOR 100nf
2.6 U 0,12 DOCE CNTIMOS
CONDENSADOR CERMICO 100nf

CONDENSADOR 47uf
2.7 U 0,13 TRECE CNTIMOS
CONDENSADOR ELECTROLTCO
47uf
CONDENSADOR 4,7uf
2.8 U 0,13 TRECE CNTIMOS
CONDENSADOR ELECTROLTCO
4,7uf
CONDENSADOR 15pf
2.9 U 0,10 DIEZ CNTIMOS
CONDENSADOR CERMICO 15pf
CONDENSADOR SMD 100pf
2.10 U 0,10 DIEZ CNTIMOS
CONDENSADOR SMD 1206 100pf

83
DISEO DE UN GENERADOR DE RF EN BANDA L

CONDENSADOR SMD 100nf


2.11 U 0,12 DOCE CNTIMOS
CONDENSADOR SMD 1206 100nf

CONDENSADOR SMD 56pf


2.12 U 0,10 DIEZ CNTIMOS
CONDENSADOR SMD 1206 56pf
CONDENSADOR SMD 1nf
2.13 U 0,12 DOCE CNTIMOS
CONDENSADOR SMD 1206 1nf
CONDENSADOR SMD 33pf
2.14 U 0,10 DIEZ CNTIMOS
CONDENSADOR SMD 1206 33pf

CONDENSADOR SMD 3,7nf


2.15 U 0,12 DOCE CNTIMOS
CONDENSADOR SMD 1206 3,7nf

CONDENSADOR SMD 37nf


2.16 U 0,12 DOCE CNTIMOS
CONDENSADOR SMD 1206 37nf
DIODO
2.17 U 0,21 VEINTIN CNTIMOS
DIODO MODELO 1N4004
LED VERDE
2.18 U 0,11 ONCE CNTIMOS
DIODO EMISOR DE LUZ 3mm COLOR
VERDE
LM7805
CUARENTA Y TRES
2.19 U REGULADOR DE TENSIN MODELO 0,43 CNTIMOS
LM7805
LM7812
CINCUENTA Y DOS
2.19 U REGULADOR DE TENSIN MODELO 0,52 CNTIMOS
LM7812
OSCILADOR 4MHz
2.20 U 0,70 SETENTA CNTIMOS
CRISTAL DE CUARZO XT DE 4MHz

OSCILADOR 12MHz
OCHENTA Y CUATRO
2.21 U 0,84
OSCILADOR XTAL 12MHz CNTIMOS

RESISTENCIA 10K
2.22 U 0,10 DIEZ CNTIMOS
RESISTENCIA DE 10K W

RESISTENCIA 1K
2.23 U 0,10 DIEZ CNTIMOS
RESISTENCIA DE 1K W
RESISTENCIA 100
2.24 U 0,08 OCHO CNTIMOS
RESISTENCIA DE 100 W

RESISTENCIA SMD 100K


2.25 U 0,10 DIEZ CNTIMOS
RESISTENCIA SMD 1206 DE 100K
W
RESISTENCIA SMD 12
2.26 U RESISTENCIA SMD 1206 DE 12 W 0,08 OCHO CNTIMOS

84
DISEO DE UN GENERADOR DE RF EN BANDA L

RESISTENCIA SMD 18
2.27 U 0,08 OCHO CNTIMOS
RESISTENCIA SMD 1206 DE 18 W

RESISTENCIA SMD 56
2.28 U 0,08 OCHO CNTIMOS
RESISTENCIA SMD 1206 DE 56 W
RESISTENCIA SMD 5K6
2.29 U 0,10 DIEZ CNTIMOS
RESISTENCIA SMD 1206 DE 5K6 W

RESISTENCIA SMD 10K


2.30 U RESISTENCIA SMD 1206 DE 10K W 0,10 DIEZ CNTIMOS

RESISTENCIA SMD 1K8


2.31 U RESISTENCIA SMD 1206 DE 1K8 W 0,10 DIEZ CNTIMOS

RESISTENCIA SMD 3K6


2.32 U 0,10 DIEZ CNTIMOS
RESISTENCIA SMD 1206 DE 3K6 W

RESISTENCIA SMD 100


2.33 U 0,08 OCHO CNTIMOS
RESISTENCIA SMD 1206 DE 100 W

MICRO PULSADOR
OCHENTA Y SIETE
2.34 U 0,87 CNTIMOS
MICRO PULSADOR 4 CONTACTOS

Captulo 3: Placas de Circuito Impreso.

N Ud Descripcin Precio ( )
CIRCUITO IMPRESO
DOS EUROS CON
3.1 U PLACA CIRCUITO IMPRESO DOBLE 2,15 QUINCE CNTIMOS
CARA 50x100 mm
CIRCUITO IMPRESO
DOS EUROS CON
3.2 U PLACA CIRCUITO IMPRESO UNA 2,60 SESENTA CNTIMOS
CARA 80x90 mm

CIRCUITO IMPRESO
UN EURO CON
3.3 U PLACA CIRCUITO IMPRESO DOBLE 1,80 OCHENTA CENTIMOS
CARA 30x40 mm

85
DISEO DE UN GENERADOR DE RF EN BANDA L

Captulo 4: Conectores y Cables.

N Ud Descripcin Precio ( )
CONECTOR DB9
UN EURO CON ONCE
4.1 U CONECTOR PARA PCB DB9 HEMBRA 1,11 CNTIMOS
ACODADO

CABLE CONECTOR DB9


TRES EUROS CON
4.2 U CABLE CONECTOR DB9 HEMBRA- 3,15 QUINCE CNTIMOS
MACHO
CONECTOR ALIMENTACIN
CUARENTA Y CINCO
4.3 U CONECTOR ALIMENTACIN 0,45 CNTIMOS
ATORNILLADO 2X1
CONECTOR SMA
OCHENTA Y NUEVE
4.4 U CONECTOR SMA PARA PCB 0,89 CNTIMOS
HEMBRA
CABLE SMA
UN EURO CON
4.5 U CABLE CONEXION SMA MACHO- 1,98 NOVENTA Y OCHO
CNTIMOS
MACHO

CONECTOR 5x1 SMD VEINTICUATRO


4.6 U 0,24 CNTIMOS
CONECTOR 5x1 SMD TIPO REGLETA
CABLE ALIMENTACIN
NOVENTA Y SIETE
4.7 U CABLE ALIMENTACIN 0,97 CNTIMOS
ROJO/NEGRO 500mm

CABLE PLANO CINCUENTA Y CUATRO


4.8 U 0.54 CNTIMOS
CABLE PLANO BUS 5 HILOS 250mm
CABLE ADAPTADO DB25 TRES EUROS CON
4.9 U 3,40 CUARENTA CNTIMOS
CABLE ADAPTADO DB25 A 5 HILOS

Captulo 5: Varios.

N Ud Descripcin Precio ( )
SOPORTE METACRILATO
TRES EUROS CON
5.1 U SOPORTE PARA PCBS DE 3,21 VEINTIN CNTIMOS
METACRILATO

86
DISEO DE UN GENERADOR DE RF EN BANDA L

4.3 Aplicacin de precios

Captulo 1: Horas de diseo.

N Ud Descripcin Cantidad Precio () Total()


HORAS DE DISEO PROTOTIPO
1.1 H HORAS DE DISEO Y DESARROLLO 400 40 16000
DEL PROTOTIPO

TOTAL CAPTULO 1 16000

Captulo 2: Componentes electrnicos.

N Ud Descripcin Cantidad Precio () Total()


MAX232
2.1 U 1 1,09 1,09
C.I. MAX232 TRANSMISIN/RECEPCIN
DE SEALES TTL/232
UMA1021M
2.2 U 1 4,40 4,40
C.I. UMA1021M SSOP20 SINTETIZADOR
DE FRECUENCIAS
PIC 16F876A
2.3 U 1 9,7 9,7
MICROCONTROLADOR PIC 16F876A DE
28 PINES
VCO POS2000
2.4 U 1 4,12 4,12
VCO POS2000 CON UN RANGO DE
FRECUENCIAS DE 1370 A 2000 MHz
CONDENSADOR 1uf
2.5 U 4 0,13 0,52
CONDENSADOR ELETROLTCO 1uf

CONDENSADOR 100nf
2.6 U 4 0,12 0,48
CONDENSADOR CERMICO 100nf

CONDENSADOR 47uf
2.7 U 1 0,13 0,13
CONDENSADOR ELECTROLTCO 47uf

CONDENSADOR 4,7uf
2.8 U 1 0,13 0,13
CONDENSADOR ELECTROLTCO 4,7uf

CONDENSADOR 15pf
2.9 U 2 0,10 0,20
CONDENSADOR CERMICO 15pf

87
DISEO DE UN GENERADOR DE RF EN BANDA L

CONDENSADOR SMD 100pf


2.10 U 3 0,10 0,30
CONDENSADOR SMD 1206 100pf

CONDENSADOR SMD 100nf


2.11 U 7 0,12 0,84
CONDENSADOR SMD 1206 100nf

CONDENSADOR SMD 56pf


2.12 U 2 0,10 0,20
CONDENSADOR SMD 1206 56pf

CONDENSADOR SMD 1nf


2.13 U 4 0,12 0,48
CONDENSADOR SMD 1206 1nf

CONDENSADOR SMD 33pf


2.14 U 3 0,10 0,30
CONDENSADOR SMD 1206 33pf

CONDENSADOR SMD 3,7nf


2.15 U 1 0,12 0,12
CONDENSADOR SMD 1206 3,7nf

CONDENSADOR SMD 37nf


2.16 U 1 0,12 0,12
CONDENSADOR SMD 1206 37nf

DIODO
2.17 U 1 0,21 0,21
DIODO MODELO 1N4004

LED VERDE
2.18 U 1 0,11 0,11
DIODO EMISOR DE LUZ 3mm COLOR
VERDE
LM7805
2.19 U 2 0,43 0,86
REGULADOR DE TENSIN MODELO
LM7805
LM7812
2.19 U 1 0,52 0,52
REGULADOR DE TENSIN MODELO
LM7812
OSCILADOR 4MHz
2.20 U 1 0,70 0,70
CRISTAL DE CUARZO DE 4MHz

OSCILADOR 12MHz
2.21 U 1 0,84 0,84
OSCILADOR XTAL 12MHz

RESISTENCIA 10K
2.22 U 1 0,10 0,10
RESISTENCIA DE 10K W

RESISTENCIA 1K
2.23 U 1 0,10 0,10
RESISTENCIA DE 1K W

RESISTENCIA 100
2.24 U 1 0,08 0,08
RESISTENCIA DE 100 W

88
DISEO DE UN GENERADOR DE RF EN BANDA L

RESISTENCIA SMD 100K


2.25 U 4 0,10 0,40
RESISTENCIA SMD 1206 DE 100K W

RESISTENCIA SMD 12
2.26 U 7 0,08 0,56
RESISTENCIA SMD 1206 DE 12 W

RESISTENCIA SMD 18
2.27 U 3 0,08 0,24
RESISTENCIA SMD 1206 DE 18 W

RESISTENCIA SMD 56
2.28 U 1 0,08 0,08
RESISTENCIA SMD 1206 DE 56 W

RESISTENCIA SMD 5K6


2.29 U 1 0,10 0,10
RESISTENCIA SMD 1206 DE 5K6 W

RESISTENCIA SMD 10K


2.30 U 1 0,10 0,10
RESISTENCIA SMD 1206 DE 10K W

RESISTENCIA SMD 1K8


2.31 U 1 0,10 0,10
RESISTENCIA SMD 1206 DE 1K8 W

RESISTENCIA SMD 3K6


2.32 U 1 0,10 0,10
RESISTENCIA SMD 1206 DE 3K6 W

RESISTENCIA SMD 100


2.33 U 2 0,08 0,16
RESISTENCIA SMD 1206 DE 100 W

MICRO PULSADOR
2.34 U 1 0,87 0,87
MICRO PULSADOR 4 CONTACTOS

TOTAL CAPTULO 2 29,36

89
DISEO DE UN GENERADOR DE RF EN BANDA L

Captulo 3: Placas de Circuito Impreso.

N Ud Descripcin Cantidad Precio () Total()


CIRCUITO IMPRESO
3.1 U PLACA CIRCUITO IMPRESO DOBLE 1 2,15 2,15
CARA 50x100 mm
CIRCUITO IMPRESO
3.2 U PLACA CIRCUITO IMPRESO UNA CARA 1 2,60 2,60
80x90 mm
CIRCUITO IMPRESO
3.3 U PLACA CIRCUITO IMPRESO DOBLE 1 1,80
CARA 30x40 mm 1,80

TOTAL CAPTULO 3 6,55

Captulo 4: Conectores y Cables.

N Ud Descripcin Cantidad Precio () Total()


CONECTOR DB9
4.1 U CONECTOR PARA PCB DB9 HEMBRA 1 1,11 1,11
ACODADO
CABLE CONECTOR DB9
4.2 U CABLE CONECTOR DB9 HEMBRA- 1 3,15 3,15
MACHO
CONECTOR ALIMENTACIN
4.3 U CONECTOR ALIMENTACIN 5 0,45 2,25
ATORNILLADO 2X1
CONECTOR SMA
4.4 U CONECTOR SMA PARA PCB HEMBRA 5 0,89 4,45

CABLE SMA
4.5 U CABLE CONEXION SMA MACHO- 3 1,98 5,94
MACHO
CONECTOR 5x1 SMD
4.6 U CONECTOR 5x1 SMD TIPO REGLETA 1 0,24 0,24

CABLE ALIMENTACIN
4.7 U CABLE ALIMENTACIN ROJO/NEGRO 3 0,97 2,91

90
DISEO DE UN GENERADOR DE RF EN BANDA L

CABLE PLANO
4.8 U CABLE PLANO BUS 5 HILOS 1 0,54 0,54

CABLE ADAPTADO DB25


4.9 U CABLE ADAPTADO DB25 A 5 HILOS 1 3,40 3,40

TOTAL CAPTULO 4 23,99

Captulo 5: Varios.

N Ud Descripcin Cantidad Precio () Total()


SOPORTE METACRILATO
5.1 U SOPORTE PARA PCBS DE 1 3,21 3,21
METACRILATO

TOTAL CAPTULO 5 3,21

91
DISEO DE UN GENERADOR DE RF EN BANDA L

4.4 Resumen del presupuesto del prototipo

Para desarrollar este proyecto se han utilizado los siguientes elementos:

Osciloscopio digital.
Espectmetro.
Grabador depurador de PICs ICD.
PC.
Software de generacin y depuracin del cdigo del Micro, MPLAB.
Software de generacin y depuracin del cdigo del programa UMA, Borland
Builder C++.
Software para el diseo de los circuitos, Orcad.
Soldador.
Taladro.

La escuela ya dispona de estos elementos, por lo que no se ha tenido que hacer


ningn tipo de inversin especfica en los mismos.

Finalmente, el presupuesto es:

Total captulo 1 16000,00


Total captulo 2 29,36
Total captulo 3 6,55
Total captulo 4 23,99
Total captulo 5 3,21

TOTAL 16063,11

DIECISIS MIL SESENTA Y TRES EUROS CON ONCE CNTIMOS

Tarragona, 28 de Julio de 2006

Firmado por: Jose A. Garca-Uceda Calvo


Ingeniero Tcnico Industrial
92
DISEO DE UN GENERADOR DE RF EN BANDA L

BIBLIOGRAFA

93
DISEO DE UN GENERADOR DE RF EN BANDA L

5 Bibliografa

5.1 Libros y Manuales consultados

[1] UMA1021M DataSheet. Low-voltage frequency synthesizer for radio telephones. Philips
Semiconductors. 1999.

[2] PIC16F87x DataSheet. Microchip. 2002.

[3] M Auxilio Recasens Bellver, Jos Gonzlez Calabuig. Diseo de Circuitos Impresos con OrCad
Capture y Layout v.9.2. Ed: Thomson. ISBN: 84-9732-071-9.

[4] ngulo Usategui, J. M. Angulo Martnez, I. Romero Yesa, S. Microcontroladores Pic. Diseo
Prctico de Aplicaciones. Segunda Parte: Pic 16F87X. Ed: Mc Graw-Hill, 2000. ISBN: 84-841-
2858-3.

[5] Esteban del Castillo.Apuntes de Informtica Industrial II. Departament dEnginyeria Electrnica
Elctrica i Automtica. 2003-2004.

[6] Marcos Fandez Zanvy. Circuitos electrnicos para sistemas de comunicaciones. Ed: CEYSA .

[7] Keliu Shu, Edgar Snchez-Sinencio. CMOS PLL Synthesizers Anlisis and Design. Ed: Springer.

[8] Venceslao F.Kroupa.Phase Lock Loops And Frequency Synthesis. Ed: WILEY.

[9] Antonio Ramn Lzaro.Apuntes de Laboratorio de Comunicaciones, Phase lock Loop (Tema 6).

94
DISEO DE UN GENERADOR DE RF EN BANDA L

5.2 Pginas Web consultadas.

[1] http://www.microchip.com [Software de simulacin y depuracin de cdigo ensamblamdor para


PICs (MPLAB), Data Sheet 16F87x].

[2] http://www.amidata.es [Rs online es una pgina web dedicada a la venta de componentes
electrnicos y elctricos de entre sus productos mas destacados].

[3] http://www.programacionfacil.com [Web que se dedica a divulgar diferentes lenguajes de


programacin y muestra las funciones y objetos mas elementales de cada lenguaje].

[4] http://www.functionx.com [Web que dedica todos sus recursos al lenguaje de programacion C++ en
diferentes plataformas].

[5] http://server-die.alc.upv.es/asignaturas/LSED [Web corporativa de la asignatura sistemas eletrnicos


digitales de la universidad politcnica de Alcoi].

[6] http://picmania.garcia-cuervo.com [Web muy ilustrativa para el desarrollo de circuitos con


microcontroladores Pic. Basa todo su potencial en el desarrollo de software para estos
microcontroladores mediante el compilador de C, CCS].

95
DISEO DE UN GENERADOR DE RF EN BANDA L

ANEXOS

96
DISEO DE UN GENERADOR DE RF EN BANDA L

6 Anexos

6.1 Manual de usuario

El software de gestin UMA v1.0 est diseado en una plataforma visual. El objeto
de este entorno visual se debe a una mejora en la compresin del programa por parte del
usuario.
Aunque a simple vista no presenta ningn tipo de dificultad y resulta muy intuitivo,
se dar una explicacin de las partes que componen este programa.

Figura 32. Programa UMA v1.0.

Seleccin del Puerto de comunicacin

A la hora de programar el sintetizador tenemos dos posibles opciones, una


es programarlo directamente desde el puerto paralelo y la segunda opcin es utilizar
el puerto serie (com) y decirle a un Microcontrolador que sea l quien se encargue
de la programacin del sintetizador.
Dicho esto, se deja clara la utilidad de la eleccin de cada puerto.
Cabe decir que si no elegimos ninguno de los puertos, el programa no har
nada por muchos valores que le introduzcamos.

97
DISEO DE UN GENERADOR DE RF EN BANDA L

Para elegir una programacin serie debemos seleccionar la opcin com y


seguidamente hacer un click en el botn Abrir.
Si por lo contrario queremos una programacin va puerto paralelo
seleccionaremos la opcin Puerto Paralelo.

Figura 33. Eleccin del puerto de comunicacin.

Seleccin de Frecuencias

Una vez elegida la va de programacin debemos entrar los parmetros al


programa. Este apartado hace referencia al tipo de frecuencias que hemos de
introducirle al sistema.
En el primer recuadro debemos introducir la frecuencia de referencia con la
que vamos a trabajar(en MHz).

Figura 34. Frecuencia de Referencia.

En el segundo recuadro introduciremos la frecuencia de entrada RFI (MHz).

98
DISEO DE UN GENERADOR DE RF EN BANDA L

En el tercer y ltimo recuadro introduciremos la frecuencia de comparacin


del sintetizador, tambin en MHz.
Una vez seleccionadas las frecuencias las gravaremos haciendo click en el
botn con forma de disco de 3 .

Barrido del Ancho de Banda

En el caso de querer visionar todo el ancho de banda en el espectmetro


nicamente tenemos que seleccionar el recuadro Rango Frecuencial.

Figura 35. Eleccin Barrido del BW.

Seleccionando el Rango Frecuencial nos aparece la siguiente ventana en la


que nos pide la frecuencia inicial, final, pasos y el tiempo de paso. En el caso que
quisieramos ver como salta de frecuencia en frecuencia por todo el ancho de banda
del filtro, seleccionaramos esta opcin.

Figura 36. Parmetros para barrido BW.

Configuracin de la Palabra de Control

Por ltimo, slo nos queda, antes de llegar a programar el sintetizador


seleccionar nuestra palabra de control.
Dentro del cuadro de dilogo del Registro de control, seleccionaremos o no,
dependiendo de nuestros intereses.
Una vez elegida la configuracin que nos interesa gravaremos la palabra
dndole al botn con el icono en forma de disket.

99
DISEO DE UN GENERADOR DE RF EN BANDA L

Figura 37. Registro de Control.

Una vez seleccionadas y configuradas las posibles opciones, slo nos queda
programar el sintetizador. Para dar la orden de programacin nicamente se ha de hacer un
click en el siguiente botn:

Figura 38. Bnton de programacin.

100
DISEO DE UN GENERADOR DE RF EN BANDA L

GLOSARIO

Cuadro de dialogo Puerto paralelo, si se selecciona sirve para realizar una


comunicacin directa PC-Sintetizador.
Cuadro dialogo Puerto serie (Com), si se selecciona sirve para realizar una
comunicacin Pc-Microcontrolador-Sintetizador.
Botn Abrir, abre el Puerto serie para que podamos escribir en l.
Botn Cerrar, cierra el Puerto serie. Despus de cerrarlo no podremos escribir en
l.
Verificar tramas, verifica los bits enviados a travs del puerto serie haciendo un
eco al micro.
Frecuencia de Referencia, es la frecuencia del cristal de cuarzo que vamos a
utilizar.
Frecuencia RFI, es la frecuencia que queremos sintetizar.
Frecuencia de comparacin, es la frecuencia a la que va a trabajar el sintetizador.
Out of Lock, detecta si el pll est enganchado siempre y cuando lo hallamos
seleccionado.
Power Down, sirve para activar o no el sintetizador por software, siempre y cuando
por hardware tambin est activo.
Charge Pump, sirve para seleccionar el ancho del pulso de la seal de error.
Dependiendo de nuestros intereses elegiremos una de las cuatro posibles opciones.
Barrido del BW, si seleccionamos esta opcin podemos hacer un barrido
automtico del ancho de banda.

101
DISEO DE UN GENERADOR DE RF EN BANDA L

6.2 Cdigo fuente para el PIC16F876A

//---------------------------------------------------------------------//
// Proyecto Final de Carrera - Generador Rf en Banda L.
// Programacin del sintetizador de frecuencias UMA1021M
// Cdigo fuente del programa residente en el microcontrolador
// Autor: Jose A. Garca-Uceda Calvo
//---------------------------------------------------------------------//

#include <16f876a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include <stdlib.h>
#include <string.h>

//---------------------------------------------------------------------//
// Constantes, definiciones y variables
//---------------------------------------------------------------------//

int const MAXLENBUFF=22;

char buffrec[MAXLENBUFF];
char tramaA[MAXLENBUFF];
char tramaB[MAXLENBUFF];
char tramaC[MAXLENBUFF];

unsigned int xbuffrec=0x00,j,cont;


unsigned int flaga=0,flagb=0,flagr=0,flagl=0;
unsigned int flagc=0,flagd=0,flage=0,flagg=0;
char cc;

//---------------------------------------------------------------------//
// Declaracin de Funciones
//---------------------------------------------------------------------//

void On_reset(void);
void Ini_buffrec(void);

102
DISEO DE UN GENERADOR DE RF EN BANDA L

void Add_buffrec(char c);


void latch (char *data);

//---------------------------------------------------------------------//
// Interrupcin RDA - Recepcin USART -
//---------------------------------------------------------------------//

#int_rda
void serial_isr()
{

if(kbhit())
{
cc=0x00;
cc=getc();
if((cc!='a')&&(cc!='b')&&(cc!='c')&&(cc!='d')&&(cc!='e'))
{ Add_buffrec(cc);}
if(cc=='a'){flaga=1;}
if(cc=='b'){flagb=1;}
if(cc=='c'){flagc=1;}
if(cc=='d'){flagd=1;}
if(cc=='e'){flage=1;}
if(cc=='g'){flagg=1;}
}
}

//---------------------------------------------------------------------//
//Rutinas de programacin del sintetizador
//---------------------------------------------------------------------//
//---------------------------------------------------------------------//
// Esta funcin hace los pasos para meter los datos en el registro del
// sintetizador del chip, en su direccin addr y con datos data
//---------------------------------------------------------------------//
void latch (char *data)
{
int i;
output_high(PIN_B7); // CLK
output_low(PIN_B5); // ENOT
// Introduccion de # y @

103
DISEO DE UN GENERADOR DE RF EN BANDA L

for (i=0;i<21;i++)
{
if (data[i]=='1')
{
output_high(PIN_B6); // DATA
}
if (data[i]=='0')
{
output_low(PIN_B6);
}
output_low(PIN_B7); // CLK
output_high(PIN_B7); // CLK
}

output_high(PIN_B5); // ENOT
}

//---------------------------------------------------------------------//
// Inicializacin del buffer de Recepcin y las Tramas
//---------------------------------------------------------------------//
void Ini_buff_rec(void)
{
int i;
for(i=0;i<MAXLENBUFF;i++)
{
buffrec[i]=0x00;
}
if(flagr==1)
{
for(i=0;i<MAXLENBUFF;i++)
{
tramaA[i]=0x00;
tramaB[i]=0x00;
tramaC[i]=0x00;
}
flagr=0;
}
xbuffrec=0x00;
}

104
DISEO DE UN GENERADOR DE RF EN BANDA L

//---------------------------------------------------------------------//
// Acumula los datos de informacin que entran por la USART
//---------------------------------------------------------------------//

void Add_buffrec(char c)
{
buffrec[xbuffrec++]=c;
}

//---------------------------------------------------------------------//
// Inicializacin tras Reset del Micro
//---------------------------------------------------------------------//

void On_reset(void)
{
flagr=1;
output_low(PIN_B7);
output_low(PIN_B6);
output_high(PIN_B5);
disable_interrupts(GLOBAL);
delay_ms(100);
Ini_buff_rec();
enable_interrupts(int_rda);
enable_interrupts(global);
}

//---------------------------------------------------------------------//
// Funcin principal Main
//---------------------------------------------------------------------//

main()
{
On_reset();
do {

if(flaga==1)
{
strcpy(tramaA,buffrec);
Ini_buff_rec();

105
DISEO DE UN GENERADOR DE RF EN BANDA L

flaga=0;
}
if(flagb==1)
{
strcpy(tramaB,buffrec);
Ini_buff_rec();
flagb=0;
}
if(flagc==1)
{
strcpy(tramaC,buffrec);
Ini_buff_rec();
flagc=0;
}
if(flagd==1)
{
//Verificar las tramas enviadas envio hacia el PC de las 3 tramas
for(j=0;j<21;j++){
putc(tramaA[j]);}
putc(cc='a');
delay_ms(10);
for(j=0;j<21;j++){
putc(tramaB[j]);}
putc(cc='b');
delay_ms(10);
for(j=0;j<21;j++){
putc(tramaC[j]);}
putc(cc='c');
flagd=0;
}
if(flage==1)
{
cont=0;
latch(tramaA);
latch(tramaB);
latch(tramaC);
putc(cc='f');
On_reset();
flage=0;

106
DISEO DE UN GENERADOR DE RF EN BANDA L

flagl=1;
}
if(flagg==1)
{
putc(cc='g');
On_reset();
flagg=0;
}
if((input(PIN_B4)==0)&&(flagl==1))
{
putc(cc='l');
flagl=0;
On_reset();
}

}while(True);
return(0);
}

107
DISEO DE UN GENERADOR DE RF EN BANDA L

6.3 Cdigo fuente del programa UMA v1.0

//---------------------------------------------------------------------//
// Proyecto Final de Carrera - Generador Rf en Banda L.
// Software Para la programacin del sintetizador de frecuencias UMA1021M
// A travs del puerto paralelo o puerto serie
// Autor: Jose A. Garca-Uceda Calvo
//---------------------------------------------------------------------//
#include <vcl.h>
#include <windows.h>
#include <mmsystem.h>
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#pragma hdrstop
//---------------------------------------------------------------------//
#include "Unit1.h"
#include "io.h"
//---------------------------------------------------------------------//
#pragma resource "*.dfm"
//---------------------------------------------------------------------//
#define LPT1o 0x378
#define LPT1i 0x378
//---------------------------------------------------------------------//
TForm1 *Form1;
//---------------------------------------------------------------------//
HANDLE hcomPort = NULL;
//---------------------------------------------------------------------//
int data [17],resultado=0,flagp=0,flagm=0;
int addr[3],ii,flag=0,flagError=0,flagd=0;
int x=0,ccc=0,ccb=0,flagA=0,flagL=1;
//---------------------------------------------------------------------//
struct uma
{
int tmp,puerto,e;
unsigned long mdr,rdr;
double xtal,rf,fc,clk;
unsigned int ool,pd,cp,cr0,cr1,cont;

108
DISEO DE UN GENERADOR DE RF EN BANDA L

const char* a;
};
struct uma ctr;
//---------------------------------------------------------------------//
void clockup(void); // Genera la seal de clk a nivel alto
void clockd(void); // Genera la seal de clk a nivel bajo
void endown(void); // Genera la seal de habilitacin
void enup(void); // Genera la seal de inhabilitacin
int db(int decimal); // Convierte un numero entero en binario
void latch (int *addr, int *data); // Aplica las funciones anteriores
para programar el
// sintetizador
//---------------------------------------------------------------------//
AnsiString Cola;
//---------------------------------------------------------------------//
typedef void (WINAPI *PORTOUT) (short int Port, char Data);
typedef char (WINAPI *PORTIN) (short int Port);
//---------------------------------------------------------------------//
extern PORTOUT PortOut;
extern PORTIN PortIn;
extern int LoadIODLL();
//---------------------------------------------------------------------//
PORTOUT PortOut;
PORTIN PortIn;
//---------------------------------------------------------------------//
HMODULE hio;

//---------------------------------------------------------------------//
// Funcin que libera el archivo DLL cargado
//---------------------------------------------------------------------//
void UnloadIODLL()
{
FreeLibrary(hio);
}
//---------------------------------------------------------------------//
// Funcin que carga el archivo DLL a utilizar
//---------------------------------------------------------------------//
int LoadIODLL()
{
hio = LoadLibrary("io");

109
DISEO DE UN GENERADOR DE RF EN BANDA L

if (hio == NULL) return 1;


PortOut = (PORTOUT)GetProcAddress(hio, "PortOut");
PortIn = (PORTIN)GetProcAddress(hio, "PortIn");
atexit(UnloadIODLL);
return 0;
}
//---------------------------------------------------------------------//
// Funcin que genera la seal de nivel alto del clk
//---------------------------------------------------------------------//
void clockup()
{
int x,i;
x=PortIn(LPT1i);
x=x|1;
PortOut(LPT1o,x);
}
//---------------------------------------------------------------------//
// Funcin que genera la seal de nivel bajo del clk
//---------------------------------------------------------------------//
void clockd()
{
int x;
x=PortIn(LPT1i);
x=x&254;
PortOut(LPT1o,x);
}
//---------------------------------------------------------------------//
// Funcin que genera la seal de habilitacin del sintetizador
//---------------------------------------------------------------------//
void endown()
{
int x;
x=PortIn(LPT1i);
x=x&251;
PortOut(LPT1o,x);
}

110
DISEO DE UN GENERADOR DE RF EN BANDA L

//---------------------------------------------------------------------//
// Funcin que genera la seal de inhabilitacin del sintetizador
//---------------------------------------------------------------------//
void enup()
{
int x;
x=PortIn(LPT1i);
x=x|4;
PortOut(LPT1o,x);
}
//---------------------------------------------------------------------//
// Funcin que convierte un entero en una secuencia binaria
//---------------------------------------------------------------------//
db(int decimal)
{
int dummy=decimal,i=0;
while (i<17)
{
data[i]= fmod(dummy,2);
dummy = dummy/2;
i++;
}
return (0);
}
//---------------------------------------------------------------------//
// Funcin que programa el sintetizador utilizando el puerto paralelo
//---------------------------------------------------------------------//
void latch (int *addr, int *data)
{
int x,i;
clockup();
endown();
ctr.cont=0;
/* Introduciendo los datos */
for (i=16;i>=0;i--)
{
x=PortIn(LPT1i);
if (data[i]==1){ x=x|2;}
if (data[i]==0){ x=x&253;}

111
DISEO DE UN GENERADOR DE RF EN BANDA L

PortOut(LPT1o,x);
clockd();
x=PortIn(LPT1i);
clockup();
ctr.cont=ctr.cont+1;
}
/* Metemos la direccin */
for (i=3;i>=0;i--)
{
x=PortIn(LPT1i);
if (addr[i]==1){ x=x|2;}
if (addr[i]==0){x=x&253;}
PortOut(LPT1o,x);
clockd();
x=PortIn(LPT1i);
clockup();
ctr.cont=ctr.cont+1;
}
enup();
}
//---------------------------------------------------------------------//
// Funcin de Borland, cargamos DLL y ocultamos barra
//---------------------------------------------------------------------//
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
LoadIODLL();
ProgressBar1->Visible=False;
}
//---------------------------------------------------------------------//
// Funcin de Borland, editamos la ventana de trabajo: color, bmps,
//---------------------------------------------------------------------//
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Image1->Picture->LoadFromFile("urv.bmp");
Image2->Picture->LoadFromFile("pll.bmp");
Memo1->Color = clMenu;
Edit1->Color = clMenu;
Edit2->Color = clMenu;

112
DISEO DE UN GENERADOR DE RF EN BANDA L

Edit3->Color = clMenu;
Memo2->Color = clLime;
}
//---------------------------------------------------------------------//
// Funcin de Borland para la adquisicin de datos, prohbe la escritura
// de cualquier carcter que no sea un entero
//---------------------------------------------------------------------//
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(Key==8)return;
if ((Key < '0') || (Key > '9'))
{
Key='\0';
}
}
//---------------------------------------------------------------------//
// Funcin de Borland que deshabilita la escritura en el puerto serie
//---------------------------------------------------------------------//
void __fastcall TForm1::Button5Click(TObject *Sender)
{
if((RadioButton6->Checked==true)&&(flagA==1))
{
if(hcomPort!=INVALID_HANDLE_VALUE)
{
CloseHandle(hcomPort);
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Puerto Desabilitado >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(1000);
Memo1->Lines->Clear();
}
flagA=0;
}
}

113
DISEO DE UN GENERADOR DE RF EN BANDA L

//---------------------------------------------------------------------//
// Funcin de Borland que hace posible escribir en el puerto serie como
// si fuera un fichero
//---------------------------------------------------------------------//
void __fastcall TForm1::OpenClick(TObject *Sender)
{

if((RadioButton6->Checked==true)&&(flagA==0))
{

hcomPort=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);

if( hcomPort==INVALID_HANDLE_VALUE)
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < No se puede abrir el puerto COM >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(1000);
Memo1->Clear();
}
else
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Puerto Abilitado >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(1000);
Memo1->Clear();
}

GetCommState(hcomPort, &sComCfg);

114
DISEO DE UN GENERADOR DE RF EN BANDA L

sComCfg.BaudRate=CBR_9600;
sComCfg.ByteSize=8;
sComCfg.Parity=NOPARITY;
sComCfg.StopBits=ONESTOPBIT;
sComCfg.fRtsControl=RTS_CONTROL_ENABLE;
sComCfg.fDtrControl=DTR_CONTROL_ENABLE;

SetCommState(hcomPort, &sComCfg);

sTimOut.ReadIntervalTimeout=MAXDWORD;
sTimOut.ReadTotalTimeoutMultiplier=0;
sTimOut.ReadTotalTimeoutConstant=0;
sTimOut.WriteTotalTimeoutMultiplier=0;
sTimOut.WriteTotalTimeoutConstant=0;
sTimOut.WriteTotalTimeoutConstant=0;

SetCommTimeouts(hcomPort, &sTimOut);
flagA=1;
}
}
//---------------------------------------------------------------------//
// Funcin de Borland que carga las frecuencias introducidas por el
// usuario y nos comunica si los valores se ajustan al rango de trabajo
// del sintetizador
//---------------------------------------------------------------------//
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
int a=0,b=0,c=0;
ctr.tmp=0;
Memo1->Clear();
Memo1->Lines->Add("");

if(Edit1->Text=="" || Edit1->Text=="0")
{
ctr.xtal=13;
Memo1->Lines->Add("->F.R programada a "+String(ctr.xtal)+String("
MHz"));
}

115
DISEO DE UN GENERADOR DE RF EN BANDA L

else
{
ctr.xtal=Edit1->Text.ToDouble();
Memo1->Lines->Add(" ->F.R programada a " +String(ctr.xtal) +String("
MHz"));
}
if(Edit2->Text=="" || Edit2->Text=="0")
{
ctr.rf=902;
Memo1->Lines->Add(" ->F.E programada a " +String(ctr.rf) +String("
MHz"));
}
else
{
ctr.rf=Edit2->Text.ToDouble();
Memo1->Lines->Add(" ->F.E programada a " +String(ctr.rf) +String("
MHz"));
}
if(Edit3->Text=="" || Edit3->Text=="0")
{
ctr.fc=0.2;
Memo1->Lines->Add(" ->F.C programada a " +String(ctr.fc) +String("
MHz"));
}
else
{
ctr.fc=Edit3->Text.ToDouble();
Memo1->Lines->Add(" ->F.C programada a " +String(ctr.fc) +String("
MHz"));
}

Sleep(3000);
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" ...Comprobando valores...");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

116
DISEO DE UN GENERADOR DE RF EN BANDA L

Sleep(1000);
Memo1->Clear();

ctr.mdr= ctr.rf/ctr.fc+1;

if ((ctr.mdr>131071) || (ctr.mdr<512))
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" ->Main Divider fuera de rango");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(1000);
Memo1->Clear();
a=0;
}
else {a=1;}

ctr.rdr=ctr.xtal/ctr.fc+1;

if ((ctr.rdr>2047) || (ctr.rdr<8))
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" ->Reference Divider fuera de rango");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(1000);
Memo1->Clear();
b=0;
}
else {b=1;}

if ((ctr.clk>100) || (ctr.clk<0))
{
Memo1->Clear();
Memo1->Lines->Add("");

117
DISEO DE UN GENERADOR DE RF EN BANDA L

Memo1->Lines->Add("");
Memo1->Lines->Add(" ->Clk fuera de rango");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(1000);
Memo1->Clear();
c=0;
}
else {c=1;}

if (a&&b&&c)
{
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Frecuencias Correctas >");
Memo1->Lines->Add("");
Memo1->Lines->Add(" ->Main Divider a " +String(ctr.mdr));
Memo1->Lines->Add(" ->Reference Divider a " +String(ctr.rdr));
ctr.tmp=1;
}
}

//---------------------------------------------------------------------//
// Funcin de Borland que nos permite grabar toda informacin en el
// sintetizador. Es la funcin mas importante
//---------------------------------------------------------------------//
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
int j;
charA="a";

if((RadioButton5->Checked==true))
{
if(ctr.tmp)
{
ProgressBar1->Min=0;
ProgressBar1->Max=120;
ProgressBar1->Position=0;

118
DISEO DE UN GENERADOR DE RF EN BANDA L

ProgressBar1->Visible=True;

Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < ...en programacin >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

/* Utilizo el d0 para el CLK, el d1 para el DATA y el d2 para ENOT*/

/* Mandamos el primer dato al registro de direccion 4h */

db(ctr.mdr);
addr[0]=0; addr[1]=0; addr[2]=1; addr[3]=0;
latch (addr,data);
ProgressBar1->StepBy(ctr.cont*2);

/* Mandamos el segundo dato al registro de direccin 5h*/

/*Aunque el Reference Divider slo tiene 11 bits*/

db(ctr.rdr);
addr[0]=1; addr[1]=0; addr[2]=1; addr[3]=0;
latch (addr,data);
ProgressBar1->StepBy(ctr.cont*2);

/* Aqui hay que programar el registro 1h */

for (j=0;j<17;j++){data[j]=0;}
data[6]=ctr.pd;
data[9]=ctr.cr0;
data[10]=ctr.cr1;
data[12]=ctr.ool;
addr[0]=1; addr[1]=0; addr[2]=0; addr[3]=0;
latch (addr, data);

ProgressBar1->StepBy(ctr.cont*2);

119
DISEO DE UN GENERADOR DE RF EN BANDA L

Sleep(500);
ProgressBar1->Position=0;
ProgressBar1->Visible=False;

Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Dispositivo programado >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(1500);
Memo1->Clear();
}

ctr.tmp=0;
}

//Programacion Por el Puerto Serie

if((RadioButton6->Checked==true))
{

if(ctr.tmp)
{

//Envio eco al Micro

WriteFile(hcomPort, "g", 1, &dwBytWri, 0);


for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
}

//Esta el micro conectado??

ccc=0;

120
DISEO DE UN GENERADOR DE RF EN BANDA L

do{
Sleep(100);
ReadFile(hcomPort, acBuf, 1, &dwBytRea, 0);
if(acBuf[0]=='g')
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Micro Conectado >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
}
flagm=1;
ccc=6;
}
ccc++;
}while(ccc<6);

if(flagm==0)
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Micro NO Conectado >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(2000);
Memo1->Clear();
}

if(flagm==1)
{

Sleep(1000);

121
DISEO DE UN GENERADOR DE RF EN BANDA L

Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Enviando Consignas...>");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

//Aqui va la primera trama....Es el Main divider.......

for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
tramaA[ii]=0x00;
tramaB[ii]=0x00;
tramaC[ii]=0x00;
}

db(ctr.mdr); //Conversion a Bits


for(j=0;j<17;j++)
{
if(data[j]==1)
{
tramaA[j]='1';
}
if(data[j]==0)
{
tramaA[j]='0';
}
}
strrev(tramaA);
tramaA[17]='0'; tramaA[18]='1'; tramaA[19]='0'; tramaA[20]='0';
charA="a";
strcat(tramaA,charA);
dwlen=strlen(tramaA);
WriteFile(hcomPort, tramaA, dwlen, &dwBytWri, 0);

//Aqui va la segunda trama....Es el Reference divider.......

122
DISEO DE UN GENERADOR DE RF EN BANDA L

db(ctr.rdr);
for(j=0;j<17;j++)
{
if(data[j]==1)
{
tramaB[j]='1';
}
if(data[j]==0)
{
tramaB[j]='0';
}
}
strrev(tramaB);
tramaB[17]='0'; tramaB[18]='1'; tramaB[19]='0'; tramaB[20]='1';
charA="b";
strcat(tramaB,charA);
dwlen=strlen(tramaB);
WriteFile(hcomPort, tramaB, dwlen, &dwBytWri, 0);

//Aqui va la tercera trama....Es el charge pump, sPON y OOL.......

for (j=0;j<17;j++)
{
data[j]=0;
}

data[6]=ctr.pd;
data[9]=ctr.cr0;
data[10]=ctr.cr1;
data[12]=ctr.ool;

for(j=0;j<17;j++)
{
if(data[j]==1)
{
tramaC[j]='1';
}
if(data[j]==0)

123
DISEO DE UN GENERADOR DE RF EN BANDA L

{
tramaC[j]='0';
}
}
strrev(tramaC);
tramaC[17]='0'; tramaC[18]='0'; tramaC[19]='0'; tramaC[20]='1';
charA="c";
strcat(tramaC,charA);
dwlen=strlen(tramaC);
WriteFile(hcomPort, tramaC, dwlen, &dwBytWri, 0);

//Verificacion de las Tramas Enviadas

if(CheckBox4->Checked==true)
{
Sleep(1000);
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Verificando...>");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

WriteFile(hcomPort, "d", 1, &dwBytWri, 0);


do{
Sleep(100);
ReadFile(hcomPort, acBuf, dwlen, &dwBytRea, 0);
if(acBuf[21]=='a')
{
for(ii=0;ii<22;ii++)
{
if(tramaA[ii]!=acBuf[ii])
{
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < -ERROR- TramaA incorrecta >");

124
DISEO DE UN GENERADOR DE RF EN BANDA L

Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(2000);
flagError=1;
}
}
flag=1;
}
}while(flag==0);

for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
}

flag=0;

do{
ReadFile(hcomPort, acBuf, dwlen, &dwBytRea, 0);
if(acBuf[21]=='b')
{
for(ii=0;ii<22;ii++)
{
if(tramaB[ii]!=acBuf[ii])
{
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < -ERROR- TramaB incorrecta >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(2000);
flagError=1;
}
}
flag=1;
}

125
DISEO DE UN GENERADOR DE RF EN BANDA L

}while(flag==0);

for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
}

flag=0;

do{
ReadFile(hcomPort, acBuf, dwlen, &dwBytRea, 0);
if(acBuf[21]=='c')
{
for(ii=0;ii<22;ii++)
{
if(tramaC[ii]!=acBuf[ii])
{
Memo1->Lines->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < -ERROR- TramaC incorrecta >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Sleep(2000);
flagError=1;
}
}
flag=1;
}
}while(flag==0);
}
//le digo al micro q empiece a programar el sintetizador

if(flagError==0)
{
Sleep(1000);
Memo1->Lines->Clear();

126
DISEO DE UN GENERADOR DE RF EN BANDA L

Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" <...en programacin>");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

WriteFile(hcomPort, "e", 1, &dwBytWri, 0);


for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
}

//Recibo consigna del micro....el sintetizador esta programado

do{

ReadFile(hcomPort, acBuf, 1, &dwBytRea, 0);


Sleep(10);
ccc++;
if(acBuf[0]=='f')
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Dispositivo Programado >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
}
flagp=1;
ccb=1;
// en teoria estaba con ccb=1 pero como e puesto el detector de
// enganche lo pongo a 0
ccc=0;
}

127
DISEO DE UN GENERADOR DE RF EN BANDA L

if((ccc==1500)&&(flagp==0)&&(ccb==0))
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < El Micro No Responde >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
ccc=0;
flagp=1;
}
}while(flagp==0);

ccb=0;
Sleep(100);

do{

ReadFile(hcomPort, acBuf, 1, &dwBytRea, 0);


ccc++;
if(acBuf[0]=='l')
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < PLL Enganchado >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");

Memo2->Color = clRed;
Sleep(2000);
Memo2->Color = clLime;

128
DISEO DE UN GENERADOR DE RF EN BANDA L

for(ii=0;ii<22;ii++)
{
acBuf[ii]=0x00;
}
flagp=0;
ccb=1;
ccc=0;
}

if((ccc==1500)&&(flagp==1)&&(ccb==0))
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < No Engancha o Out of Lock >");
Memo1->Lines->Add(" < no est habilitado >");
Memo1->Lines->Add("");
Memo2->Color = clLime;
ccc=0;
flagp=0;
}
}while(flagp==1);

flagp=0;
}

else
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Vuelve a intentarlo >");
Memo1->Lines->Add("");
Memo1->Lines->Add("");
}

flagm=0;

129
DISEO DE UN GENERADOR DE RF EN BANDA L

}
}//fin if ctr.tmp
ctr.tmp=0;
}//fin if serie

//---------------------------------------------------------------------//
// Funcin de Borland para grabar al configuracin de la palabra de
// control
//---------------------------------------------------------------------//
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
Memo1->Clear();
Memo1->Lines->Add(" < Registro de Control >");
Memo1->Lines->Add("");
if(CheckBox1->Checked==false)
{
Memo1->Lines->Add(" ->Out of Lock a 0");
ctr.ool=0;
}
else
{
Memo1->Lines->Add(" ->Out of Lock a 1");
ctr.ool=1;
}

if(CheckBox2->Checked==false)
{
Memo1->Lines->Add(" ->Power Down a 0");
ctr.pd=0;
}
else
{
Memo1->Lines->Add(" ->Power Down a 1");
ctr.pd=1;
}

130
DISEO DE UN GENERADOR DE RF EN BANDA L

if(CheckBox3->Checked==false)
{
Memo1->Lines->Add(" ->Charge Pump a 00");
ctr.cr0=0;
ctr.cr1=0;
}

else
{
if((RadioButton1->Checked==true)&(CheckBox3->Checked==true))
{
Memo1->Lines->Add(" ->IcpF=16Iset, Icp=Iset");
ctr.cr0=1;
ctr.cr1=1;
}
if((RadioButton2->Checked==true)&(CheckBox3->Checked==true))
{
Memo1->Lines->Add(" ->IcpF=12Iset, Icp=Iset");
ctr.cr0=0;
ctr.cr1=1;
}
if((RadioButton3->Checked==true)&(CheckBox3->Checked==true))
{
Memo1->Lines->Add(" ->IcpF=16Iset, Icp=2Iset");
ctr.cr0=1;
ctr.cr1=0;
}
if((RadioButton4->Checked==true)&(CheckBox3->Checked==true))
{
Memo1->Lines->Add(" ->IcpF=8Iset, Icp=2Iset");
ctr.cr0=0;
ctr.cr1=0;
}
}
}

131
DISEO DE UN GENERADOR DE RF EN BANDA L

//---------------------------------------------------------------------//
// Funcin de Borland para la adquisicin de datos, prohbe la escritura
// de cualquier carcter que no sea un entero
//---------------------------------------------------------------------//
void __fastcall TForm1::Edit4KeyPress(TObject *Sender, char &Key)
{
if(Key==8)return;
if ((Key < '0') || (Key > '9'))
{
Key='\0';
}
}

//---------------------------------------------------------------------//
// Funcin de Borland para la adquisicin de datos, prohbe la escritura
// de cualquier carcter que no sea un entero
//---------------------------------------------------------------------//
void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)
{
if(Key==8)return;
if(Key==',')return;
if ((Key < '0') || (Key > '9'))
{
Key='\0';
}
}
//---------------------------------------------------------------------//
// Funcin de Borland para la adquisicin de datos, prohbe la escritura
// de cualquier carcter que no sea un entero
//---------------------------------------------------------------------//
void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
{
if(Key==8)return;
if ((Key < '0') || (Key > '9'))
{
Key='\0';
}
}

132
DISEO DE UN GENERADOR DE RF EN BANDA L

//---------------------------------------------------------------------//
// Funcin de Borland, seleccin de verificacin de tramas por puerto
// serie
//---------------------------------------------------------------------//
void __fastcall TForm1::CheckBox4Click(TObject *Sender)
{
if((RadioButton6->Checked==true))
{
if(CheckBox4->Checked==false)
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Verificacin Desactivada >");
Memo1->Lines->Add("");
Sleep(1000);
Memo1->Clear();
}
else
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Verificacin Activada >");
Memo1->Lines->Add("");
Sleep(1000);
Memo1->Clear();
}
}
}

//---------------------------------------------------------------------//
// Funcin de Borland, seleccin de programacin por puerto paralelo
//---------------------------------------------------------------------//
void __fastcall TForm1::RadioButton5Click(TObject *Sender)
{
if((RadioButton5->Checked==true))
{
Memo1->Clear();

133
DISEO DE UN GENERADOR DE RF EN BANDA L

Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add("< Comunicacin por Puerto Paralelo >");
Memo1->Lines->Add("");
Memo1->Lines->Add(" ->Conexin directa desde el ");
Memo1->Lines->Add(" puerto paralelo al conector ");
Memo1->Lines->Add(" 3-wire del Sintetizador ");
clockd();
enup();
x=PortIn(LPT1i);
x=x&253;
PortOut(LPT1o,x);
}
}

//---------------------------------------------------------------------//
// Funcin de Borland, seleccin de programacin por puerto serie
//---------------------------------------------------------------------//
void __fastcall TForm1::RadioButton6Click(TObject *Sender)
{
if((RadioButton6->Checked==true))
{
Memo1->Clear();
Memo1->Lines->Add("");
Memo1->Lines->Add("");
Memo1->Lines->Add(" < Comunicacin por Puerto Serie >");
Memo1->Lines->Add("");
Memo1->Lines->Add(" ->Conexin directa desde el ");
Memo1->Lines->Add(" puerto serie al conector ");
Memo1->Lines->Add(" 3-wire del MicroControlador ");
}
}

134

También podría gustarte