Autor Tema: Escaner con Funcube.  (Leído 12163 veces)

ANgazu

  • TETRA
  • Radioastrónomo
  • *****
  • Mensajes: 272
  • Do ut des
Escaner con Funcube.
« en: Febrero 06, 2012, 11:26:37 am »
Hola compañeros.

Estoy en el proceso de programar un escaner "a mi manera" para el Funcube.

La mejor forma de controlarlo que he visto es usando la ExtIO_FCD_G0MJW.dll

He enviado un mail al autor, que muy amablemente me ha respondido con los prototipos de la DLL para poder usarla desde otras aplicaciones. Las llamadas son en estilo C y aqui os dejo los protoptipos por si alguien se anima.


Citar
unsigned __int32 LOfreq;
void (* CallBack)(int, int, float, short *);
HWND FindParentHandle();
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved);

bool __stdcall __declspec(dllexport) InitHW(char *name, char *model, int& type);
bool __stdcall __declspec(dllexport) OpenForm(bool Visible);
bool __stdcall __declspec(dllexport) OpenHW(void);
int __stdcall __declspec(dllexport) StartHW(unsigned __int32 freq);

int __stdcall __declspec(dllexport) GetStatus(void);
void __stdcall __declspec(dllexport) StopHW(void);
void __stdcall __declspec(dllexport) CloseHW(void);
int __stdcall __declspec(dllexport) SetHWLO(unsigned __int32 freq);
unsigned __int32 __stdcall __declspec(dllexport) GetHWLO(void);
long __stdcall __declspec(dllexport) GetHWSR(void);
void __stdcall __declspec(dllexport) TuneChanged(unsigned __int32 freq);
void __stdcall __declspec(dllexport) SetCallback(void (* myCallback)(int, int, float, short *));
void __stdcall __declspec(dllexport) ShowGUI(void);
void __stdcall __declspec(dllexport) HideGUI(void);
void __stdcall __declspec(dllexport) RawDataReady(long samprate, int *Ldata, int *Rdata, int numsamples);


These are internal functions that might be visible:

EXTERN FCD_API_EXPORT FCD_API_CALL void FCDAppReset(void);
EXTERN FCD_API_EXPORT FCD_API_CALL BOOL FCDAppCheckVersion();
EXTERN FCD_API_EXPORT FCD_API_CALL int FCDAppGetFreqHz(unsigned __int32 *nFreq);
EXTERN FCD_API_EXPORT FCD_API_CALL int FCDAppSetFreqHz(unsigned __int32 nFreq);

EXTERN FCD_API_EXPORT FCD_API_CALL FCDMODEENUM FCDAppGetText(unsigned __int8 Cmd, unsigned __int8 *Data, unsigned __int8 Len);
EXTERN FCD_API_EXPORT FCD_API_CALL FCDMODEENUM FCDAppGetLongValue(unsigned __int8 Cmd, unsigned __int32 *Data);
EXTERN FCD_API_EXPORT FCD_API_CALL FCDMODEENUM FCDAppGetShortValue(unsigned __int8 Cmd, unsigned __int16 *Data);
EXTERN FCD_API_EXPORT FCD_API_CALL FCDMODEENUM FCDAppGetByteValue(unsigned __int8 Cmd, unsigned __int8 *Data);
EXTERN FCD_API_EXPORT FCD_API_CALL int FCDAppSetParameter(unsigned __int8 cmd, unsigned __int8 value);
EXTERN FCD_API_EXPORT FCD_API_CALL int FCDAppGetPLLStatus(void);
EXTERN FCD_API_EXPORT FCD_API_CALL int FCDAppGetBiasTee(void);
EXTERN FCD_API_EXPORT FCD_API_CALL int FCDAppSetBiasTee(unsigned __int8 Status);
EXTERN FCD_API_EXPORT FCD_API_CALL int FCDAppGetIQOffsets(__int16 *I, __int16 *Q, __int16 *Phase, unsigned __int16 *Gain );
EXTERN FCD_API_EXPORT FCD_API_CALL int FCDAppSetIQOffsets( __int16 I, __int16 Q, __int16 Phase, unsigned __int16 Gain );
Mike


Yo voy a intentarlo en Labview, que no es el soft ideal para esas cosas. Si alguien quiere hacerlo en otro lenguaje, le puedo enviar el diseño básico de la aplicación.




