PLL 1 vatio Veronica

Hola Sergio,,:unsure: bueno voy a tratar de explicarte como funciona un pll,en este caso,,, Sintetizador tipo "down converter" ;) Por empezar tenemos el vco,,es decir un oscilador controlado por tension,que por lo general cuando es discreto,su circuito tanque ,es decir la union entre la inductancia ,con el capacitor. Este ultimo es sustituido por un diodo especial (el varicap) que de acuerdo a la tension aplicada,varia su capacidad interna,,de esta forma podemos mover el vco mediante una tension dentro del rango de diseño a nuestro antojo,esta fcia entregada por el vco ,pasa por una serie de divisores,hasta lograr nuestra frecuencia de comparacion ,por ej 25Khz,estos 25khz ingresan a un circuito comparador de fase,en donde a su ves ingresan otros 25khz ,proporcionados por el oscilador de referencia controlado a cristal,a su ves la salida del comparador se ingresa a un filtro pasa bajo que le da cierta inercia al circuito,,ya que si fuera muy extrema la correccion de fcia ,seria imposible modular a ese vco,,ya que el circuito interpretaria que esa variacion del oscilador es un error y no una variacion deseada,cuando deseamos mover la frecuencia del vco,lo unico que tenemos que hacer es modificar la division que enviamos hacia el comparador,lo que provocara que la frecuencia cambie,hasta que entre en fase con la del oscilador maestro,a partir de este momento el lazo de fase enganchado (pll) mantendra la fcia de salida estable,por mas deriva termica que se produsca en el oscilador vco.:cool:


Algo de teoria al respecto.:)

http://www.profesores.frc.utn.edu.ar/electronica/ElectronicaAplicadaIII/Aplicada/Cap02RedesPLL.pdf

Pd ,hola, si entre y baje algunos archivos, ahora tengo que estudiarlos, a su vez voy a ahorrar para comprar un multimetro digital para medir la frequencia de 25khz. ¿el cristal de 6,4mhz tiene que generar los 25khz? y por cuanto hay que dividir los 6,4mhz?.

Hay que dividrlo 256 Veces,,ya que 25*256= 6400.



Saludos.
:apreton:
muchas gracias por la explicacion. Saludos
 
en realidad las rutinas de sintonizacion es la misma para cualquier micro...

este seria el codigo para el 16F628A, y ojo que creo que en algunas versiones del vero se utilizan el puerto A0 y el A4 para algo asi como el Unlock que en realidad no tengo ni Pxta Idea de que se trata pero esos no interfieren para nada con las rutinas de sintonizacion...

ahhh puse una pequeña explicación del código y si alguien tiene alguna duda intentare disiparla con gusto...


Código:
@ Device   PIC16F628A 'Fuses para el 628a
@ Device   xt_Osc 'se usa oscilador externo
@ Device   WDT_On ' Se usa la bandera del perro guardian
@ Device   Pwrt_off ' se deshabilita lo del encendido
@ Device   Mclr_On 'Se habilita el Hard-Reset del micro
@ Device   BOD_Off 'se deshabilita La funcion BOD (ver ficha de datos)
@ Device   LVP_Off 'Se deshabilita la programacion de bajo Voltaje
@ Device   CPD_On 'Se HAbilita la proteccion de lectura del Eeprom
@ Device   Protect_On 'Se Habilira la proteccion de lectura del Codigo del micro

data @0,$03,$6B    ' Al grabar el pic se establece la frecuencia 87.5 en la eeprom

Option_Reg.7=0   ' se habilitan los pullups del puerto B el bit 7, necesario para el vero
cmcon=7          ' se define el puerto A Todo como digital
TrisA=%00000     ' se define el puerta A como salidas
TrisB=%00000011   ' se define el puerto B como salidas del bit 2 al 7 y 0-1 como entradas

define Osc 4      ' se define la velocidad del micro
DEFINE LCD_DReg PortB '------->
DEFINE LCD_DBit 4   
DEFINE LCD_RSReg PortB
DEFINE LCD_RSBit 2      'Definiciones para el LCD
DEFINE LCD_EReg PortB
DEFINE LCD_EBit 3
DEFINE Shift_PauseuS 2'---------<

But0      var portB.0 ' se Asigna el puerto B0 a una variable
But1      var portB.1 ' se Asigna el puerto B1 a una variable

Tune      var word   ' Variable de la frecuencia
CE        var PortA.3 'Puerto donde esta conectado el pin CE del LM7001 y se asigna varible
CL        var PortA.2 'Puerto donde esta conectado el pin CL del LM7001 y se asigna varible
DI        var PortA.1 'Puerto donde esta conectado el pin DI del LM7001 y se asigna varible
Dat_1x    Var word    ' Variable temporal del word a enviar por el puerto DI(PortA.1)
Cont_1x   var byte    ' Variable de conteo
D_Bit_1x  var byte    'Variable temporal del Bit a enviar por el puerto DI(PortA.1)

