Gerador de Funções com DDS

Circuitos eletrônicos, topologias, diagramas elétricos, etc...

Moderadores: 51, Renie, gpenga

Gerador de Funções com DDS

Mensagempor MOR_AL » 29 Jun 2012 21:35

Olá!
Tanto comentam sobre geradores com chips DDS que eu decidi criar um novo tópico sobre o assunto. Dei uma olhada no manual do AD9850 e tenho algumas considerações a fazer:
1 – A programação para se gerar uma senóide e uma onda quadrada até uns 40Mc/s é relativamente fácil.

2 – Para frequências mais altas, até o limite de 40Mc/s, é necessário introduzir um filtro passa-baixas, entre a saída do CDA e a entrada do comparador, para reduzir a distorção harmônica da senóide. Esse filtro não é simples. É recomendado (e mostrado) um filtro do tipo elíptico de 5a ordem. Pequenas variações na precisão dos componentes desse filtro provocam substancial alteração na sua curva de atenuação. Aumentando a atenuação na faixa de passagem, onde o sinal útil se encontra e diminuindo a atenuação na faixa de rejeição, onde queremos atenuar os harmônicos da fundamental e as frequências imagens, geradas quando se processam sinais digitais. Para se ter uma idéia da amplitude da primeira frequência imagem, ela possui 70% da fundamental, ou da desejada. Daí a necessidade de um filtro do tipo elíptico, pois este apresenta excelentes condições (pólos e zeros bem localizados).

3 – A máxima frequência possível de ser obtida é função da frequência do clock aplicado ao AD9850 e da capacidade de atenuação do filtro. Recomendam um clock máximo de 125Mc/s, quando a potência dissipada no AD9850 fica perigosamente próxima ao seu limite máximo. Nessas condições pode-se obter até uns 33% da frequência do clock, ou uns 40MHz de senóide na saída do filtro, ou 40Mc/s de onda quadrada na saída do comparador diferencial.

4 – Segundo o manual, é possível alterar-se a frequência rapidamente. O AD9850 não interfere na taxa dessa alteração, pois os tempos são da ordem de uns 3,5 a 7ns. Não que esse seja o tempo necessário para se alterar a frequência. São necessários diversos períodos deles, mas mesmo assim, poder-se-ia alterá-la rapidamente para produzir um sinal FM ou FSK. A limitação fica restrita à identificação da palavra que gera essa frequência. Há uma expressão que relaciona a frequência desejada com a frequência do clock e com o número de 32 bits que deverá ser gravado no AD9850.

freq. desejada = (número de 32 bits x FClock) / (2 elevado a 32).

Obviamente que, para se obter a frequência desejada, deve-se explicitar o número de 32 bits na expressão acima.

número de 32 bits = [(2 elevado a 32) x freq. desejada] / FClock

Aí é que vem a dificuldade, e conseqüentemente, o atraso em aumentar-se a taxa de variação da frequência desejada.
Suponha que se disponha de um aparelho com micro controlador (uC), LCD 2x16 e um teclado 4x4 para se gerenciar o AD9850. Suponha que se deseje alterar a frequência de 1MHz, já implementada, para 1,1MHz em passos de 0,01MHz. O firmware do uC já se encontra pronto para gerenciar a variação de frequência no AD9850. Forçosamente, esse programa terá que conter a expressão acima e em ponto flutuante. Esta expressão terá que ser calculada tantas vezes quantas serão as frequências envolvidas, que neste caso seriam 11 vezes. A primeira limitação depende de quanto tempo leva para se obter o tal número de 32 bits. Lembrando que após obter-se o número em ponto flutuante, tem-se que converter o seu formato de ponto flutuante para o formato codificado em binário. Pode-se contornar o problema e reduzir-se este tempo. Pode-se calcular esses 11 valores com 32 bits e guardá-los em uma memória RAM. Posteriormente pode-se apenas transferir dessa memória para o AD9850.
Há outro modo de se contornar este problema. Calcula-se o número para a frequência inicial e para a final e armazena-se na RAM. A partir do valor inicial, soma-se um valor fixo que corresponde à variação entre cada duas frequências adjacentes e transfere-se para o AD9850. Cada resultado da variação deve ser comparado com o valor máximo. Quando o resultado for superior ao valor máximo deve-se parar ou retornar-se ao início do processo. Para se aumentar ainda mais a taxa de variação, pode-se obter apenas o valor do número que corresponde à frequência inicial e depois ir somando o número que corresponde à variação entre duas frequências adjacentes. Deve-se fazer isso um determinado número de vezes. Número esse que corresponda a se alcançar a frequência final desejada.
O segundo impedimento seria então o principal. Observe que o uC precisa de 8 pinos para o teclado (multiplexado), 6 ou 7 pinos para o LCD, 2 pinos para o controle do AD9850 e um ou 8 pinos para a transferência de dados da frequência para o AD9850.
Então tem-se 16 ou 23 pinos, além dos 2 do clock do uC e 1 de reset, totalizando uns 19 a 26 pinos. Para reduzir-se de 26 para 19, tem que se optar pela entrada de dados no AD9850 via um pino, ou modo serial. Cada entrada de dados corresponde a 40 bits.

