collapse

* Links de Robótica

* Posts Recentes

Compra colectiva seeedstudio por beirao
[Ontem às 23:06]


Robot Wars International Special por beirao
[12 de Dezembro de 2017, 22:52]


Docker por nnr
[12 de Dezembro de 2017, 13:41]


Comprar transformador de +/-12Volts por jm_araujo
[12 de Dezembro de 2017, 10:16]


Embedded World 2018 por KammutierSpule
[12 de Dezembro de 2017, 09:05]


Esquema Fonte Bancada por almamater
[12 de Dezembro de 2017, 08:13]


Meu projecto - Arm Robot com arduino por Diogo Bento
[11 de Dezembro de 2017, 23:18]


Ajuda Projecto IR / RF por dio123
[09 de Dezembro de 2017, 10:53]


Drivers Arduino UNO! por dio123
[09 de Dezembro de 2017, 10:46]


Problema em converter codigo C arduino para C + Pigpio na raspberry por vasco
[08 de Dezembro de 2017, 19:22]

Autor Tópico: Recomendação de um opamp para um DAC r2r  (Lida 455 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline vasco

  • Mini Robot
  • *
  • Mensagens: 92
Recomendação de um opamp para um DAC r2r
« em: 21 de Novembro de 2017, 18:17 »
Estou a fazer um dac r2r usando resistências 0805 de 1%, a  placa chegou hj da easyeda só me faltam as resistências que ás tantas vêm com os Reis Magos... :-( (desculpem a qualidade da imagem, tenho pouca luz aqui).



Pelo pouco que percebo da teoria é suposto o sinal de um destes dacs ser muito fragil e tem que ser buffered com um opamp.

Encontrei uns posts interessantes no EEVblog mas já são de 2015 e queria perguntar qual o opamp atual que será recomendado para esta função.
Falam lá de opamps rail-to-rail que teriam a vantagem de conseguir trabalhar entre os 0V e os +5 apenas com alimentação de +5V, o que me facilitava as coisas uma vez que não teria que ter uma fonte simétrica só para o opamp, mas não é grave, tenho aqui um modulozito que supostamente é capaz de dar os -5, -9 ou -12V sem complicar demasiado as coisas.

O sinal vai andar nas frequências de áudio e será produzido por um arduino (a tanto me ajude o engenho e a arte :-).

Já agora outra duvida.
Encomendei resistências de 1K, 2K, 10K e 20K. Faz alguma diferença usar as de 1K + 2K ou as 10K + 20K ?
« Última modificação: 21 de Novembro de 2017, 18:21 por vasco »

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.150
    • Tróniquices
Re: Recomendação de um opamp para um DAC r2r
« Responder #1 em: 21 de Novembro de 2017, 20:04 »
A 1ª placa de som que tive num PC foi um DAC R-2R ligado à LPT. Havia um ou outro jogo que suportavam isso, assim como MOD players. Por acaso sempre me espantou pela positiva a qualidade do som que dali saía.

Um LM358 serviria para isso, mas não é rail-to-rail. Não tenho nenhum para te recomendar, mas o que não faltam são ampops com saída e entrada rail-to-rail. Na verdade 5V de amplitude de saída é demasiado para audio se vais ligar isso a um amplificador, o sinal devia ser reduzido para ter uma amplitude máxima aí se calhar de 1V, e então um LM358 já servia. Podes ligar a uns fones (ou pequeno alto-falante) sem amplificador, mas pelo menos com uma resistência em série para limitar a corrente.

As resistências mais baixas dão um sinal de saída "mais forte" (mais difícil de ser "perturbado", capaz de alimentar cargas maiores) mas também consome mais energia. Como vais ter um ampop à frente, a parte do sinal mais forte/fraco acaba por ser irrelevante, pois é o ampop que vai dar o corpo ao manifesto.

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.181
  • NERD!
Re: Recomendação de um opamp para um DAC r2r
« Responder #2 em: 21 de Novembro de 2017, 23:05 »
Se é para áudio não precisas de componente DC, e podes meter condensadores a bloquear essa componente, e consequentemente não precisas de opamps rail-to-rail, usa o que tiveres na gaveta e funcione com 5V.

E convém cortar um bocado no nível.O nível de linha (para ligar a PC ou amplificador) costuma ser 2Vpp (pico a pico) máximo , e aprox. 0.9Vpp nominal. Se a dac estiver ligada a 5V precisas de dividir por 2/5 o sinal.

O valor das resistencias depende de vários fatores, mas eu ia primeiro para as de valor mais elevado (10k/20k). Quanto mais corrente pedires das saídas onde ligas, mais rápido vais reparar que o Voh e Vol não são especificados como Vcc e GND, e se se afastam mais com o aumento da corrente. Exercício: mete uma resistência de 10k numa saída High com a outra ponta à massa e mede a tensão na mesma. Repete com uma resistência de 1k, e depois troca as polaridades (low e +5V)


Offline vasco

  • Mini Robot
  • *
  • Mensagens: 92
Re: Recomendação de um opamp para um DAC r2r
« Responder #3 em: 22 de Novembro de 2017, 10:32 »
A 1ª placa de som que tive num PC foi um DAC R-2R ligado à LPT. Havia um ou outro jogo que suportavam isso, assim como MOD players. Por acaso sempre me espantou pela positiva a qualidade do som que dali saía.

Se bem me lembro era relativamente fácil e rápido colocar um byte na LPT a partir do MS-DOS, o que permitia coisas como o Laplink. Esse tipo de dispositivo caiu em desuso quando o windows passou a complicar muito o acesso direto ao hardware. A única coisa que liguei a um LPT para além de uma impressora foi um cabo para carregar jogos do spectrum (para um emulador) a partir de um gravador. :-)

Citar
Um LM358 serviria para isso, mas não é rail-to-rail. Não tenho nenhum para te recomendar, mas o que não faltam são ampops com saída e entrada rail-to-rail. Na verdade 5V de amplitude de saída é demasiado para audio se vais ligar isso a um amplificador, o sinal devia ser reduzido para ter uma amplitude máxima aí se calhar de 1V, e então um LM358 já servia. Podes ligar a uns fones (ou pequeno alto-falante) sem amplificador, mas pelo menos com uma resistência em série para limitar a corrente.

Para o output estava a pensar ou ligar um daqueles amps minúsculos (baseados no PAM8403, são práticos porque têm um pot de volume) ou enfiar simplesmente um transístor e ligar a um alto-falante de pc (0.5W, 8ohm).

Offline vasco

  • Mini Robot
  • *
  • Mensagens: 92
Re: Recomendação de um opamp para um DAC r2r
« Responder #4 em: 22 de Novembro de 2017, 11:02 »
Se é para áudio não precisas de componente DC, e podes meter condensadores a bloquear essa componente, e consequentemente não precisas de opamps rail-to-rail, usa o que tiveres na gaveta e funcione com 5V.

Ok, acho que tenho qq coisa que não precisa de alimentação simétrica.
Já por várias vezes li que o opamp "xptoxyz" é péssimo para áudio... Quando dizem isto estão a falar de quê ? Distorção ? Isso não é mau em qq amp quer seja para áudio quer não ?

Citar
E convém cortar um bocado no nível.O nível de linha (para ligar a PC ou amplificador) costuma ser 2Vpp (pico a pico) máximo , e aprox. 0.9Vpp nominal. Se a dac estiver ligada a 5V precisas de dividir por 2/5 o sinal.

OK, isto terá que ser feito depois do opamp, certo ? Se fizer antes destruo o sinal.

Citar
O valor das resistencias depende de vários fatores, mas eu ia primeiro para as de valor mais elevado (10k/20k). Quanto mais corrente pedires das saídas onde ligas, mais rápido vais reparar que o Voh e Vol não são especificados como Vcc e GND, e se se afastam mais com o aumento da corrente. Exercício: mete uma resistência de 10k numa saída High com a outra ponta à massa e mede a tensão na mesma. Repete com uma resistência de 1k, e depois troca as polaridades (low e +5V)

É suposto a corrente ser menor com a resistência de maior valor. Logo a ddp será maior.
Faz sentido nesta fase trabalhar com correntes menores e só fazer a amplificação mesmo antes do output.

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.181
  • NERD!
Re: Recomendação de um opamp para um DAC r2r
« Responder #5 em: 22 de Novembro de 2017, 12:09 »
Citar
E convém cortar um bocado no nível.O nível de linha (para ligar a PC ou amplificador) costuma ser 2Vpp (pico a pico) máximo , e aprox. 0.9Vpp nominal. Se a dac estiver ligada a 5V precisas de dividir por 2/5 o sinal.
OK, isto terá que ser feito depois do opamp, certo ? Se fizer antes destruo o sinal.

Eu fazia antes do opamp, assim evitas a necessidade de ser rail-to-rail.
Como a impedância de saída de um R-2R é constante e igual a R, para dividir por 2/5 é basta usar uma resistência à massa de 2/3R (fiz as contas). Ou usas a impedância de entrada do opamp, o que dá algo assim:


(VGND é uma "virtual ground" a 2.5V, não é para ligar à GND do sistema. Metí o simbolo para dar isso a entender)
« Última modificação: 22 de Novembro de 2017, 12:11 por jm_araujo »

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.150
    • Tróniquices
Re: Recomendação de um opamp para um DAC r2r
« Responder #6 em: 22 de Novembro de 2017, 12:33 »
O valor das resistencias depende de vários fatores, mas eu ia primeiro para as de valor mais elevado (10k/20k). Quanto mais corrente pedires das saídas onde ligas, mais rápido vais reparar que o Voh e Vol não são especificados como Vcc e GND, e se se afastam mais com o aumento da corrente. (...)

Bem lembrado.

Offline vasco

  • Mini Robot
  • *
  • Mensagens: 92
Re: Recomendação de um opamp para um DAC r2r
« Responder #7 em: 23 de Novembro de 2017, 09:16 »
(VGND é uma "virtual ground" a 2.5V, não é para ligar à GND do sistema. Metí o simbolo para dar isso a entender)

Ou seja, é usado como "negativo" do sinal de áudio para o amplificador. Percebi bem ?
Reduz-se a amplitude elevando o negativo, em vez de descendo o sinal, é essa a ideia ?

Continuo à espera das resistências... :-(
O opamp que tenho é o ua741

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.181
  • NERD!
Re: Recomendação de um opamp para um DAC r2r
« Responder #8 em: 23 de Novembro de 2017, 10:48 »
(VGND é uma "virtual ground" a 2.5V, não é para ligar à GND do sistema. Metí o simbolo para dar isso a entender)

Ou seja, é usado como "negativo" do sinal de áudio para o amplificador. Percebi bem ?
Sim
Citar
Reduz-se a amplitude elevando o negativo, em vez de descendo o sinal, é essa a ideia ?
Não.
"Eleva-se" o negativo para o opamp trabalhar a meio da tensão de alimentação. Assim as entradas não tem de chegar perto das alimentações e não precisas de um "rail-to-rail".
A redução da amplitude é por via da resistência de entrada. Uma DAC R-2R tem uma impedância (=resistência para o caso) de saída igual a R. Se a ligares a outra resistência à massa  fazes um divisor de tensão (https://pt.wikipedia.org/wiki/Divisor_de_tens%C3%A3o). Na configuração inversora de um Opamp (a usada) a impedância de entrada é igual à resistência lá colocada (a de 6.8k à esquerda), e está efetivamente a reduzir o sinal. O condensador pode ser ignorado porque está só para bloquear DC e as frequencias que queres trabalhar (Audio) estão acima da frequência de corte.

Mas se tens dúvidas nada como meter o mesmo num simulador, podes trocar a DAC por uma fonte de sinal com 10k(R)  em série.

Citar
Continuo à espera das resistências... :-(
O opamp que tenho é o ua741

O 741 não funciona só com 5V de alimentação, precisa no mínimo de +10V e -10V. Mais vale arranjar outro. Se não quiseres esperar, acho que tenho uns LM324 na gaveta que já dão para trabalhar com +5V. Não são grande espingarda em termos de caraterísticas, mas desenrascam.

Offline vasco

  • Mini Robot
  • *
  • Mensagens: 92
Re: Recomendação de um opamp para um DAC r2r
« Responder #9 em: 25 de Novembro de 2017, 23:50 »
A redução da amplitude é por via da resistência de entrada. Uma DAC R-2R tem uma impedância (=resistência para o caso) de saída igual a R. Se a ligares a outra resistência à massa  fazes um divisor de

Então acho que fiz asneira no desenho do meu dac, tenho 90K entre o pino de saída e o GND. :-(

Citar
Mas se tens dúvidas nada como meter o mesmo num simulador, podes trocar a DAC por uma fonte de sinal com 10k(R)  em série.

Nunca usei um simulador, outro assunto para investigar. Recomendas algum em particular ? O easyeda tem algumas capacidades nesse sentido mas nunca investiguei.

Citar
O 741 não funciona só com 5V de alimentação, precisa no mínimo de +10V e -10V. Mais vale arranjar outro. Se não quiseres esperar, acho que tenho uns LM324 na gaveta que já dão para trabalhar com +5V. Não são grande espingarda em termos de caraterísticas, mas desenrascam.

À partida não terei dificuldade em alimentar o opamp com +12 e -12. Isso já me permitiria usar o 741, certo ?
Estive a escarafunchar na ebay, o AD8629 será uma boa escolha? Parece ser capaz de trabalhar apenas com +5V e ainda é rail to rail.

Abaixo o meu primeiro encontro com SMT, confesso que quando recebi as resistências estive quase a desistir (devia ter usado 1210 em vez de 0805), mas lá consegui, não está exatamente uma obra de arte mas acho que não é culpa da solda eu estar a medir valores esquisitos... :-(

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.181
  • NERD!
Re: Recomendação de um opamp para um DAC r2r
« Responder #10 em: 26 de Novembro de 2017, 23:35 »
A redução da amplitude é por via da resistência de entrada. Uma DAC R-2R tem uma impedância (=resistência para o caso) de saída igual a R. Se a ligares a outra resistência à massa  fazes um divisor de

Então acho que fiz asneira no desenho do meu dac, tenho 90K entre o pino de saída e o GND. :-(
Não fizeste nada, medes isso porque não tens as entradas ligadas. Quando meteres sinal vai para o valor certo, uma forma de confirmares é ligares do 0 ao 7 ao GND e medires a resistência entre o Out e o GND, vais ver que dá 10k.
Citar
Citar
Mas se tens dúvidas nada como meter o mesmo num simulador, podes trocar a DAC por uma fonte de sinal com 10k(R)  em série.

Nunca usei um simulador, outro assunto para investigar. Recomendas algum em particular ? O easyeda tem algumas capacidades nesse sentido mas nunca investiguei.
Só costumo usar o LTSpice. Algo denso, mas com uma boa comunidade e bastante poderoso.
Citar
Citar
O 741 não funciona só com 5V de alimentação, precisa no mínimo de +10V e -10V. Mais vale arranjar outro. Se não quiseres esperar, acho que tenho uns LM324 na gaveta que já dão para trabalhar com +5V. Não são grande espingarda em termos de caraterísticas, mas desenrascam.

À partida não terei dificuldade em alimentar o opamp com +12 e -12. Isso já me permitiria usar o 741, certo ?
Certo
Citar
Estive a escarafunchar na ebay, o AD8629 será uma boa escolha? Parece ser capaz de trabalhar apenas com +5V e ainda é rail to rail.
Não estou muito por dentro do mercado, mas numa vista de olhos por alto não vejo razões para não servir para esse fim.
Citar

Abaixo o meu primeiro encontro com SMT, confesso que quando recebi as resistências estive quase a desistir (devia ter usado 1210 em vez de 0805), mas lá consegui, não está exatamente uma obra de arte mas acho que não é culpa da solda eu estar a medir valores esquisitos... :-(

As soldaduras parecem-me bem. Consegues melhorar um bocado o aspeto se usares mais fluxo, o que vem na solda é pouco quando se trabalha em SMD, com fluxo extra ficam mais homogéneas.

Se os valores entre pinos foram  medidos (os 20K e 50k), os valores medidos à massa não fazem sentido. Ainda pensei que seriam restos do fluxo da solda que fosse algo condutor (resolvia-se com uma lavagem da placa com escova de dentes e álcool), mas não pode ser. Confirma que tens a pilha boa no multímetro e se puderes confronta com um equipamento de medida diferente.
O que me leva a dizer que não faz sentido é a diferença entre o pino 7 e o out. Só têm uma resistência de 20k entre eles sem derivações a partir do pino 7. Portanto a diferença de resistência à massa entre ambos tem de ser 20k, não há outra hipótese.
« Última modificação: 26 de Novembro de 2017, 23:36 por jm_araujo »

Offline vasco

  • Mini Robot
  • *
  • Mensagens: 92
Re: Recomendação de um opamp para um DAC r2r
« Responder #11 em: 29 de Novembro de 2017, 12:42 »
Tenho que comprar fluxo em pasta.
A caneta que tenho está praticamente vazia, ajuda mas não resolve. Nesta foto já tinha feito uma limpeza com alcool.

Já testei o dac com o osciloscópio e diria que está a funcionar, estou simplesmente a enviar uma sinusoidal a partir de um array de 256 pontos.
Não estou a conseguir exatamente a frequência que quero, mas fico na duvida se não será o osciloscópio que não consegue uma medida decente (é um DSO 138 fake) mas é mais provável que tenha a ver com o tempo em que as instruções dentro do while demoram a ser executadas. Vou agora trabalhar no opamp para ver se consigo fazer algum barulho :-)
Para facilitar (mais memória e montes de PORTs) estou a usar um arduino Mega, mas isto é para correr num Nano ou num Micro (leonardo) pelo que o array terá no máximo uns 64 pontos.

Tive uma serie de confusões com os float, doubles, longs, etc... lá acabei por me lembrar que nas contas e nas atribuições tinha que se por um .0... Nem percebi muito bem onde

DDRK=0xff;
double freq=430.0;
double delayval=((1.0/freq)/num_steps)*1000000

while(1)
{
    PORTK=sinearray[idx];
    delayMicroseconds(delayval);
    idx++;
    if(idx > num_steps) idx=0;
}

Alguém tem ideia se este loop poderá ser facilmente convertido para assembly AVR ? Seria talvez mais fácil ter uma medida exata para ajustar o valor de delay de acordo com o tempo que o loop demora a executar.
Se o array tiver sempre 256 pontos, pode-se dispensar o if usando um idx do tipo BYTE, irá fazer o overflow no ponto certo.

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.150
    • Tróniquices
Re: Recomendação de um opamp para um DAC r2r
« Responder #12 em: 29 de Novembro de 2017, 13:43 »
Um ciclo desses nunca vai dar a frequência calculada. Mesmo que compenses o tempo de execução da estrutura do ciclo e manipulação do porto etc no valor do delay, vais sempre ter interrupções a estragar o timming além de que a delayMicrosseconds() se bem me lembro tem um erro de até 4us.
Eu usava uma interrupção periódica (usando um timer) para escrever o valor no DAC.

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.181
  • NERD!
Re: Recomendação de um opamp para um DAC r2r
« Responder #13 em: 29 de Novembro de 2017, 13:51 »
delayMicroseconds aceita um parâmetro unsigned int, pelo que delay val não precisa de ser double, e até te pode estar a atrasar se o arduino estiver a fazer a conversão todos os ciclos de double para int.

O problema que tinhas com floating point não precisa de ter tudo definido com float(/double) para ser resolvido. Em C/C++ o resultado é mantido no "menor" tipo necessário. Assim se fizeres "1/5" o resultado é int porque ambos os numeros são int. Mas basta um deles serem double para ser elevado de nível.
Para o teu exemplo o mais simples que dava o mesmo resultado seria:
Código: [Seleccione]
unsigned int freq=430;
unsigned int  delayval=((1.0/freq)/num_steps)*1000000
Ao meter o "1.0" a primeira operação matemática que faz "eleva" a conta a double e obténs o mesmo resultado.


Quanto ao timing perfeito, é possível complilando "à mão" (linha de comandos) obter os ficheiros intermédios de compilação e ver o código assembler gerado.
Mas é como o NJay diz, o arduino tem uma carrada de interrupts já configurados que te vão lixar sempre. A melhor solução é meter um timer a gerar-te uma interrupção onde metes o código que atualiza o valor da DAC.


Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.150
    • Tróniquices
Re: Recomendação de um opamp para um DAC r2r
« Responder #14 em: 29 de Novembro de 2017, 14:24 »
Para o teu exemplo o mais simples que dava o mesmo resultado seria:
Código: [Seleccione]
unsigned int freq=430;
unsigned int  delayval=((1.0/freq)/num_steps)*1000000

Nesta aplicação nem precisava de ser real, porque

((1.0/freq)/num_steps)*1000000 = 1000000 / freq / num_steps

e é tudo inteiro :)