Saludos.
ANgazu.
"Quod natura non dat, Salmantica non praestat"

Jack Bauer

  • Administrator
  • Analista
  • *****
  • Mensajes: 237
Re: Escaner con Funcube.
« Respuesta #1 en: Febrero 06, 2012, 11:58:22 am »
Yo me apunto a hacerlo en C para linux, espero tus noticias :)

ANgazu

  • TETRA
  • Radioastrónomo
  • *****
  • Mensajes: 272
  • Do ut des
Re: Escaner con Funcube.
« Respuesta #2 en: Febrero 06, 2012, 03:43:33 pm »
Hola  Jack Bauer.

La idea del escaner es como sigue para escaneo entre Fa  y  Fb

1 sintonizar a Fa
2 esperar 100 mS por PLL
3 adquirir 960 muestras de I/Q
4 efectuar DFT compleja en dB.
5 truncar 80 puntos iniciales y 80 finales para quedarse con 800 puntos a una resolucion de 100 Hz
6 convertir a I8 para tener un byte por punto, lo que nos da 800 bytes para cada 80 Khz de ancho de banda.
7 guardar esto en un array.
8 sintonizar a Fa+80 Khz e ir a 2

repetir hasta llegar a Fb.

Guardar en disco el array total del escan para su procesado posterior y repetir el escan hasta que se pare manualmente el escaneo.

Este proceso puede durar horas.

Una vez terminado, con el fichero de datos se puede generar un espectrograma en el que se vería donde y cuando hay señal y el ancho que ocupa.

Dado que el PLL del funcube necesita unos 100 mS? por paso, la velocidad seria baja, de no mas de 800 Khz por segundo, lo que para margenes de 5 o 10 Mhz esta bastante bien.

Habrá que ver si se puede bajar el tiempo de PLL sin estropear el asunto.
La resolución de 100 Hz y 1 dB es pobre, pero solo queremos saber donde hay señal.

A partir de ahí, habría que sintonizar en las frecuencias que nos interesen para "escuchar" lo que hay.

La parte de adquisición ya la tengo lista. Me falta el control del Funcube, que espero hacer pronto y que no me de demasiados dolores de cabeza.


Saludos.
ANgazu.
"Quod natura non dat, Salmantica non praestat"

kalakorikos

  • TETRA
  • Radioastrónomo
  • *****
  • Mensajes: 310
Re: Escaner con Funcube.
« Respuesta #3 en: Febrero 07, 2012, 10:55:25 pm »
Pregunta técnica,

¿qué antena usáis con el Funcube?
¿alguna recomendación especial?

También he visto que la toma que lleva no es de las habituales de radio, por lo que:
¿qué conversor hace falta? ¿es fácil de encontrar?

¡Gracias!

Jack Bauer

  • Administrator
  • Analista
  • *****
  • Mensajes: 237
Re: Escaner con Funcube.
« Respuesta #4 en: Febrero 07, 2012, 11:11:14 pm »
Pregunta técnica,

¿qué antena usáis con el Funcube?
¿alguna recomendación especial?

También he visto que la toma que lleva no es de las habituales de radio, por lo que:
¿qué conversor hace falta? ¿es fácil de encontrar?

¡Gracias!

Yo tengo una antena clónica (sin marca) igualita a esta, bibanda y base mágnética, espectacular si la pones encima del frigo:

http://www.locuradigital.com/antenas_bibandas/antenas_de_movil/ut_105_uv.htm

para el funcube hace falta un adaptador bnc a sma como este


en cualquier tienda de electrónica por un euro más o menos.

edito: Para aclarar que Locura Digital no patrocina ni tiene relación alguna con este foro, el enlace ha sido pura coincidencia  ;D

« Última modificación: Febrero 07, 2012, 11:23:02 pm por Jack Bauer »

ANgazu

  • TETRA
  • Radioastrónomo
  • *****
  • Mensajes: 272
  • Do ut des
Re: Escaner con Funcube.
« Respuesta #5 en: Febrero 08, 2012, 08:09:43 am »
Pregunta técnica,

¿qué antena usáis con el Funcube?
¿alguna recomendación especial?

También he visto que la toma que lleva no es de las habituales de radio, por lo que:
¿qué conversor hace falta? ¿es fácil de encontrar?

¡Gracias!

Hola.