5 – Montagem e PCI. Há diversos sítios que recomendam como deve ser a placa de CI (PCI). Com frequências de 40Mc/s em onda quadrada, há componentes harmônicos múltiplos (ímpares). Pelo que observei no formato da onda quadrada distorcida, provavelmente deve haver até o quinto harmônico na composição da onda. Isso dá uns 200MHz.
Outro problema é a montagem do chip na PCI. Seus pinos são bem pequenos e próximos. Fica muito difícil, porém não impossível, de se fazer e montar a PCI em casa.
Atentar para o fato de que, em alguns sítios contendo o circuito, solicitam resistores com precisão de 1% onde ela não é realmente necessária.
Há também, diversos kits para vender, com a placa contendo o chip, disponíveis na internet, o que reduz o problema da PCI.

6 – Modulação AM. É possível, a partir do sinal senoidal, modulá-lo em amplitude. Isso requer um fet com poucos resistores, porém com montagem para alta frequência.

7 – Sinal de saída. Normalmente deve-se poder variar linearmente a tensão de saída e este sinal deve possuir resistência interna de 50 ohms. A resistência de carga também pose ser de 50 ohms. Isso requer um amplificador para altas frequências (até uns 40MHz para senóides e até uns 200 Mc/s para ondas quadradas).

Ficam então mostrados os detalhes necessários a uma implementação de geradores produzidos com o Ci AD9850.

MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor MOR_AL » 05 Jul 2012 09:00

Segue um possível diagrama em blocos do gerador.

Possuiria simplesmente a fundamental, senoidal ou quadrada, sem modulação.

Com modulação FM, teria as seguintes opções:
1 - Modulante senoidal.
2 - Modulante triangular.
3 - Modulante varredura (dente de serra).
4 - Modulante FSK.

As taxas da modulante seriam baixas. Talvez até 50Hz para senoides, até 50 c/s para triangular, até 1kc/s para FSK e até uns 2c/s para varreedura.

Teria que ver se o firmware caberia nos 2k de flash e se dessem menos que 224 registros.

Segue o diagrama em blocos do esquema.

Imagem

MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor proex » 05 Jul 2012 09:47

Isso deve ficar mais legal ainda com um Encoder Rotativo para ajuste de frequencia.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor ze » 05 Jul 2012 10:23

moris algo me diz que voce já leu
http://www.analog.com/static/imported-f ... AN-557.pdf
ou escreveu (...não leu, o palco meu). ou oceis 2 trabalham na mesma frequência
detalhe do tempo que o cara levou para fazer o sw. ele deve ter feito em asm.(apesar de eu não conhecer detalhes. só este).
Eu tenho um algoritimo - uma função - em c pra ler encoder caso desejes (na verdade tenho que procurar)
resolvi dar uma olhadela com óculos no circuito do cara. "parece ter" um errinho bobo. ou o bobo sou eu (+provável).
sucessos
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor MOR_AL » 05 Jul 2012 12:02

proex escreveu:Isso deve ficar mais legal ainda com um Encoder Rotativo para ajuste de frequencia.


