Analizador de audio profesional

Ratmayor

ModeraTroll
Este es un proyecto extremadamente ambicioso que llevo dándole vueltas en la cabeza un buen rato, pero esta incompleto, así que iré subiendo los avances paulatinamente y son bienvenidos a dar sus sugerencias y opiniones.

Se trata de un equipo que permite medir distorsión armónica (THD), relación señal / ruido (SNR), distorsión / ruido (THD+N), distorsión por intermodulación (IMD), potencia, damping factor, respuesta de frecuencias, parámetros T/S entre otras cosas que pueda hacer con el mismo hardware y me vaya acordando 🤣🤣🤣

De momento iré compartiendo los diagramas y a medida que vaya investigando y diseñando iré explicando una a una las etapas y su funcionamiento, antes de pelearme con el software (Si, requiere software porque estaré usando 2 MCU)

Adjunto los diagramas de los datasheets de alguno de los ICs que usaré en el proyecto...

Etapa de entrada
Bien comencemos desde el principio el equipo cuenta con varios puntos de prueba, el primero es para conectar la fuente de sonido que se quiera probar, ya sea un amplificador o preamplificador, cuenta con 3 escalas seleccionables por medio de relés de 2.5V, 25V y 250V por lo que los divisores de tensión están calculados para el tope de escala del ADC (2.5V). En la entrada principal hay varias derivaciones que van a diferentes puntos del circuito, la linea marcada como ADC1 va para el ADC CS5389 que sera para mediciones de alta precisión como la THD, IMD, Slew Rate, etc. La línea marcada como IPR va con un sensor ACS712 para medir la corriente que circula hacia las cargas en el caso de estar probando la potencia de un amplificador, así como también la línea marcada como VPR es para medir la tensión que está ingresando, así podemos calcular la potencia y el damping factor, ya la última línea marcada como ARG va directamente al MCU de control y es para leer en que escala estamos, nos sirve como referencia para que el sistema sea auto rango y también como medida de protección en caso de exceder la escala seleccionada.

También hay un terminal marcado como Speaker que es para realizar pruebas de parámetros T/S, la línea marcada como Amp viene desde un pequeño amplificador interno basado en el LM1875 que tiene suficiente potencia para excitar el parlante y calcular su masa, para estas pruebas se usan simultáneamente los 2 ADCs internos del CS5389.

Ya por último cuenta con 2 entradas extra en donde se conectará la alimentación del amplificador que se esté probando y así poder calcular que tanta señal se le puede inyectar sin que se sature y poder calcular la eficiencia.
front-end.png
También cabe destacar que la selección de las escalas y funciones se harán por medio de pequeños relés DIP para no comprometer las mediciones, excepto los relés que activan / desactivan las cargas, esos si son relés de machos 🤣

Etapa de conversión analógica / digital
El ADC escogido es un CS5389 de 18bits, que además tiene una baja relación señal ruido de 100dB y un rango dinámico de 107dB, además entre los ADC exquisitos de encapsulado DIP (Sip, todo el proyecto es thru-hole, ya mi vista no es la de hace 20 años atrás) es el menos caro, claro que hay mejores opciones, pero estamos hablando de us$70 o más 🫠 y este se mantiene en el orden de los us$15 es un lujo, pero es manejable.
buffer_adc.png
El ADC requiere de señales balanceadas y para lograr esto, se escogió los OPA2132 ya que cuenta con la locura de 0.00008% de distorsión además de un ancho de banda de 8Mhz, lo que lo deja bastante sobrado para este proyecto. Las secciones como las de medición de potencia, damping factor, etc al no necesitar una precisión extrema, usan directamente los ADC del dsPIC30F4013I/P.

Es importante recalcar que se requiere el uso de resistores de metal film al 1% o al 0.1% para mantener la precisión del equipo, además que el sistema requiere de diferentes fuentes de alimentación que deben estar separadas, por eso se marcan como ±5VD y ±5VA en referencia a 5V digitales y 5V analógicos, incluso las conexiones a tierra también deben ir separadas y eso es para evitar que los ruidos de los clock y data se cuelen a las líneas analógicas, lo que afectaría gravemente las mediciones. No obstante, si podemos mantener el ruido al mínimo, el equipo tiene la sensibilidad de detectar niveles de distorsión del 0.001% que para ser un proyecto DIY es bastante generoso...
 

Adjuntos

  • CS5389.pdf
    1.7 MB · Visitas: 9
  • opa2132.pdf
    1.3 MB · Visitas: 1
  • DAC.pdf
    37.3 KB · Visitas: 0
  • CPU.pdf
    59.2 KB · Visitas: 0
  • CS4328.pdf
    951.2 KB · Visitas: 0
  • ADC.pdf
    62.1 KB · Visitas: 0
  • DSP.pdf
    42.1 KB · Visitas: 0