Yo sigo usando un cable eléctrico de 90 cm pegado con celo al cristal de una ventana y soldado a un coaxial. El adaptador es el que te dice Jack Bauer y es recomendable usar un prolongasor USB para que el aparatito no este cerca del PC.
Dado que vivo en un ático, la recepción es aceptable. Pero estoy ahorrando para una Diamond discono D-220 o similar.

Saludos.
ANgazu.
"Quod natura non dat, Salmantica non praestat"

Jack Bauer

  • Administrator
  • Analista
  • *****
  • Mensajes: 237
Re: Escaner con Funcube.
« Respuesta #6 en: Febrero 08, 2012, 10:20:39 am »
Hola.

Yo sigo usando un cable eléctrico de 90 cm pegado con celo al cristal de una ventana y soldado a un coaxial. El adaptador es el que te dice Jack Bauer y es recomendable usar un prolongasor USB para que el aparatito no este cerca del PC.
Dado que vivo en un ático, la recepción es aceptable. Pero estoy ahorrando para una Diamond discono D-220 o similar.

Saludos.
ANgazu.

En mi humilde opinión, avalada por la experiencia de algunos radioaficionados, la mejor antena para recepción general de V/UHF desde la FM comercial hasta pasados los 1200 MHz es la Diamond X-200, aunque si se tiene presupuesto y espacio para ello, la Diamond X-700 es la repera.

¿Por qué?

Porque las discono tienen mucho ancho de banda, pero ganancia cero mientras que las citadas anteriormente tienen ganancias por encima de los 2 dB en el caso de la X-200 y de 9 dB en el caso de la X-700. Mucha gente piensa erroneamente que estas antenas solo sirven para 144/430 MHz mientras que las discono tienen un gran ancho de banda, si bien es cierto, la experiencia ha demostrado que el ancho de banda en recepción de estas antenas es muy superior al ancho de banda de emisión, una posible explicación a este fenómeno es que se debe a que a longitudes de onda inferiores a la que están previstas (frecuencias superiores), actúan como una antena colineal (varias antenas más pequeñas puestas en serie) aumentando de esta forma la ganancia de la antena, por lo que aunque la impedancia está desadaptada, la potencia que se logra enviar al receptor es muy superior a la que enviaría una antena discono.

En cualquier caso, y aunque esta explicación no sea muy ortodoxa, la experiencia demuestra que estas antenas funcionan mejor que las discono para la recepción de V/UHF.

Un saludo a todos.


ANgazu

  • TETRA
  • Radioastrónomo
  • *****
  • Mensajes: 272
  • Do ut des
Re: Escaner con Funcube.
« Respuesta #7 en: Febrero 08, 2012, 11:53:57 am »



Citar
En mi humilde opinión, avalada por la experiencia de algunos radioaficionados, la mejor antena para recepción general de V/UHF desde la FM comercial hasta pasados los 1200 MHz es la Diamond X-200, aunque si se tiene presupuesto y espacio para ello, la Diamond X-700 es la repera.

Muchas gracias. Lo tendré en cuenta.
La verdad es que de espacio no ando mal, por lo que una X-200 puede ser una opción interesante, y es algo más barata que la 220.

Saludos.
ANgazu.
"Quod natura non dat, Salmantica non praestat"

kalakorikos

  • TETRA
  • Radioastrónomo
  • *****
  • Mensajes: 310
Re: Escaner con Funcube.
« Respuesta #8 en: Febrero 08, 2012, 09:25:37 pm »
Muchas gracias por las respuestas.
73s!

ANgazu

  • TETRA
  • Radioastrónomo
  • *****
  • Mensajes: 272
  • Do ut des
Re: Escaner con Funcube.
« Respuesta #9 en: Febrero 09, 2012, 03:16:41 pm »
Hola.

Ya he comenzado las pruebas del escaner.

De momento, estoy ajustando diversos parámetros. La resolución adoptada es de 50 Hz y el tiempo de espera para el PLL de 100 mS.

Os dejo una parte del espectrograma.

Saludos.
ANgazu.
"Quod natura non dat, Salmantica non praestat"

ANgazu

  • TETRA
  • Radioastrónomo
  • *****
  • Mensajes: 272
  • Do ut des
Re: Escaner con Funcube.
« Respuesta #10 en: Febrero 13, 2012, 03:47:38 pm »
Hola foreros.

Después de varias pruebas con el Funcube como escaner, os pongo algunos resultados.

