Problema de precisão de um DDS em frequências muito baixas

8

Primeira vez na vida, estou usando esse chip DDS (AD9850) para criar onda senoidal em uma frequência desejada, onde carrego o código da tabela de pesquisa e a frequência desejada. comando via a com micro-controlador. Então, meu conhecimento no momento é muito limitado.

A coisa parece bem até agora, mas o problema está em frequências muito baixas. A 1Hz e até 0,5Hz parece bom. Mas eu também preciso descer para 0.1Hz.

Aqui está a saída do DDS quando envio o número 0.1 para o DDS através do micro controlador:

insira a descrição da imagem aqui

No meu código, envio o comando do PC para o micro como string e o converto para o dobro. Mas, por simplicidade e para verificar, eu uso esse código e, para 0.1Hz, defino sendFrequency (0.1) no loop.

Mas, como você vê, o período é de cerca de 11,5 segundos, em vez de 10 segundos, para o comando 0,1Hz.

Espero poder explicar bem a questão. Existe uma maneira de calibrar ou afinar isso para que eu tenha um resultado mais preciso? Ou devo viver com a precisão? Onde, na folha de dados, podemos nos referir a essa relativa incerteza?

floppy380
fonte
1
então, qual é a palavra de controle que você está enviando para o chip DDS e qual é o relógio de referência que você está usando para o chip DDS? O que você esperava que acontecesse e a que distância estão esses 11,5 s disso? Precisamos de muito mais conhecimento em seu sistema!
Marcus Müller
@ MarcusMüller Eu uso esse código softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html apenas um pouco modificado, mas o núcleo é o mesmo. Não pude inferir qual é o relógio usado no código. Forneci o código e o chip. O que mais você precisa saber mais, deixe-me fornecer.
precisa saber é o seguinte
você conectou o chip a um relógio de referência. Você é literalmente o único neste mundo que pode nos dizer qual é o relógio de referência; o circuito está sentado na sua frente, não de nós!
Marcus Müller
Oh, vejo que pensei que fosse corrigido ou alterado pelo código. Vou medir e voltar.
precisa saber é o seguinte
É este módulo telecnatron.com/modules/ad9850/index.html assim parece 125MHz
floppy380

Respostas:

9

Não é uma coisa precisa, é uma resolução.

A frente da folha de dados especifica a resolução de sintonia de 0,0291Hz com um relógio de 125MHz.

0.0291125×106232. Hz (já que o acumulador de fase é de 32 bits)

Isso representa cerca de 30% da frequência de saída desejada. Isso vem do resultado da adição do LSB da palavra de sintonia ao acumulador de fase a 125MHz - para uma determinada frequência de clock, é inerente ao chip e ao número de bits que eles escolheram para o acumulador de fase e a palavra de sintonia.

Você pode tentar reduzir a frequência do relógio - o mínimo é 1MHz, para poder melhorar a resolução em mais de duas ordens de magnitude, para cerca de +/- 0,23% a 0,1Hz.

0.23×1031×106232. Resolução de Hz com um relógio de 1 MHz

Infelizmente, outras coisas terão que mudar para obter o desempenho ideal (especialmente o filtro de saída - que geralmente é um filtro LC elíptico de 7ª ordem nesses módulos).

Se você nunca precisar ir acima de, digamos, 1Hz, basta adicionar um filtro RC com um limite de, digamos, 100Hz à saída existente e será aceitável para muitos propósitos.

Spehro Pefhany
fonte
1
Nada divide os 125MHz do que posso ver (além do próprio DDS, é claro). Você teria que dessoldar o oscilador e substituí-lo por um módulo de frequência (inferior) diferente. Ou desative-o e aplique um relógio externo (pode ter uma entrada de habilitação ... você pode procurá-lo). É uma mudança de hardware.
Spehro Pefhany
1
É claro que sim, mas eles não colocaram bits suficientes para a sua aplicação. Se eles adicionassem outros 8 bits à palavra de sintonia e ao acumulador de fase, você ficaria feliz (e as pessoas que não precisam de frequências tão baixas teriam que pagar um pouco mais e enviar mais bits para sintonizar o DDS para que não seja tão feliz).
Spehro Pefhany
1
Corrigir. Mas acomoda apenas um relógio de 1 MHz, para que nem tudo seja perdido, mesmo para a sua aplicação. O filtro de saída do módulo (aqueles indutores, capacitores e resistores) não será apropriado, portanto a saída tenderá a ser barulhenta com uma freqüência de clock muito mais baixa.
Spehro Pefhany
1
Nada a ver com alfinetes. Mas o relógio do módulo e o filtro de saída foram projetados para 125 MHz fixos.
Spehro Pefhany
1
@SpehroPefhany - FGs de bancada de extremidade inferior podem e usam chips DDS pré-fabricados. Além disso, ICs como o AD9106 podem executar a geração de forma de onda arbitrária no estilo A / FG (taxa fixa). (Os mais sofisticados seria realmente usar um FPGA + RAM e um DAC separado, mas eles ainda são a mesma coisa básica no coração, apenas rolando sua própria implementação :)
ThreePhaseEel
7

O que você está procurando na folha de dados é a resolução do ajuste de frequência. Para este chip, é de 0,0291 Hz para uma entrada de clock de referência de 125 MHz. Sua frequência será arredondada para um múltiplo desse número. Este número é baseado na frequência da entrada do relógio do chip.

Por exemplo, 0,1 Hz será arredondado para 0,0873 Hz (0,0291 * 3). O período para 0,0873 Hz é de 11,5 segundos, é o que você está vendo.

Uma freqüência mais baixa do relógio de entrada fornecerá maior precisão nas frequências mais baixas. Portanto, se você deseja uma melhor precisão em frequências mais baixas, diminua a frequência do relógio.

Pangus
fonte
Como você calcula a frequência arredondada de saída? Por exemplo, se eu enviar 0,5 para o chip, você pode mostrar qual fórmula foi usada e qual seria a saída? Para que eu possa prever para cada
floppy380
Arredonda para um múltiplo de 0,0291. Para encontrar múltiplos mais próximos, divida 0,5 por 0,0291, arredonde para o número inteiro mais próximo e multiplique por 0,0291. 0,5 / 0,0291 = 17,18 que arredondamos para 17. Então 17 * 0,0291 = 0,4947. Então, se você 0.5Hz entrada que seria realmente ver 0.4947Hz
Pangus
Oh bom, eu posso até traçar o erro versus freq. agora-
floppy380
@ChrisStratton Oops. sim você está certo. Eu editei minha resposta. Graças
Pangus
1
Você pode fazer modulação de frequência e modulação de amplitude, mas acho que não pode alterar a tabela de pesquisa no chip. Se você estiver interessado em fazer formas de onda arbitrárias, então pode valer a pena olhar em um chip diferente ou conseguir um DAC e tentando criar seus próprios DDS
Pangus