Autor Tema: Analizador de espectro 1200Mhz - 2490Mhz  (Leído 4372 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado yerflow

  • PIC10
  • *
  • Mensajes: 3
    • Yerflow
Analizador de espectro 1200Mhz - 2490Mhz
« en: 02 de Mayo de 2010, 21:08:17 »
Hola mi primer post aqui

Les cuento de un proyecto en el que trabaje los últimos meses y ya esta terminado, quiero compartir lo que tengo por si alguien quiere adaptar algo de este proyecto a sus propios .=)

El proyecto consiste en un sintonizador en la banda de 1200Mhz 2490Mhz el cual está controlado por un pic 18f4550, un PLL de 17 bits una pantalla alfanumérica, y una pantallita gráfica a color de un celular.

El sintonizador haciendo un barrido continuo muestrea en la pantalla gráfica la cantidad de señal presente en la entrada de R.F. del equipo.
Usando un juego de códigos en el programa se logra jugar con los colores por cantidad de señal; comenzando del color mas oscuro al blanco.
Actualización continua de la pantallita gráfica.

INFO COMO USAR EL DISPLAY -->
http://www.todopic.com.ar/foros/index.php?topic=31027.msg258816#msg258816






Les dejo especificaciones técnicas:


-Prototipo terminado
      -Firmware versión 10.02.12
      -Rango extendido de 1200 Mhz - 2510 Mhz ( 1.2Ghz -2.5Ghz )
      -Comunicación USB (beta1)
      -Saltos de frecuencia por muestreo:
            * 0.025 Mhz      
            * 0.050 Mhz
            * 0.100 Mhz
            * 0.500 Mhz
            * 1.       Mhz
            * 2.       Mhz
            * 4.       Mhz

Pantallita gráfica  6566 pixeles

    Ejes de muestreo 3D:

          X = frecuencia en Mhz (f)

          Y = amplitud (A)

          Z = tiempo (t)






Usos
-Diseño antenas de Wifi y Bluetooth direccionales y omnidireccionales ( 2.4Ghz )
-Receptor Superheterodino digital (salto de banda min. 12.5 khz)
-Analizador de Espectro Electromagnético 3D
-Analizador de filtros pasa banda
-Monitoreo de actividad R.F.
-Medidor de ciclo magnético-eléctrico del fotón en el medio de propagación.
« Última modificación: 15 de Junio de 2010, 10:53:21 por yerflow »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Analyzador de espectro 1200Mhz - 2490Mhz
« Respuesta #1 en: 02 de Mayo de 2010, 22:07:29 »
Se ve muy interesante ... :oops:

Gracias

PD/ Ya las vi al final jeje
« Última modificación: 03 de Mayo de 2010, 15:15:02 por MLO__ »
El papel lo aguanta todo

Desconectado Drod

  • PIC16
  • ***
  • Mensajes: 136
Re: Analyzador de espectro 1200Mhz - 2490Mhz
« Respuesta #2 en: 03 de Mayo de 2010, 14:21:08 »
Hola! Se ve muy interesante el proyecto, hace tiempo que quiero hacer uno! Podrias decirme tus referencias?
Gracias y felicitaciones!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Analyzador de espectro 1200Mhz - 2490Mhz
« Respuesta #3 en: 03 de Mayo de 2010, 15:29:37 »
Te ha quedado de lujo, enhorabuena.

¿Lo publicarás?

Desconectado The_Chosen

  • PIC12
  • **
  • Mensajes: 51
Re: Analyzador de espectro 1200Mhz - 2490Mhz
« Respuesta #4 en: 03 de Mayo de 2010, 21:00:59 »
Pero que interesante, ¿la pantalla a color es una pantalla Nokia de 128 x128?

Desconectado Drod

  • PIC16
  • ***
  • Mensajes: 136
Re: Analizador de espectro 1200Mhz - 2490Mhz
« Respuesta #5 en: 09 de Mayo de 2010, 18:56:25 »
(Misterio en el aire)

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
Re: Analizador de espectro 1200Mhz - 2490Mhz
« Respuesta #6 en: 10 de Mayo de 2010, 15:30:46 »
Esta muy bueno, felicidades.

Desconectado yerflow

  • PIC10
  • *
  • Mensajes: 3
    • Yerflow
Re: Analizador de espectro 1200Mhz - 2490Mhz
« Respuesta #7 en: 11 de Mayo de 2010, 03:04:21 »
disculpen por la demora mucho q hacer. :P

el programa lo escribí en una combinación entre ASM y Pic basic pro tiene aprox. 3000 líneas (incluido espacios) de largo pero aqui lo mas importante:

