Problema de precisión de un DDS a frecuencias muy bajas

8

La primera vez en mi vida estoy usando este chip DDS (AD9850) para crear una onda sinusoidal en una frecuencia deseada, donde subo el código de la tabla de búsqueda y la frecuencia deseada. comando a través de un con microcontrolador. Entonces mi conocimiento en este momento es muy limitado.

La cosa parece estar bien hasta ahora, pero el problema está en frecuencias muy bajas. A 1Hz e incluso 0.5Hz parece estar bien. Pero también necesito bajar a 0.1Hz.

Aquí está la salida de DDS cuando envío el número 0.1 al DDS a través del microcontrolador:

ingrese la descripción de la imagen aquí

En mi código, envío el comando de PC a micro como cadena y lo convierto a doble. Pero para simplificar y verificar utilizo este código , y para 0.1Hz configuré sendFrequency (0.1) en el bucle.

Pero como puede ver, el período es de alrededor de 11.5 segundos en lugar de 10 segundos para el comando de 0.1Hz.

Espero poder explicar bien el problema. ¿Hay alguna manera de calibrar o ajustar esto para obtener un resultado más preciso? ¿O debería vivir con la precisión? Por cierto, ¿en qué parte de la hoja de datos se puede referir a dicha incertidumbre relativa?

floppy380
fuente
1
Entonces, ¿cuál es la palabra de control que está enviando al chip DDS y cuál es el reloj de referencia que está usando para el chip DDS? ¿Qué esperabas que pasara y qué tan lejos están estos 11.5 s de eso? ¡Necesitaremos mucho más conocimiento sobre su sistema!
Marcus Müller
@ MarcusMüller Utilizo este código softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html simplemente modificado pero el núcleo es el mismo. No podría inferir cuál es el reloj que se usa a partir del código. Le proporcioné el código y el chip, ¿qué más necesita?
floppy380
Usted conectó el chip a un reloj de referencia. Eres literalmente el único en este mundo que puede decirnos cuál es el reloj de referencia; ¡el circuito está sentado frente a ti, no de nosotros!
Marcus Müller
Oh, ya veo, pensé que está arreglado o cambiado por el código. Voy a medir y volveré.
floppy380
Es este módulo telecnatron.com/modules/ad9850/index.html por lo que parece 125MHz
floppy380

Respuestas:

9

No es una cosa de precisión, es resolución.

El frente de la hoja de datos especifica una resolución de sintonía de 0.0291Hz con un reloj de 125MHz.

0,0291125×106 6232 Hz (ya que el acumulador de fase es de 32 bits)

Entonces eso es aproximadamente el 30% de la frecuencia de salida deseada. Eso viene del resultado de agregar el LSB de la palabra de sintonización al acumulador de fase a 125MHz, para una frecuencia de reloj dada, es inherente al chip y al número de bits que eligieron para el acumulador de fase y la palabra de sintonización.

Puede intentar reducir la frecuencia del reloj: el mínimo es de 1MHz, por lo que debería poder mejorar la resolución en más de dos órdenes de magnitud, hasta alrededor de +/- 0.23% a 0.1Hz.

0,23×10-31×106 6232 Resolución de Hz con un reloj de 1 MHz

Desafortunadamente, otras cosas tendrán que cambiar para un rendimiento óptimo (especialmente el filtro de salida, que generalmente es un filtro LC elíptico de séptimo orden en estos módulos).

Si nunca necesita ir más allá, digamos, 1Hz, simplemente puede agregar un filtro RC con un corte de, digamos, 100Hz a la salida existente y será aceptable para muchos propósitos.

Spehro Pefhany
fuente
1
Nada divide los 125MHz de lo que puedo ver (aparte del DDS en sí, por supuesto). Tendría que soldar el oscilador y reemplazarlo con un módulo de frecuencia diferente (inferior). O deshabilítelo y aplique un reloj externo (puede tener una entrada de habilitación ... puede buscarlo). Es un cambio de hardware.
Spehro Pefhany
1
Lo hace, por supuesto, pero no pusieron suficientes bits para su aplicación. Si hubieran agregado otros 8 bits a la palabra de sintonía y al acumulador de fase, sería feliz (y las personas que no necesitan frecuencias tan bajas tendrían que pagar un poco más y enviar más bits para sintonizar el DDS para que no ser tan feliz)
Spehro Pefhany
1
Correcto. Pero tiene capacidad para un reloj tan bajo como 1 MHz, por lo que no se pierde todo, incluso para su aplicación. Sin embargo, el filtro de salida del módulo (esos inductores, condensadores y resistencias) no será apropiado, por lo que la salida tenderá a ser ruidosa con una frecuencia de reloj mucho más baja.
Spehro Pefhany
1
Nada que ver con alfileres. Pero el reloj del módulo y el filtro de salida están diseñados para 125 MHz fijos.
Spehro Pefhany
1
@SpehroPefhany: los FG de banco de gama baja pueden usar chips DDS prefabricados. Además, los circuitos integrados como el AD9106 pueden realizar la generación de formas de onda arbitrarias de estilo A / FG (velocidad fija). (Los más avanzados usarían un FPGA + RAM y un DAC separado, pero siguen siendo lo mismo básico, simplemente implementando su propia implementación :)
ThreePhaseEel
7

Lo que está buscando en la hoja de datos es la resolución de ajuste de frecuencia. Para este chip es 0.0291 Hz para una entrada de reloj de referencia de 125 MHz. Su frecuencia se redondeará a un múltiplo de este número. Este número se basa en la frecuencia de la entrada del reloj del chip.

Por ejemplo, 0.1 Hz se redondeará a 0.0873 Hz (0.0291 * 3). El período para 0.0873 Hz es de 11.5 segundos, que es lo que está viendo.

Una frecuencia de reloj de entrada más baja dará mayor precisión a frecuencias más bajas. Entonces, si desea una mejor precisión a frecuencias más bajas, baje la frecuencia del reloj.

Pangus
fuente
¿Cómo se calcula la frecuencia de salida redondeada? Por ejemplo, si envío 0.5 al chip, ¿puede mostrar qué fórmula utilizó y cuál sería la salida? Para poder predecir para cada uno
floppy380
Se redondea a un múltiplo de 0.0291. Para encontrar los múltiplos más cercanos, divida 0.5 por 0.0291, redondee al número entero más cercano y multiplique por 0.0291. 0.5 / 0.0291 = 17.18 que redondeamos a 17. Luego 17 * 0.0291 = 0.4947. Entonces, si ingresa 0.5Hz, realmente vería 0.4947Hz
Pangus
Oh bueno, incluso puedo trazar el error versus la frecuencia. ahora-
floppy380
@ChrisStratton Vaya. si, tienes razón. Edité mi respuesta. Gracias
Pangus
1
Puede hacer modulación de frecuencia y modulación de amplitud, pero no creo que pueda cambiar la tabla de búsqueda en el chip. Si está interesado en hacer formas de onda arbitrarias, entonces podría valer la pena buscar un chip diferente u obtener un DAC e intentar crear su propio DDS
Pangus