DSP, el musculo matemático
Para este proyecto escogí el dsPIC30F4013 qué es un controlador digital de señales (DSC) de alto rendimiento de 16 bits, que combina la potencia de cálculo de un procesador de señales digitales (DSP) con la facilidad de uso de un microcontrolador tradicional y además tengo varios ahí guardados :V

Al principio pensé en usar un solo DCP para todo, para los cálculos necesarios y para la interfaz de usuario, PERO, este MCU solo cuenta con 1kb de ROM y 2kb de RAM lo que se iba a convertir en un problema a la hora de calcular la FFT o correr los algoritmos Goertzel qué calculan la distorsión armónica si además tenía que atender los botones y la LCD 🤦🏻‍♂️

Bueno, vamo' a calmano', primero veamos la distribución del dsPIC33F4013, se está aprovechando el hardware del DSP, eso de andar haciendo bit-banging me da ansiedad 🤣 por lo que los pines quedaron asignados así:
Pinassing.png
Así sacamos el máximo provecho de los chips y reducimos la latencia.

Resolviendo problemas y limitaciones
Como comentaba el dsPIC30F4013 tiene una ROM de 1Kb y una RAM de 2Kb lo que para los procesos matemáticos pudiera verse limitado, así que se agregaron 2 memorias externas, una RAM 23LC1024 de 128kb y una EEPROM 24FC1025 para guardar datos de calibración y otros parámetros, también el cristal está calculado para que trabaje a ritmo con el ADC y el DAC para obtener una frecuencia de muestreo de 48kHz trabajando en el puerto DCI o Interfaz de Convertidor de Datos (DCI por sus siglas en inglés) que le permiten al dsPIC la interconexión sencilla de dispositivos, como codificadores/decodificadores de audio (códecs), convertidores A/D y convertidores D/A. El DCI gestiona automáticamente la
temporización de la interfaz asociada a estos códecs. No se requiere ninguna sobrecarga de la CPU hasta que la cantidad de datos solicitada se haya transmitido o recibido por el DCI. Se pueden transferir hasta cuatro palabras de datos entre interrupciones de la CPU, lo que vienen bien para dedicar más potencia de cálculo a los algoritmos...
DSP.png
La memoria RAM va conectada directamente en el puerto SPI nativo del MCU, la ROM va en el puerto nativo I2C y la comunicación con el otro MCU será vía UART.

El MCU recibe directamente las señales de prueba de tensión de fuente y potencia ya que como mencioné antes, no se requiere de demasiada precisión para estas mediciones, además, como me estresa ver un MCU con demasiados pines libres, se le agregaron 3 LEDs:, Blanco: MCU OK, Verde: MCU Busy, Rojo: MCU Error y también un pequeño buzzer para el bip de los botones...
 
Última edición:
Luego de pasar una virosis con todo y fibre prosigo con el proyecto :'V esta vez analicemos al director de la orquesta:

Unidad Control e Interfaz de usuario
Esta etapa está trabajando bajo el mando del PIC18F4550, ideal por tener un buen clock PLL 48Mhz, lo que le dará fluidez a la interfaz, este trabajará solo para que el usuario pueda comunicarse con el DSP (dsPIC30F4013) quien es quien realmente hace el trabajo matemático pesado y llama las funciones que hemos agregado al sistema que son:
  • Medición THD, THD+N, IMD, SINAD.
  • Ancho de banda (Barrido de 10Hz a 30kHz).
  • Analizador de espectro (FFT, lectura básica algo limitada por el dsPIC y la LCD que es de 20x4, pero podría ser de ayuda).
  • Medición de potencia RMS, Peak y DIN.
  • Medición de Factor de amortiguamiento (Damping Factor).
  • Medición de Slew-Rate.
  • Medición de parámetros T/S para parlantes.
  • Generador de frecuencia senoidal y cuadrada (10Hz a 30kHz).
  • Selector de cargas 4Ω y 8Ω
Teniendo en cuenta que el PIC18F4550 tiene puerto USB consideré que a futuro conforme reciba ayuda para el desarrollo de este equipo se pueda usar para transferir todos los datos recogidos a una PC y generar reportes.

CPU.png
Además del PIC, le agregué un desplazador de registro 74LS164 para activar / desactivar los LEDs que acompañan los botones, además de un rotary encoder para navegar entre las opciones de cada una de las pruebas. Además este MCU se encargará también de detectar el nivel de tensión que está entrando al equipo a modo de protección y para el auto rango (Pin ARG) y un pequeño LM35 para supervisar la temperatura de las resistencias de carga, además de controlar los relés que seleccionan las funciones y los rangos de la entrada (RY*) y mantiene comunicación constante con el DSP vía UART (U2TX, U2RX)

