Transmisor de FM Estéreo con RDS/RDBS QN8027

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:
Éstos 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.

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..

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

Adjuntos

  • TX_QN8027.rar
    179.6 KB · Visitas: 163
  • QN8027_SANB_Hardware_Application_Note_V_0_25_102209.pdf
    1,018.7 KB · Visitas: 120
  • QN8027-Quintic.pdf
    685.4 KB · Visitas: 111
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

  • Inicializacion rds.png
    Inicializacion rds.png
    729.6 KB · Visitas: 80
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 automáticamente combinado:

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
 
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.
 
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
 
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.
 
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.
 
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

Creo que en la linea 9 ta has confundido, no existe el registro 0x1B, deberia ser el 0x10. Por otro lado creo que para potencia maxima, el valor del registro 0x10, deberia ser 0xF5.
Tambien he probado el ejemplo que viene en la libreria que adjuntas aqui y no funciona, el QN8027 no se entera. Tengo que comprobar la libreria que pones mas adelante y otras que encontre por internet.
De momento no he conseguido hacer funcionar el QN8027.

Saludos.
 
Creo que en la linea 9 ta has confundido, no existe el registro 0x1B, deberia ser el 0x10. Por otro lado creo que para potencia maxima, el valor del registro 0x10, deberia ser 0xF5.
Tambien he probado el ejemplo que viene en la libreria que adjuntas aqui y no funciona, el QN8027 no se entera. Tengo que comprobar la libreria que pones mas adelante y otras que encontre por internet.
De momento no he conseguido hacer funcionar el QN8027.

Saludos.

Pues esta sacado de la documentación de los chinos, puede que lo hayan hecho mal, de todos modos si quieres probar esto es para arduino y es lo más reciente que hay.

dragon-engineer/QN8027

Saludos
 
Gracias por el enlace, ese precisamente es uno de los que tengo por probar.
Tambien estudiando las conexiones me di cuenta de que es necesario poner unas resistencias PULL-UP, entre cada linea del I2C y +3,3 V. Yo no las habia puesto asi que podria ser ese el problema. Cuando las ponga y pruebe comentare resultados.

Saludos.
 
Bueno pues no hay forma de poner en funcionamiento el modulo que tengo yo, es el de la foto adjunta. Comprado en Aliexpress, el vendedor no envia ni una misera imagen. Esta la encontre por internet y las señales de SCL y SDA estan intercambiadas entre si. Ademas si mirais el texto de abajo de la imagen, vereis que no concuerda con el patillaje de la placa.
Aun despues de corregir las conexiones, no hay forma de que funcione.
No aconsejo a nadie comprar este modulo.

Saludos.
 

Adjuntos

  • Modulo_FM_QN8027_pinout.jpg
    Modulo_FM_QN8027_pinout.jpg
    121 KB · Visitas: 36
Ese es el que yo pedi en principio, pero Aliexpress lo tenia descatalogado y me aconsejaron el otro.
Ambos se pueden alimentar con 5 V, si los conectas al pin Vcc y el tuyo ademas con 3,3 V conectandolos a ese pin.
El regulador es Q1, aunque no se vea en el PCB, si que va montado, puedes comprobarlo en tu modulo. Estara marcado como 662K.
Una pregunta, tu modulo al conectarlo sin programar nada, ¿emite en alguna frecuencia de la banda de FM?.

Saludos.
 
Ese es el que yo pedi en principio, pero Aliexpress lo tenia descatalogado y me aconsejaron el otro.
Ambos se pueden alimentar con 5 V, si los conectas al pin Vcc y el tuyo ademas con 3,3 V conectandolos a ese pin.
El regulador es Q1, aunque no se vea en el PCB, si que va montado, puedes comprobarlo en tu modulo. Estara marcado como 662K.
Una pregunta, tu modulo al conectarlo sin programar nada, ¿emite en alguna frecuencia de la banda de FM?.

Saludos.

Lo monte pero no sintonizaba nada, ayer probe otra vez con la nueva libreria con igual resultado, mire las conexiones del i2c con el osciloscopio y no parecian tener actividad en el arduino, actualmente estoy enfrascado en un modulador dab que dará mucho más juego y supongo que menos arriesgado si emites con algunos vatios de potencia por haber menos curiosos a la escucha, estoy esperando que me lleguen las pcb para incarle el diente, pues tiene muy buena pinta.

Saludos
 
¿Quieres decir que nunca conseguiste hacerlo funcionar?, porque eso es justamente lo que me ocurre a mi.
Encontre un sketch para arduino que chequea el bus I2C y te da los dispositivos encontrados. Lo probe con el modulo QN8027 y no lo detecta, en cambio con un RTC DS3231, lo detecta correctamente y al instalar algun ejemplo de reloj basado en el, funciona correctamente.
Si quieres probar el I2C_scanner, lo baje de aqui se maneja desde el terminal serie del Arduino IDE.

Saludos.
 
¿Quieres decir que nunca conseguiste hacerlo funcionar?, porque eso es justamente lo que me ocurre a mi.
Encontre un sketch para arduino que chequea el bus I2C y te da los dispositivos encontrados. Lo probe con el modulo QN8027 y no lo detecta, en cambio con un RTC DS3231, lo detecta correctamente y al instalar algun ejemplo de reloj basado en el, funciona correctamente.
Si quieres probar el I2C_scanner, lo baje de aqui se maneja desde el terminal serie del Arduino IDE.

Saludos.

Tendriamos que tener un esquema de ambos módulos, como estan conectados al chip, que no creo que difieran mucho y saber que puede pasar para que no haya actividad, como estan conectados los pines al chip, mosquea que conetandolo al arduino no de señales de vida, sin embargo el modulo de adafruit con el si4713 de silabs funciona a la perfección.

Saludos
 
Yo abandono este CI, no me da ninguna confianza despues de visto lo visto. Y ademas lo queria mas que nada por el RDS, pero es muy limitado en ello, asi que aunque funcionase bien no me interesa.
Ahora estoy estudiando el Si4711, que parece mucho mejor, pero no hay modulos comerciales, tendre que hacerlo yo desde cero.

P.D.: He visto que el Si4713 si tiene un modulo de AdaFruits y una libreria, asi que en lugar del 4711, me paso al 4713.
 
Última edición:
Atrás
Arriba