Considerando que meu trabalho foi apenas verificar o uso do AD9850 como um gerador de frequências senoidais e quadradas, e incluindo modulação FM (FM senoidal, FM triangular, FM sweep e FM FSK), eu visualizei as possibilidades desse chip.
Considerando, também, que a faixa total de frequências pudesse ser ajustada entre 1Hz e 40MHz, achei que colocar um encoder ficaria mais demorado setar a frequência dentro de toda essa faixa. Acho que teria que ter algum botão que estabelecesse quanto de frequência variaria para cada variação no encoder.
Eu quis simplificar a coisa.
Com um teclado, muito necessário para outras tarefas nesse trabalho, eu poderia usá-lo também para digitar, diretamente, o valor da frequência.
O gerenciamento com o uC faria o resto.
Sendo assim, o encoder poderia ser dispensado.
O teclado com 16 teclas utilizaria apenas um pino de entrada para o PIC. Tem um AN, ou coisa que o valha, que mostra como fazer o teclado com apenas um pino de IO.
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor MOR_AL » 05 Jul 2012 12:36

Oi, Lellis!

Não tinha visto o AN da AD.
Tive que dar uma olhada rápida, pois são 27 páginas (em inglês).
Do pouco que entendi, parece que ele usou o AD9850 com o propósito de utilizá-lo em um transmissor (?) para radioamadorismo. Daí o circuito bem maior que o necessário para um gerador de funções.
Outro detalhe é a parte mecânica que ele usou no encoder. Nunca trabalhei com encoders eletro-mecânicos e nem sei porque ele usou um "feito em casa".
Outro detalhe é que ele fez o projeto do oscilador, que é necessário para o AD9850. O que havia sido discutido antes, era que o gerador discreto que eu estou tentand.. errr, fazendo poderia ser feito com menos componentes, daí a idéia do AD9850. Baseado nessa premissa, me foi mostrado um circuito básico no Ebay, que continha o AD9850, o oscilador de 125Mc/s e o filtro passa-baixas elíptico. Então "peguei o gancho" da idéia a partir daí. Um gerador com o circuitinho vendido no Ebay. Observe que no meu diagrama em blocos há esse circuitinho incorporado. Cada um custa US$ 5.92 mais alguma taxa do cartão.
Já tenho muitos projetos na fila, mas eu comprei uns 4 bichinhos desses. Quem sabe eu ainda faça algo com eles.

Quanto à linguagem. Como eu quero usar o "VolksWagen" dos PICs, pois tenho alguns de sobra, fico limitado em 2k de Flash. Isso exige linguagem Assembler. Não me crucifiquem!!! Acho que até 2k não precisa usar linguagem de um pouco maior nível.
Já montei diversas rotinas que me facilitam o trabalho. A operação de multiplicação em ponto flutuante já existe pronta em um AN da Microchip, se bem que sua utilização não é tão imediata assim. Tem que ler, entender e testar. Pelo menos eu li, tentei entender e testei. Hehe!
Agradeço pela dica da AN e pela oferta de trecho em "C".
Abraço.
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor ze » 05 Jul 2012 13:40

MOR_AL escreveu:Oi, Lellis!
limitado em 2k de Flash. Isso exige linguagem Assembler.

sem desfocar o propósito só queria registrar que isso não é necessariamente uma regra. Voce pode fazer algo em c com um pic10f que tem 512 bytes de flash e 16 bytes de ram. E ouso dizer que o resultado se aproxima, se iguala ou até mesmo supera ao do asm. E nem quero comentar sobre o fato da portabilidade pra outros MC´s, tempo, etc. Mas enfim... esquece.

Eu também li aquele an ainda + rápido que voce. Se conseguir dar um pause observe o C1 do circuito estranhamente posicionado. Claro aquele circuito tem proposito diferente do teu, mas voce não há de negar algumas similaridades com o teu, pic, teclado, display, etc

Só pra registro, pra uma faixa de freq menor (tipo a de audio) voce poderia usar apenas o MC não é? Com um um pouco mais melhor (e + barato que o pic) talvez chegue num ultrasomzinho básico, não é de novo? (já sei, vais usar o que tens...)

