Boa Tarde.

Estou fazendo um trabalho na faculdade que necessita o uso do amplificador (AD822an). O projeto irá trabalhar com valores de tensão baixa (entre 0 e 0.140mV). Porém o Arduino não tem muita precisão para leitura desses valores. Fiz a simulação através do Proteus, como mostra a Foto:

A simulação o resultado bate. Mas na hora de testar na protoboard a saída está dando o mesmo valor gerado pelo Arduino, 5 Volts. 

A foto não ficou muito clara. Mas tentarei esclarecer:
Cabo Laranja: Saída
Cabo Cinza da Esquerda: Negativo do Sensor
Cabo Roxo: Negativo
Cabo Vermelho: Positivo do Sensor
Cabo Cinza da Direita: Positivo (+5V)

Se alguém puder me ajudar, pois não sei onde estou errando. Já simulei diversas vezes. 
Desde já agradeço.

Exibições: 1518

Responder esta

Respostas a este tópico

Segue em anexo o código: sensor_radiacao.ino

olá Amanda, boa tarde.

       Pela sua foto, há uma ligação incorreta.   A realimentação do pino 2 do AD822 não está ligada ao ponto de junção dos dois Resistores. Veja na figura a seguir onde evidencio isto:

(clique na figura para "zoom")

      Note que o fio "cinza curto"  sai do pino 2 do AD822, mas chega no ponto errado no Protoboard. Assim o pino 2 fica "flutuando" e a saída do AD822 satura, motivo pelo qual vc obtém os 5V na saída (já que o AD822  tem saídas "Rail to Rail").

      Na figura anterior, a seta na cor verde aponta onde o fio deveria estar ligado.

      Mas há também um outro problema na sua montagem no Protobord:  o AmpOp que está sobrando, não deve ser deixado sem conexão.  Se vc não o usar (mas aconselho usar e vou te dar uma grande dica num post seguinte), então ligue ele no modo "Seguidor de Tensão" (ligue o pino 7 ao pino 6  e aterre o pino 5).  Isto é absolutamente necessário se vc não usar o AmpOp que está sobrando.

      Mas saiba que esta topologia que vc está usando, não é a mais adequada.  Se vc acrescentar mais 4 resistores ao seu circuito, terá uma topologia extremamente versátil e com desempenho excepcional. Caso queira saber como, pergunte e eu te explico em post seguinte.

      Também,  há alguns cuidados a tomar ao ligar a saída do AmpOp à entrada analógica do Arduino. Te direi como, em post seguinte.

      Veja:  o AD822 é um excelente AmpOp. Mas não é dos mais baratos (diria que está entre os mais carinhos).  Há alternativas de AmpOp Single Supply (e "Rail to Rail")  mais baratas e vc obterá praticamente o mesmo resultado.

      Caso tenha alguma dúvida, não deixe de perguntar.

      Abrçs,

      Elcids

Boa noite, Elcids. 

Muito obrigada, não tinha reparado esse detalhe. Irei refazer toda a montagem com mais atenção agora.
Se não for muito incomodo e tiver como me ajudar, fico grata. Realmente esse AmpOp é caro, mas dizem ser excelente para a minha finalidade. Vou trabalhar com valores extremamente baixo de tensão (para o Arduino pelo menos). Preciso ler em sua entrada valores entre 0 a 0.140mV e obter um valor na saída entre 0 e 1.1 Volts de forma linear.

Bem, montei tudo novamente. A noticia boa é que a tensão na saída diminuiu para 3V a ruim é que ainda não é a tensão esperada. A foto está ruim, mas fiz o que você recomendou sobre os pinos.