Primero comparto sobre el PLL usado, es un philips TSA5059
-máximo rango de entrada 2.7Ghz
-comandos por bus I2C
-Conectado a un ZERO IF down converter TDA8060 como VCO y mixer de RF (estos dos se encuentran ahora en el TDA8260)  

Control del PLL TSA5069:
primero q nada para los q no han usado nunca el sistema I2C hay mucho en internet sobre ello. pero no encontré algo q me sirva con este chip asi q escribí la secuencia de el pin de reloj (SCL) y el pin de datos (SDA), una rutina simple justa y rápida.

Código: [Seleccionar]
'I2C ADDRESS VARIABLE------- (setiamos las variables)----------------------------
ADDR    VAR BYTE      'ADDRESS VARIABLE
RW      VAR BIT
I2C_ACK VAR BIT
I2CBYTE VAR BYTE
' I2C VCO PORTS PLLS -----------------------------------------------------------
SCL VAR PORTD.2 ' I2C clock OUT
SDA VAR PORTD.3 ' I2C data OUT

'************* PLL BYTE EN DETALLE *********************************************************************************************************************************'
' BYTE 1 = NWORD1 = 0  , N14 , N13 , N12 , N11 , N10 , N9 , N8  PROGRAM DIVIDER                                                                                     '
' BYTE 2 = NWORD2 = N7 , N6  , N5  , N4  , N3  , N2  , N1 , N0  PROGRAM DIVIDER                                                                                     '
' BYTE 3 = RATIOW = 1  , N16 , N15 , PE  , R3  , R2  , R1 , R0  (PE = "1" PRESCALER /2 ACTIVE)  (R3 TO R0 = PROGRAMMABLE REFERENCE DIVIDER RATIOCONTROL)            '
' BYTE 4 = CURRENTP = C1 , C0  , XCE , XCS , P3  ,P2/T2, P1/T1, P0/T0  (C1 Y C0 CHARGE PUMP CURRENT) (XCE XCS TX = TEST. NORMAL MODE XCE=0 XCS=0)  (P =PORTS ALL=0) '
'*******************************************************************************************************************************************************************'

'************* Device ADDRESS #192 (AS TO GND) TSA5059 *******************************************************************************
VCO         CON     192         ' The address of the I2C device you wish to access        
NWORD1      var     byte        ' 0  , N14 , N13 , N12 , N11 , N10 , N9 , N8  PROGRAM DIVIDER
NWORD2      var     byte        ' N7 , N6  , N5  , N4  , N3  , N2  , N1 , N0  PROGRAM DIVIDER
RATIOW      VAR     BYTE        ' 1  , N16 , N15 , PE  , R3  , R2  , R1 , R0  (PE = 1 PRESCALER /2 ACTIVE)  (R3 TO R0 = PROGRAMMABLE REFERENCE DIVIDER RATIOCONTROL)
CURRENTP    con     %01000000   ' C1 , C0  , XCE , XCS , P3  ,P2/T2, P1/T1, P0/T0  (C1 Y C0 CHARGE PUMP CURRENT) (XCE XCS TX = TEST. NORMAL MODE XCE=0 XCS=0)  (P =PORTS ALL=0)

HIGH SCL
HIGH SDA


LET ADDR=VCO 'setiamos el address del pll, éste puede tener hasta cuatro distintos address (cuatro dispositivos en el mismo bus)

NWORD1   = %00000000                
NWORD2   = %00000000
RATIOW   = %10001111
'CURRENTP = %11000000
 

'para mayor info esta en el DATASHEET,

PLLSEND5BYTES: 'subrutina de los pines del pic conectados al pll I2C
HIGH SDA              'START CONDITION
HIGH SCL              'START CONDITION
LOW SDA               'START CONDITION
PAUSEUS 5
LOW SCL               'START CONDITION


LET I2CBYTE = ADDR    ' SEND ADDRESS
GOSUB SENDI2CBYTE     ' SENDOUT
let NWORD1.7=0         '
LET I2CBYTE = NWORD1  ' SEND NWORD1
GOSUB SENDI2CBYTE     ' SENDOUT
LET I2CBYTE = NWORD2  ' SEND NWORD2
GOSUB SENDI2CBYTE     ' SENDOUT
LET RATIOW.7=1
LET I2CBYTE = RATIOW  ' SEND RATIOW
GOSUB SENDI2CBYTE     ' SENDOUT
LET I2CBYTE = CURRENTP' SEND CURRENTP
GOSUB SENDI2CBYTE     ' SENDOUT

LOW SCL               ' STOP CONDITION
LOW SDA               ' STOP CONDITION
PAUSEUS 5
HIGH SCL              ' STOP CONDITION
PAUSEUS 5
HIGH SDA              ' STOP CONDITION
PAUSEUS 5
RETURN