Enfim, como sempre vai postando teu sucesso aí pra módi nói vê e falando nele...
sucessos amigo!
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor enigmabox » 05 Jul 2012 16:31

MOR_AL,

Já que tu tem varios PICs ai, porque tu nao usa um PIC(1) pra controlar teclado e LCD e este conecta via I2C ou SPI ou TWI a um outro PIC(2) que controla o AD9850?
Vai sobrar mais espaço pra codigo....
Poderia depois num projeto futuro , quando acabarem seus PICs....heheheh, usar um outro MCU com DAC pra gerar as formas de onda, eu estou testando um ARM da ST Cortex3 que tem DAC, DMA e outras tralhas internas e ja tem uns recursos internos pra gerar formas de onda....
:wink:
enigmabox
 

Mensagempor MOR_AL » 05 Jul 2012 22:42

enigmabox escreveu:MOR_AL,

Já que tu tem varios PICs ai, porque tu nao usa um PIC(1) pra controlar teclado e LCD e este conecta via I2C ou SPI ou TWI a um outro PIC(2) que controla o AD9850?
Vai sobrar mais espaço pra codigo....
... É verdade, mas aí a brincadeira fica sem graça ...
Poderia depois num projeto futuro , quando acabarem seus PICs....heheheh, usar um outro MCU com DAC pra gerar as formas de onda, eu estou testando um ARM da ST Cortex3 que tem DAC, DMA e outras tralhas internas e ja tem uns recursos internos pra gerar formas de onda....
... Legal, conte mais sobre isso...
:wink:
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor enigmabox » 06 Jul 2012 11:04

MOR_AL,

Estou estudando e praticando numa placa da ST, com o mcu STM32F100RB Cortex3 de 24mhz que paguei 52 reais.
No chip utilizado, incorpora ADC, DAC(2 canais), DMA, SPI, I2C, etc....
O periferico DAC , segundo o datasheet, pode trabalhar com 8 ou 12bits, possui recurso para geração de ruidos, geração de onda triangular, pode ser utilizado o canal DMA com o DAC.
É um chip bem basico da linha, mas tem varios recursos, pode ser criado uma forma de onda em RAM e fazer com que o DMA mande para o DAC automaticamente.
Utilizando para baixas frequencias deve servir. Diferente do AD9840 que trabalha em frequencias mais altas.
Este AD9840 custa mais de 100 reais na Farnell, acho bem caro. Pode ser que utilizando um microcontrolador com DMA e DAC de maior velocidade, possa fazer quase o mesmo trabalho do AD9850, com menor custo.
enigmabox
 

Mensagempor enigmabox » 06 Jul 2012 11:08

MOR_AL,

Estou estudando e praticando numa placa da ST, com o mcu STM32F100RB Cortex3 de 24mhz que paguei 52 reais.
No chip utilizado, incorpora ADC, DAC(2 canais), DMA, SPI, I2C, etc....
O periferico DAC , segundo o datasheet, pode trabalhar com 8 ou 12bits, possui recurso para geração de ruidos, geração de onda triangular, pode ser utilizado o canal DMA com o DAC.
É um chip bem basico da linha, mas tem varios recursos, pode ser criado uma forma de onda em RAM e fazer com que o DMA mande para o DAC automaticamente.
Utilizando para baixas frequencias deve servir. Diferente do AD9840 que trabalha em frequencias mais altas.
Este AD9840 custa mais de 100 reais na Farnell, acho bem caro. Pode ser que utilizando um microcontrolador com DMA e DAC de maior velocidade, possa fazer quase o mesmo trabalho do AD9850, com menor custo.
enigmabox
 

Mensagempor enigmabox » 06 Jul 2012 11:18

MOR_AL,