Conversión Digital - Analógica, Salidas
Esta es la etapa que más llevó revisiones, en especial porque hay pocos DAC "Exquisitos" de encapsulado DIP por los cuales no te quieran pedir un riñón, lo intenté con el AD1865, TDA1540, TDA1541, DAC745KP y el PCM1702 hasta que me topé con el DS4328 que cuenta con 18bits al igual que ADC, lo que me evitaba que no se entendiera con el ADC y que el dsPIC tenga que hacer de traductor, además de un muy bajo nivel de distorsión y ruido, además a un precio módico
DAC.png
El DAC, al ser estéreo, uso los 2 canales para funciones diferentes, el canal L o 1, es la salida de frecuencia que además servirá para enviar señales limpias al amplificador que tengamos en prueba, y el canal R o 2 lo uso exclusivamente para el LM1875 que a su vez servirá de excitador para el parlante que tengamos a prueba en el modo de prueba de parámetros T/S.

De momento esto es lo que llevo desarrollado, espero encarecidamente me puedan apoyar en el desarrollo de este proyecto y por mi parte mientras ahorro para comprar algunos ICs que me faltan y voy diseñando la PC, ir compartiendo lo que vaya programando...

Saludos a todos...
 
Última edición:
Luego de pasar una virosis con todo y fibre prosigo con el proyecto :'V esta vez analicemos al director de la orquesta:

Unidad Control e Interfaz de usuario
Esta etapa está trabajando bajo el mando del PIC18F4550, ideal por tener un buen clock PLL 48Mhz, lo que le dará fluidez a la interfaz, este trabajará solo para que el usuario pueda comunicarse con el DSP (dsPIC30F4013) quien es quien realmente hace el trabajo matemático pesado y llama las funciones que hemos agregado al sistema que son:
  • Medición THD, THD+N, IMD, SINAD.
  • Ancho de banda (Barrido de 10Hz a 30kHz).
  • Analizador de espectro (FFT, lectura básica algo limitada por el dsPIC y la LCD que es de 20x4, pero podría ser de ayuda).
  • Medición de potencia RMS, Peak y DIN.
  • Medición de Factor de amortiguamiento (Damping Factor).
  • Medición de Slew-Rate.
  • Medición de parámetros T/S para parlantes.
  • Generador de frecuencia senoidal y cuadrada (10Hz a 30kHz).
  • Selector de cargas 4Ω y 8Ω
Teniendo en cuenta que el PIC18F4550 tiene puerto USB consideré que a futuro conforme reciba ayuda para el desarrollo de este equipo se pueda usar para transferir todos los datos recogidos a una PC y generar reportes.

Ver el archivo adjunto 339938
Además del PIC, le agregué un desplazador de registro 74LS164 para activar / desactivar los LEDs que acompañan los botones, además de un rotary encoder para navegar entre las opciones de cada una de las pruebas. Además este MCU se encargará también de detectar el nivel de tensión que está entrando al equipo a modo de protección y para el auto rango (Pin ARG) y un pequeño LM35 para supervisar la temperatura de las resistencias de carga, además de controlar los relés que seleccionan las funciones y los rangos de la entrada (RY*) y mantiene comunicación constante con el DSP vía UART (U2TX, U2RX)

Conversión Digital - Analógica, Salidas
Esta es la etapa que más llevó revisiones, en especial porque hay pocos DAC "Exquisitos" de encapsulado DIP por los cuales no te quieran pedir un riñón, lo intenté con el AD1865, TDA1540, TDA1541, DAC745KP y el PCM1702 hasta que me topé con el DS4328 que cuenta con 18bits al igual que ADC, lo que me evitaba que no se entendiera con el ADC y que el dsPIC tenga que hacer de traductor, además de un muy bajo nivel de distorsión y ruido, además a un precio módico
Ver el archivo adjunto 339939
El DAC, al ser estéreo, uso los 2 canales para funciones diferentes, el canal L o 1, es la salida de frecuencia que además servirá para enviar señales limpias al amplificador que tengamos en prueba, y el canal R o 2 lo uso exclusivamente para el LM1875 que a su vez servirá de excitador para el parlante que tengamos a prueba en el modo de prueba de parámetros T/S.

De momento esto es lo que llevo desarrollado, espero encarecidamente me puedan apoyar en el desarrollo de este proyecto y por mi parte mientras ahorro para comprar algunos ICs que me faltan y voy diseñando la PC, ir compartiendo lo que vaya programando...

Saludos a todos...
El XLR será Out ¿no?
 
Atrás
Arriba