SENDI2CBYTE: 'Subrutina para enviar 1 byte a la vez. Esta rutina se la llama 5 veces cada envío de datos al PLL.


LOW SCL                            'C  11110                  
PAUSEUS 5    '  
IF I2CBYTE.7 = 1 THEN HIGH SDA     'D  11110X                          
IF I2CBYTE.7 = 0 THEN LOW SDA      'D  11110X
PAUSEUS 5
HIGH SCL                           'C  111107
PAUSEUS 5     'CLOCK 1 HIGH
LOW SCL                            'C  11110X0
PAUSEUS 5    
IF I2CBYTE.6 = 0 THEN LOW SDA      'D  1111070
IF I2CBYTE.6 = 1 THEN HIGH SDA     'D  11110X0X
PAUSEUS 5
HIGH SCL                           'C  11110706
PAUSEUS 5     'CLOCK 2 HIGH
LOW SCL                            'C  11110X0X0
PAUSEUS 5    
IF I2CBYTE.5 = 0 THEN LOW SDA      'D  111107060
IF I2CBYTE.5 = 1 THEN HIGH SDA     'D  11110X0X0X
PAUSEUS 5
HIGH SCL                           'C  1111070605
PAUSEUS 5     'CLOCK 3 HIGH
LOW SCL                            'C  11110X0XOX0
PAUSEUS 5    
IF I2CBYTE.4 = 0 THEN LOW SDA      'D  11110706050
IF I2CBYTE.4 = 1 THEN HIGH SDA     'D  11110X0X0X0X
PAUSEUS 5
HIGH SCL                           'C  111107060504  
PAUSEUS 5     'CLOCK 4 HIGH
LOW SCL                            'C  11110X0X0X0X0
PAUSEUS 5    
IF I2CBYTE.3 = 0 THEN LOW SDA      'D  1111070605040
IF I2CBYTE.3 = 1 THEN HIGH SDA     'D  11110X0X0X0X0X
PAUSEUS 5
HIGH SCL                           'C  11110706050403
PAUSEUS 5     'CLOCK 5 HIGH
LOW SCL                            'C  11110X0X0X0X0X0
PAUSEUS 5    
IF I2CBYTE.2 = 0 THEN LOW SDA      'D  111107060504030
IF I2CBYTE.2 = 1 THEN HIGH SDA     'D  11110X0X0X0X0X0X
PAUSEUS 5
HIGH SCL                           'C  1111070605040302
PAUSEUS 5     'CLOCK 6 HIGH
LOW SCL                            'C  11110X0XOXOXOXOXO
PAUSEUS 5    
IF I2CBYTE.1 = 0 THEN LOW SDA      'D  11110706050403020
IF I2CBYTE.1 = 1 THEN HIGH SDA     'D  11110X0XOXOXOXOXOX
PAUSEUS 5
HIGH SCL                           'C  111107060504030201
PAUSEUS 5     'CLOCK 7 HIGH
LOW SCL                            'C  11110X0XOXOXOXOXOXO
PAUSEUS 5    
IF I2CBYTE.0 = 0 THEN LOW SDA      'D  1111070605040302010   'W/R BIT IN WRITE(0)
IF I2CBYTE.0 = 1 THEN HIGH SDA     'D  11110XOXOXOXOXOXOXOX
PAUSEUS 5
HIGH SCL                           'C  11110706050403020101
PAUSEUS 5     'CLOCK 8 HIGH
LOW SCL                            'C  11110X0XOXOXOXOXOXOXO
PAUSEUS 5    
HIGH SDA      'ACKNOWLEDGE BIT     'D  11110X0XOXOXOXOXOXOXO1   'NEXTBYTE IF ANY 'IF LOW END OF RECEPTION
PAUSEUS 5
HIGH SCL                           'C  111107060504030201010A
PAUSEUS 5     'CLOCK 9 HIGH
LOW SCL
PAUSEUS 5

RETURN

--------------------------------------------------------------------------------------------------------

Los bytes llamados NWORD corresponden a los 17 bits de división. la formula para convertir la frecuencia separada en Mhz y en Khz  en los 17 bits de división es la siguiente, tbn está el ratio incluido en la formula así q si cambia el ratio(salto de frecuencia) la formula se adapta =);

Código: [Seleccionar]
FORMULA:                                                                                                          