Estou estudando e praticando numa placa da ST, com o mcu STM32F100RB Cortex3 de 24mhz que paguei 52 reais.
No chip utilizado, incorpora ADC, DAC(2 canais), DMA, SPI, I2C, etc....
O periferico DAC , segundo o datasheet, pode trabalhar com 8 ou 12bits, possui recurso para geração de ruidos, geração de onda triangular, pode ser utilizado o canal DMA com o DAC.
É um chip bem basico da linha, mas tem varios recursos, pode ser criado uma forma de onda em RAM e fazer com que o DMA mande para o DAC automaticamente.
Utilizando para baixas frequencias deve servir. Diferente do AD9840 que trabalha em frequencias mais altas.
Este AD9840 custa mais de 100 reais na Farnell, acho bem caro. Pode ser que utilizando um microcontrolador com DMA e DAC de maior velocidade, possa fazer quase o mesmo trabalho do AD9850, com menor custo.
enigmabox
 

Mensagempor MOR_AL » 06 Jul 2012 13:56

enigmabox escreveu:MOR_AL,

Estou estudando e praticando numa placa da ST, com o mcu STM32F100RB Cortex3 de 24mhz que paguei 52 reais.
...
Este AD9840 custa mais de 100 reais na Farnell, acho bem caro. Pode ser que utilizando um microcontrolador com DMA e DAC de maior velocidade, possa fazer quase o mesmo trabalho do AD9850, com menor custo.


O AD9840 está obsoleto. É sugerido o AD9840A.
Deve ser por isso é que o AD9840 é caro.

Seu mcu, mesmo com todos esses recursos, com um clock de 24Mc/s, não deve fazer frente ao AD9850.
Os tempos do AD9850, segundo o manual, são menores que 10ns. Ora 3,5ns, ora 7ns. Com isso a frequência da senóide fornecida, pode chegar a 41MHz.
Como informei em postagem anterior, o que limita o AD9850 é o mcu que o gerencia. Mesmo assim se for usado para modulação em frequência.
No Ebay eles vendem a plaquinha com o AD9850 montado, com o oscilador de 125Mc/s e com o filtro passa-baixas elíptico (porretasso) por menos de 6 Obamas. Comprei mesmo que não vá montá-lo.
Só para fazer a plaquinha em casa já daria uma dor de cabeça. Acho que eles viabilizaram o produto com todas essas facilidades.

Em tempo:
Descobri, que após clicarmos "Enviar" e ficar demorando para continuar, não se deve clicar outra vez "Enviar". Se fizermos isso, a postagem é repetida.
Quando clico "Enviar" e demora, faço o seguinte:
1 - Copio minha postagem para o clipboard (seleciono e "Cntrl + C").
2 - Clico "Esc" para parar de tentar concluir.
3 - Reabro o tópico. Quase sempre minha postagem já se encontra lá. Caso não se encontre, vou para o item 4.
4 - Refaço a postagem com "Cntrl + V".
(Viu! Funcionou!)
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor enigmabox » 06 Jul 2012 15:16

MOR_AL

Outra coisa que pode ser feita, mas fica mais cara, é usar um FPGA ou CPLD com uma memoria RAM. Geralmente os FPGAs atingem 100mhz ou mais. O mcu ficaria com a função de carregar a RAM externa do FPGA com os dados referentes ao sinal a ser gerado.
Comprei uns Spartans3AN que nao necessitam toda hora carregar o codigo , possuem memoria flash, fica mais facil, depois é só ligar uns resistores na porta de saida simulando um DAC e um operacional de alta velocidade....
Tá dificil postar, tem hora que nem volta mais o site, dá erro de database...
enigmabox
 

Mensagempor MOR_AL » 06 Jul 2012 22:52

enigmabox escreveu:MOR_AL

Outra coisa que pode ser feita, mas fica mais cara, é usar um FPGA ou CPLD ... depois é só ligar uns resistores na porta de saida simulando um DAC e um operacional de alta velocidade....
Tá dificil postar, tem hora que nem volta mais o site, dá erro de database...


Existem mil maneiras de fazer a coisa...
Tudo dependerá das diretivas. O mais barato, o mais rápido, com esse detalhe, com aquele... :)

Sobre o tempo depois de "Enviar"...
Depois que clicar "Enviar", aguardo cerca de 30s. Se ainda não saiu da página, então clico "Esc".

MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Próximo

Voltar para Circuitos Diversos

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x