El tiempo del Funcube para cambiar RF y estabilizar es de unos 10-15 mS, Dado que una vez estable, hay que adquirir 20 mS de datos para procesar, el tiempo mínimo sin optimizar las funciones es de unos 40 mS por tramo de 80 Kz. Esto nos permitiría escanear unos 2 Mhz/s. Dado que cada tramo supone 1600 Bytes de datos, tendríamos unos 40 K de datos por segundo, lo que supondría  unos 144 MB por hora. Demasiados datos para procesar si se escanea varias horas.

Una opción más razonable es dedicar 100 mS por tramo, lo que nos deja unos 0,8 Mhz/s y unos datos de unos 57 MB por hora.

Para márgenes de unos 5-10 Mhz, la velocidad es razonablemente buena.

Los resultados son muy interesantes, como pongo en el gráfico al pie.



Saludos.
Angazu.
"Quod natura non dat, Salmantica non praestat"

Jack Bauer

  • Administrator
  • Analista
  • *****
  • Mensajes: 237
Re: Escaner con Funcube.
« Respuesta #11 en: Febrero 13, 2012, 05:15:58 pm »
[...]
El tiempo del Funcube para cambiar RF y estabilizar es de unos 10-15 mS, Dado que una vez estable, hay que adquirir 20 mS de datos para procesar, el tiempo mínimo sin optimizar las funciones es de unos 40 mS por tramo de 80 Kz. Esto nos permitiría escanear unos 2 Mhz/s. Dado que cada tramo supone 1600 Bytes de datos, tendríamos unos 40 K de datos por segundo, lo que supondría  unos 144 MB por hora. Demasiados datos para procesar si se escanea varias horas.

Una opción más razonable es dedicar 100 mS por tramo, lo que nos deja unos 0,8 Mhz/s y unos datos de unos 57 MB por hora.
[...]


Has considerado analizar los datos en tiempo real y almacenar tan solo un listado de las frecuencias en las que haya actividad en lugar de guardar todos los datos? Eso reduciría drásticamente el almacenamiento. Como no conozco labview no sé si estoy diciendo una tontería, tengo que buscar una librería en C/C++ para hacer la FFT y buscar portadoras.

Un saludo a todos.

ANgazu

  • TETRA
  • Radioastrónomo
  • *****
  • Mensajes: 272
  • Do ut des
Re: Escaner con Funcube.
« Respuesta #12 en: Febrero 13, 2012, 05:31:24 pm »
Citar
Has considerado analizar los datos en tiempo real y almacenar tan solo un listado de las frecuencias en las que haya actividad en lugar de guardar todos los datos? Eso reduciría drásticamente el almacenamiento. Como no conozco labview no sé si estoy diciendo una tontería, tengo que buscar una librería en C/C++ para hacer la FFT y buscar portadoras.

Un saludo a todos.

Hola Jack Bauer.

De momento, estoy tratando de mejorar el código y los formatos de almacenamiento.
Cuando todo funcione, tratare de probar lo que mencionas, posiblemente comunicando el escaner con el analizador por tcpip. Aunque dada la política de licencias y precios de NI, me temo que seguiré con el entorno de desarrollo en versión demo.

Saludos.
ANgazu.
"Quod natura non dat, Salmantica non praestat"

Jack Bauer

  • Administrator
  • Analista
  • *****
  • Mensajes: 237
Re: Escaner con Funcube.
« Respuesta #13 en: Febrero 13, 2012, 05:35:55 pm »
De momento, estoy tratando de mejorar el código y los formatos de almacenamiento.
Cuando todo funcione, tratare de probar lo que mencionas, posiblemente comunicando el escaner con el analizador por tcpip. Aunque dada la política de licencias y precios de NI, me temo que seguiré con el entorno de desarrollo en versión demo.

Pues cómo lo estás haciendo ahora?

ANgazu

  • TETRA
  • Radioastrónomo
  • *****
  • Mensajes: 272
  • Do ut des
Re: Escaner con Funcube.
« Respuesta #14 en: Febrero 13, 2012, 07:22:29 pm »
Ahora estoy usando el entrono de desarrollo en versión de prueba por 30 días. Todo funciona SIN compilar. Para compilar como aplicación, hace falta pagar unas licencias que, oficialmente, no tengo.

Creo que si alguien sabe Java o Python, podría hacer la aplicación sin mayor problema.

Saludos.
ANgazu.
"Quod natura non dat, Salmantica non praestat"