IF RAT = 1  THEN DT = 4:NN = 0                 '4000 KHZ STEP SIZE              RAT*4 = DT
IF RAT = 2  THEN DT = 2:NN = 0                 '2000 KHZ STEP SIZE              RAT = DT
IF RAT = 4  THEN DT = 1:NN = 0                 '1000 KHZ STEP SIZE              RAT/4 = DT
IF RAT = 8  THEN DT = 2:NN = KILOHZ / 500      '500  KHZ STEP SIZE              ""
IF RAT = 20 THEN DT = 5:NN = KILOHZ / 200     '200  KHZ STEP SIZE              ""
IF RAT = 40 THEN DT = 10:NN = KILOHZ / 100     '100  KHZ STEP SIZE             ""                                                   
IF RAT = 80 THEN DT = 20:NN = KILOHZ / 50      '50   KHZ STEP SIZE              ""                                                  
IF RAT = 160 THEN DT = 40:NN = KILOHZ / 25     '25   KHZ STEP SIZE              ""                                                 


                                                                                                                     'X
IF RAT < 3 THEN NWORDX = MEGAHZ / DT                                                                                                                     'X
IF RAT > 3 THEN NWORDX = MEGAHZ * DT                                                                                                 'X
let NWORDX = NWORDX + NN            ' NWORDX = N15 - N0    1010101010101010                                              'X
let NWORD1 = NWORDX >> 8            ' NWORD1 = N15 - N8    10101010                                                      'X
let NWORD2 = NWORDX                 ' NWORD2 = N7 - N0             10101010                                              'X
                                                                                                                     'X
IF RAT = 160 AND MEGAHZ <= 1638 THEN RATIOW.6 = 0                   ' MAKE N16 = 0                                   'X
IF RAT = 160 AND MEGAHZ = 1638 AND KILOHZ >= 4000 THEN RATIOW.6 = 1 ' MAKE N16 TO BYTE 3  '65536 = RATIOW.6          'X
IF RAT = 160 AND MEGAHZ >= 1639 THEN RATIOW.6 = 1                   ' MAKE N16 TO BYTE 3                             'X
                                                                                                                     'X
                        

IF RAT < 100 THEN RATIOW.6 = 0                                                                                                                      'X


IF NWORD1.7 = 0 THEN  RATIOW.5 = 0                ' MOVE N15 TO BYTE 3 OR RATIOW                                     'X
IF NWORD1.7 = 1 THEN  RATIOW.5 = 1 : NWORD1.7 = 0 ' MOVE N15 TO BYTE 3 OR RATIOW                                     'X
                                                                                                                     'X
LET RATIOW.7 = 1  'ALWAYS = 1                                                                                        'X
IF RAT > 1 THEN RATIOW.4 = 0  'PRESCALER OFF                                                                                     'X
IF RAT = 1 THEN RATIOW.4 = 1  'PRESCALER OFF
                                                                                     'X
'PLL BYTE DE RATIO                                                                                                                     'X
IF RAT =  2  OR RAT =  1 THEN  RATIOW.3 = 0 : RATIOW.2 = 0 : RATIOW.1 = 0 : RATIOW.0 = 0
IF RAT =  4  THEN  RATIOW.3 = 0 : RATIOW.2 = 0 : RATIOW.1 = 0 : RATIOW.0 = 1
IF RAT =  8  THEN  RATIOW.3 = 0 : RATIOW.2 = 0 : RATIOW.1 = 1 : RATIOW.0 = 0
IF RAT =  20 THEN  RATIOW.3 = 1 : RATIOW.2 = 0 : RATIOW.1 = 1 : RATIOW.0 = 1
IF RAT =  40 THEN  RATIOW.3 = 1 : RATIOW.2 = 1 : RATIOW.1 = 0 : RATIOW.0 = 0                                                                       'X
IF RAT =  80 THEN  RATIOW.3 = 1 : RATIOW.2 = 1 : RATIOW.1 = 0 : RATIOW.0 = 1                                                                       'X
IF RAT = 160 THEN  RATIOW.3 = 1 : RATIOW.2 = 1 : RATIOW.1 = 1 : RATIOW.0 = 0                                                                       'X
                                                                       'X
                                                                                                                     'X
RETURN  'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                                                                                                              



con esto solo escribiendo por ejemplo en la variable MEGAHZ = 2400 y en la variable KILOHZ = 0, la formula convierte esto en los 5 bytes para mandarlo al PLL por el bus de datos I2C, dando como resultado la estabilización de frecuencia del VCO en 2.4Ghz =)

Espero haberlo explicado bien. por favor postear si alguna parte no se entiende bien para poder explicarlo mejor.

La explicación del display y su chip la haré luego.  :-/


Saludos a todos

Att. su amigo Yerflow

« Última modificación: 11 de Mayo de 2010, 13:44:24 por yerflow »