'Tune=Frecuencia:Gusub Sintoniza

Cont   Var Byte  ' contador de la pantalla
Disp   var Byte 'Variable de contador de pantalla a moistrar
Disp1  Var Byte 'Variable de inicio de contador de pantalla
PortA=0 'inicializa el valor del puerto A

Lcdout $FE,$01 'Borra PAntalla
pause 100 'Estabiliza micro
Low CE:low cl:low DI ' pone en estado bajo los pines CE CL DI del Lm7001
Disp=0 'la primer pantalla a mostrar "Bienvenido"
read 0,tune.byte1 'Asigna el byte alto de la utima frecuencia guardada en la eeprom
read 1,tune.byte0 'Asigna el byte bajo de la utima frecuencia guardada en la eeprom
gosub Sintoniza ' Va a la rutina sintonizar para enviar los datos al lm7001 de la
                'frecuencia que esta en la variable tune

Main: 'rutina principal
clearwdt ' borra bandera del perro guardian (watchdog)
Gosub Pantalla ' Va a rutina para actualizar la pantalla
goto Main 'bucle de rutina principal
end

Sintoniza:  'Rutina de sintonizacion no me pregunten como la saque que no me acuerdo jajaja
            ' y me da fiaca acordarme pero si entra aqui envia la frecuencia que este en la variable Tune
DAt_1x=tune.byte0:gosub W_protocolo
DAt_1X=tune.byte1:gosub W_protocolo
DAt_1x=$80: gosub W_protocolo
Low CE:low DI:Low CL
write 0,tune.byte1
write 1,tune.byte0
return

W_Protocolo: 'Rutina de envio de trama por el puerto
For cont_1x=0 to 7
  d_bit_1x= DAt_1x & dcd cont_1x
  if d_bit_1x <>0 then D_bit_1x=1
  if not ce then high ce
  DI=d_bit_1x :pauseus 3
  high Cl: pauseus 3: low CL
next cont_1x
return

Pantalla 'Desplega la pantalla enforma de banner esta rutina es pura crema o glamur...

         'pueden cambiarla como mejor les agrade...
FOR cont = 208 TO 176 step -1
  Lcdout $FE,$80,"RADIO ",dec tune/10,".",dec tune//10 ," MHz "
  select case Disp
   Case 0
    LCDOUT $FE,cont," BIENVENIDO "
   Case 1
    LCDOUT $FE,cont," SINTONIZADO "
    disp1=2
   Case 2
    LCDOUT $FE,cont," EMITIENDO... "
   Case 3
    LCDOUT $FE,cont," MEXICO/CHILE "
   Case 4
    LCDOUT $FE,cont," TERCEL/LUBECK "
  end Select
  pause 500 'hace una pausa para desplegar el banner y funciona tambien como antirrebote del
                ' los pulsadores
  if not but0 then ' si el boton  arriba se presiona....
   Tune=Tune+1 'incrementa la variable tune
   if tune>1081 then tune=1081 ' si pasa de la frecuencia 1081 se estanca en esa frecuencia...
   gosub Sintoniza ' va a rutina de sintonizacion y manda al 7001 la frecuencia en la variable tune
   disp1=1 ' la primer pantalla a desplegar es la de sintonizado
  endif
  if not but1 then  ' si el boton  arriba se presiona....
   tune=Tune-1 'decrementa la variable tune
   if tune <875 then tune=875 ' si pasa de la frecuencia 875 se estanca en esa frecuencia...
   gosub Sintoniza ' va a rutina de sintonizacion y manda al 7001 la frecuencia en la variable tune
   disp1=1 ' la primer pantalla a desplegar es la de sintonizado
  endif
NEXT cont
Disp=disp+1 'incrementa la pantalla a mostrar
if disp>4 then disp=disp1 ' si la pantalla a mostrar es mayor que 4 se va a la primera a mostrar
Return
anexo el Hex y el codigo... que es lo mismisimo del codigo de este post pero ya compilado....
y yo preguntando en otro hilos y estaba aqui gracias al amigo lubeck, mi duda es para que versión del vero es osea si es para el LM7001 o para el SAA? gracias
 
Estimado Dircio, deseo construir el tx de fm veronica, el de 1w con pll y cristal de 4 mhz, me pudieras facilitar la información mas reciente?, anticipadamente recibe mis agradeciemientos. (en el foro ay varias versiones de pcbs y no me quiero confundir)
 

Temas similares


Arriba