Transmisor de FM Estéreo con RDS/RDBS QN8027

#1
Hace poco compre un módulo basado en el chip de Quintic el QN8027, es un módulo muy económico, el precio es de unos 6 o 7€ en Aliexpress:

Módulo transmisor FM QN8027 módulo FM audio Módulo de transmisión inalámbrica estéreo RDS ESTÉREO en de en AliExpress.com | Alibaba Group

Ahora estoy mirando la posibilidad de hacerle funcionar mediante un pic, lo ideal sería con un PIC18F2550 que trae incorporada la interfaz USB ademas de ser económico y de 28 pines, hay varias implementaciones para plataformas de NXP ARM y C51 además para Arduino, por si alguien esta interesado ésta es la secuencia de arranque y faltaría la parte de RDS (la traducción es automática del chino):

Código:
El programa de inicialización del QN8027 correcto es el siguiente:

1.    Escribir el registro de datos para el QN8027 0x00 = 0x81; Restablece el valor predeterminado todos los registros del QN8027
2.    20ms de retardo
3.    Escribir registro de datos para el QN8027 0x03 = 0x50; Establecer QN8027 para la entrada de reloj externo onda de spin positivo (relacionado con el diseño de hardware)
4.    Escribir registro de datos para el QN8027 0x04 = 0x33; Establecer la frecuencia de reloj de 12MHz (relacionado con el diseño de hardware)
5.    Escribir registro de datos para el QN8027 0x00 = 0x41; Verificación de máquina de estado finito de QN8027
6.    Escribir registro de datos para el QN8027 0x00 = 0x01; Verificación de máquina de estado finito de QN8027
7.    Retardo de 20ms // aumenta el retardo de 20ms a esperar QN8027 suma de comprobación de máquina de estados finitos completar
8.    Escribir registro de datos a QN8027 0x18 = 0xe4; Mejora de SNR de relación señal a ruido
9.    Escribir registro de datos para el QN8027 0x1b = 0xf0; Potencia de transmisión máxima para el QN8027
10.    Escribir registro de datos para el QN8027 0x01 = 0x7e; Establecer la frecuencia de (transmisión)
11.    Escribir registro de datos para el QN8027 0x02 = 0xb9; Descartar la función de desconexión de QN8027 para cuando no hay señal de audio en la entrada
12.    Escribir registro de datos para el QN8027 0x00 = 0x22; Lanzamiento
Aqui podeis descargar la librería para Arduino, aunque habría que añadir la parte RDS para quien quiera probar con Arduino.

QN8027 radio transmitter lib for sharing
 
Última edición por un moderador:
#2
Estos son los archivos con los que estoy haciendo mis pruebas, los he adaptado del qndriver de Quintic, el compilador es Hi-Tech 9.63 y el MPLAB X IDE v3.55, puede que haya algo que cambiar.

Un saludo
------- Mensaje actualizado: -------

El main ejecuta algunas funciones de puesta en marcha, potencia, región y activación del RDS, simulando con proteus parece ir bien, al menos se ven las tramas, el SDA debe conectarse al pin RBA0 y el SCL al pin RBA1 del pic y uso un PIC18F2550, pero podeis usar cualquier otro con memoria suficiente..
------- Mensaje actualizado: -------

Aqui podeis ver los registros de usuario y los bits que los modifican
 

Adjuntos

Última edición:
#3
Adapte el qndriver a mi diseño, pero algo fallaba, era la linea SCL que siempre se mantenia a nivel bajo y modificando el bloque Stop(); añadiendo una linea Set_SCL(0); se soluciona y ahora si hace la trama bien:

Bloque que trabaja mal:

void Stop(void)
{
qn_delay_ms(1);
Set_SDA(0);
qn_delay_ms(1);
Set_SCL(1);
qn_delay_ms(2);
Set_SDA(1);
}

Bloque correcto:

void Stop(void)
{
Set_SCL(0);
qn_delay_ms(1);
Set_SDA(0);
qn_delay_ms(1);
Set_SCL(1);
qn_delay_ms(2);
Set_SDA(1);
}

También os dejo la forma de enviar datos RDS y RadioText

Un saludo
 

Adjuntos

#5
Pues aun estoy en ello, hay cosas que se me escapan pues la programación no es mi fuerte, por ejemplo la función para fijar la frecuencia que no esta bien, pero tengo uno para el coche con el qn8027 y el sonido es bastante limpio, tambien hay otro chip el si4713 de Silicon Labs que es algo más sofisticado, y este si lo he probado con el módulo de adafruit hay librerias y ejemplos de código para AVR y en este si puedes ver el espectro de audio y con la libreria de adafruit para arduino se puede cambiar la frecuencia, variar la potencia o mandar datos RDS.

Aqui puede verse el espectro resultante:

Adafruit Learning System
------- Mensaje actualizado: -------

El modulo de adafruit esta disponible en ebay, amazon o aliexpress.

Arduino Code | Adafruit Si4713 FM Radio Transmitter with RDS/RDBS Support | Adafruit Learning System
 
#6
Hola....creo que Andrxx te pregunta por la pureza espectral de la emisión(portadora + modulación) no por la del audio solamente.

Es el punto débil de cualquiera de esos IC que conozco que funcionan de maravilla para lo que fueron diseñados/pensados pero muchos intentan hacer una emisora profesional a partir de esos IC amplificando solamente y se llevan grandes "chascos".

He visto un montón de equipos echos a partir de IC de ese tipo y etapas amplificadoras que lo único que hacen es ensuciar el espectro radioeléctrico con todo tipo de interferencias, propias y/o de las propias etapas amplificadoras mal diseñadas.

Saludos.

Ric.
 
#7
Pues no sabria deciros pues no he llegado tan lejos, si bien este no tiene muchos armónicos si es a lo que te refieres y el si4713 lo puedo probar ya que tengo el kit de desarrollo y el modulo de adafruit pensado para trabajar con arduino.

Por ejemplo el QN8027 para una potencia de 100mW y frecuencia de 107.30MHz ocupa desde 107.15 a 107.50MHz estando emisor y radio a unos 4m, claro que sin filtros, el si4713 podria probarlo, este parece más sofisticado, tiene muchos más registros y propiedades para configurarlo.

https://www.silabs.com/documents/public/user-guides/Si47xxEVB.pdf
 
#8
Buenas, en efecto preguntaba por la calidad de la señal final ya que compré en aliexpress un pequeño emisor PLL de 100 mW cuyo sonido es perfecto pero con tan sólo 100 mW tira espurias de bastante nivel y provoca mucho ruido blanco, haciéndolo no apto para conectarlo a un amplificador en clase C. Sobre que te ocupa desde 107,15 a 107,50 es normal.
 
#9
Creo que el si4713 es más completo, tiene compresor de audio incluido, me habia decantado por el qn8027 porque tiene menos registros, pero tambien excepto para algun micro de la familia C51, hay poca información sobre como implementar funciones, y probando con el qndriver no se porque da algunos warnings y omite algunas cosas en el Hi-Tech, por contra para el si4713 si hay código para micros AVR y C51 sobre todo y tambien para linux, el telefono nokia n97 lo llevaba, de este hay variaciones, el si4710, si4711, si4712 y si4713, el mas completo es el 13 y el 10 y 12 no incluyen RDS en fin iremos probando a ver si se saca algo de provecho.
 

Temas similares

Arriba