Olá novamente Amanda.

      Ok, então vc constatou que a ligação estava com aquele erro.

      Me parece que vc também fez a ligação do AmpOp "sobrante" para "Seguidor de Tensão", conforme eu recomendei. Mantenha isso em mente sobre qualquer "AmpOp" que esteja sobrando no seu Sistema.  Se algum AmpOp "sobrante" é simplesmente "largado" sem ligação alguma, ele pode oscilar (isto vai depender do ambiente e da montagem física do circuito), e isto em frequências altas (onda quadrada entre 10kHz a 10MHz, dependendo do modelo do AmpOp). Se esta oscilação ocorrer, ela terá várias consequências, mas duas são as principais:  o aumento significativo do consumo de energia do CI (porque a oscilação é em onda quadrada e provoca spikes de corrente durante os chaveamentos em alta-frequência do push-pull de saída), e poderá contaminar o outro AmpOp que existe no mesmo CI (isto ocorre por causa de capacitâncias parasitas no "substrato" interno do CI, e por spikes de alta-frequência introduzidos na alimentação).

      Sobre a questão da tensão ainda estar incorreta, provavelmente é por causa da topologia do circuito que vc está usando associada ao tipo do sinal que vc está amplificando (isto tem a ver em como seu Sensor é "alimentado").

      Como eu te disse no post anterior,  há uma topologia excelente para o seu caso, e vc poderá usar até AmpOps mais baratos (por exemplo o MCP607 ou MCP609, que custam 1/4 do preço do AD822).

      Veja por exemplo este post, onde eu demonstrei que é possível obter um ótimo resultado onde antes parecia impossível, e que pode te trazer alguns esclarecimentos sobre como fazer estas coisas, no link aqui no LDG:   "ACS712 - Erros na leitura"

       E no seu caso, me parece ainda mais tranquilo de se obter um ótimo resultado, se comparado à dificuldade com a questão do ACS712 do post que mencionei.

      Vou fazer um desenho de como vc deve ligar para obter um excelente resultado e colocarei aqui logo em seguida.

      Mas ajudaria bastante se vc descreve qual o "sensor" vc está usando, para que eu tenha certeza de que haverá casamento perfeito entre a saída do Sensor e a faixa de entrada do Amplificador.

      Se possível publique fotos e qual o part-number deste sensor (e eventuais links com dados técnicos). É extremamente importante saber como o Sensor é "alimentado".

      Abrçs,

      Elcids

Olá Elcids.  

Não estou mais no laboratório, amanhã cedo tiro fotos do sensor. Mas não é um sensor comercial, é um sensor que estou desenvolvendo. Esse sensor é baseado em uma célula fotovoltaica, ou seja, sua saída é uma tensão que varia conforme o índice de irradiância solar. Ele está configurado para fornecer uma tensão máxima de 0.140mV. O amplificador entra nessa história para deixar os valores mais lineares e precisos. Pois conectando direto na porta analógica do Arduino os dados não são precisos. 

Irei ler agora esse tópico que você indicou. Sobre o esquema, eu agradeceria muito também.

Abraços. 

Amanda boa noite,

Os amplificadores operacionais da Analog Devices são top! O amigo Elcids já descobriu o erro da sua montagem. 

Sugestões para evitar erros em montagem:

  • O fios de ligação de +VCC use na cor vermelha
  • os fios de ligação de -VCC (no seu caso GND) use na cor preta. 
  • diante do diagrama da montagem, colora cada ligação com uma caneta de marca texto. 
  • Verifique todas as ligações antes de ligar a energia

Eu sou fã da Analog Devices. E eles disponibilizam na web, muito material para estudo!

https://www.analog.com/en/analog-dialogue/studentzone.html

https://www.analog.com/en/search.html?q=*&Filters=resource_type...

Recomendo essas apostilas (top) da Texas Instruments:

( download grátis)

Analog Engineer’s Circuit Cookbook: Amplifiers

https://www.ti.com/seclit/sl/slyy137a/slyy137a.pdf

The Signal - A compendium of blog posts on op amp design topics

https://exhibitors.electronica.de/download/1121_11_8_2860_8_1_800/2...

http://e2e.ti.com/blogs_/archives/b/thesignal

Sobre como configurar o outro Op Amp que não esta sendo usado, veja esse tópico da Texas:

http://e2e.ti.com/blogs_/archives/b/thesignal/archive/2012/11/27/th...

Como o Elcids disse, é importante que forneça as características do sensor, para sabermos como usá-lo corretamente. 

Dependendo da célula fotovoltaica, ela poderá precisar de uma carga(por exemplo resistor) para que consiga medir a tensão corretamente. 

Eu desenvolvi um projeto em 2018, que é um Voltímetro de precisão com o ESP32. Ganhei uma menção honrosa no concurso que eu disputei com esse projeto. 

Se interessar, é possível montá-lo com Arduino também. 

ESP32 Digital Voltmeter

https://www.elektormagazine.com/labs/esp32-digital-voltmeter

Faz medições de tensões positivas ou negativas entre +1,9999 V e -1,9999 V. (4 casas decimas) 

Ele possui alta estabilidade nas leituras e muita precisão ( o que o conversor ADC do Arduino não tem!) 

As medições podem ser transmitidas via Bluetooth ou WIFI com o ESP32. 

Bom dia, Gustavo. 

Fico grata pelas dicas e pelos materiais, será de grande utilidade. Com relação ao sensor eu fiz um cálculo a partir da máxima corrente de curto circuito fornecida. Dessa forma,  calculei a resistência a ser usada para a tensão que eu desejava obter.

Elcids, Bom dia.

O sensor que estou desenvolvendo é este da foto abaixo. Antes de comprar o AmpOp, estava usando um Filtro RC para tirar um pouco de ruído na entrada analógica. Também usei no meu código uma média móvel, esses feitos ajudaram bastante o sinal ficar linear, mas longe da precisão que desejo alcançar.


O fabricante diz que essa célula fornece uma tensão de 0.5V e uma corrente de 100mA. Mas isso não importa muito, pois a tensão que necessitamos é de no máximo 0.140mV. Para isso, foi calculada uma resistência para ser colocada em paralelo logo na saída do sensor (não dá para ver, mas a resistência fica atrás do sensor).

Espero ter tirado as dúvidas que ficaram. 

Eu tenho muita experiência com conversores ADC e DAC, pois adoro essa tecnologia e a estudo a muito anos.Se pretende usar o ADC do Arduino, sempre informo essas dicas para os colegas do LAB.

  • Primeiro ponto é em relação a tensão de referência AREF (analogic Reference). Todas medições são comparadas com essa tensão. Portanto essa tensão tem que ser regulada e estabilizada. Se ela variar, todas as medidas serão incorretas. Use um capacitor de 10uF conectado do pino AREF(+)  ao terra(-). Isso evitará ruídos e oscilações nessa  tensão. Meça a tensão AREF com um voltímetro de precisão, para aferir o cálculo no Sketch. A Tensão AREF pode ser gerada internamente no ATMega328 ou pode ser alimentada com um Voltage Reference externo. Recomendo que forneça no conector de alimentação do Arduino,  uma tensão de 7 a 12V (pode usar uma fonte externa).  Pois se alimentar o Arduino através do conector USB, a tensão AREF pode não chegar aos 5,0V e ficar instável (fiz testes para comprovar isso).
  • o uso de capacitores de desacoplamento nas entradas, evitam ruídos e interferências. Mas o valor do capacitor dependerá da taxa de variação do sinal. Capacitores com 10nF normalmente dão bom resultado.
  • Como as 8 entradas do ADC são multiplexadas, recomenda-se que as entradas que não estão sendo usadas, sejam aterradas – conectadas ao GND. 

Vin = Leitura x ( 5,00V / 1024) ( Se AREF = 5,00V )

A divisão tem que ser por 1024 e não por 1023 como alguns citam erroneamente.

"  Preciso ler em sua entrada valores entre 0 a 0.140mV e obter um valor na saída entre 0 e 1.1 Volts de forma linear." 

O Atmega328 tem uma tensão de referência interna de 1,1V. Mas não sei a precisão desse valor. 

https://www.arduino.cc/reference/en/language/functions/analog-io/an...

INTERNAL: an built-in reference, equal to 1.1 volts on the ATmega168 or ATmega328P

Como o ADC é de 10 bits (1024) sugiro uma referência externa de 1,024V. Dessa forma a resolução vai ser de 1 mV. Acho que é isso que pretende, não é?

Voltage reference 1,024V :

https://br.mouser.com/Power/Power-Management-ICs/Voltage-References...

Para minimizar as variações de leitura use um Filtro Passa baixa :

https://github.com/simonmonk/ArduinoNextSteps/blob/master/ArduinoNe...

E tem esse para calcular a média das leituras :

https://github.com/simonmonk/ArduinoNextSteps/blob/master/ArduinoNe...

Conheci esse filtro no Livro do Simon Monk :

http://simonmonk.org/books-2/programming-arduino-next-steps/

https://github.com/simonmonk/ArduinoNextSteps/tree/master/ArduinoNe...

Livro traduzido (excelente dica) :

http://loja.grupoa.com.br/livros/controle-e-processos-industriais/p...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço