Como melhorar a precisão de uma entrada analógica sem interferir nas outras

Estou fazendo uma leitura analógica no arduino que geralmente fica entre 0,27V e 0,85V e queria ter mais precisão nessa leitura.

A solução que eu acredito ser a correta era usar a função INTERNAL1V1.

Porém, essa função se aplica a todas as entradas analógicas não é isso? E eu to lendo outros sensores nas outras entradas que precisam do 5V de referência.

Então qual seria uma outra boa solução?

Obs.: O circuito que eu estou fazendo a leitura que precisa de mais precisão é apenas uma divisão de tensão.

Exibições: 952

Responder esta

Respostas a este tópico

Bom HN,

se você necessita de precisão não deve usar nada que use como alimentação a voltagem da fonte do Arduino.

Existem semicondutores especializados em referencia.

https://www.globalspec.com/learnmore/semiconductors/power_power_man...

RV

Boa tarde Rui,

Achei muito interessante também usar um chip de referência de tensão. Vou adotar essa ideia.

Mas de qualquer forma, eu gostaria de aproveitar mais os 10 bits de resolução do arduino.

A minha leitura dessa divisão de tensão só vai até uns 0,86V no máximo (176 decimais aprox.) e eu queria aproveitar toda resolução (0 até 1023). Com o INTERNAL1V1 já seria perfeito e melhoraria muito a precisão pois ia ser 1,1V/1024 partes. 

Então como resolver esse impasse de querer a resolução dos 10 bits pra uma entrada analógica com referência de 1V, por exemplo, e resolução de 10 bits também pras outras entradas analógicas que precisam de referência de 5V?

Boa tarde Hélio, 

A precisão e resolução do Arduino não são as melhores. 

Mas se quer realmente usar o ADC do Arduino com duas referências de tensão, acho que possa alterar através da programação. Quando for medir até 1,1V selecione a referência interna. E quando for medir com referência a 5V selecione AVCC  através do programa. Mas não conecte nada no pino AREF, senão poderá queimar algo internamente. A tensão AVCC deverá ter uma tensão precisa. 

Mas cuidado, se conectar uma tensão de 5V em uma entrada do ADC quando a tensão de referência for 1,1V, poderá queimar o ADC! 

Datasheet ATmega328:

 

"The reference voltage for the ADC (VREF) indicates the conversion range for the ADC. Single ended channels
that exceed VREF will result in codes close to 0x3FF. VREF can be selected as either AVCC, internal 1.1V
reference, or external AREF pin.

AVCC is connected to the ADC through a passive switch. The internal 1.1V reference is generated from the
internal bandgap reference (VBG) through an internal amplifier. In either case, the external AREF pin is directly
connected to the ADC, and the reference voltage can be made more immune to noise by connecting a capacitor between the AREF pin and ground. VREF can also be measured at the AREF pin with a high impedance voltmeter. Note that VREF is a high impedance source, and only a capacitive load should be connected in a system.


If the user has a fixed voltage source connected to the AREF pin, the user may not use the other reference
voltage options in the application, as they will be shorted to the external voltage. If no external voltage is applied to the AREF pin, the user may switch between AVCC and 1.1V as reference selection. The first ADC conversion result after switching reference voltage source may be inaccurate, and the user is advised to discard this result."

Bom dia Gustavo,

Então é possível mudar dinamicamente a tensão de referência? Eu não tinha esse conhecimento.

"The first ADC conversion result after switching reference voltage source may be inaccurate, and the user is advised to discard this result."

Então eu sempre faço duas leituras de cada descartando a primeira caso dê pra mudar a referência dinamicamente? (Fazendo a medição a cada 1s por exemplo)

Você pode utilizar um amplificador operacional para aumentar essa tensão que está lendo. Vai ser mais complicado e vai ter que montar um circuito externo, possivelmente até com fonte simétrica. Não é a solução mais simples, mas é uma possibilidade.

Só uma ressalva que multiplicar um valor de tensão, e depois ler, não melhora (com certeza) a precisão da medida pois a variância (erro associado) também aumenta.

Bom dia Andre e Vitor.

Eu tinha pensado nisso também, mas não sei até que ponto o erro associado vai atrapalhar.

Oi Hélio, vc pode estimar o erro pelo desvio padrão de n medidas, ou tentar dar uma olhada com um osciloscópio. Mas se o erro não atrapalha, uma medida apenas já é precisa.

Vc pode usar um ADC externo de 16 bits como esse a seguir para melhorar a resolução.

https://www.afeletronica.com.br/pd-553f2d-modulo-conversor-analogic...

Tava pesquisando aqui e vi que esse e outros parecidos usam SPI e pegam a A4 e A5 do arduino sendo que eu faço a leitura de vários sensores analógicos e já não vai ter espaço.

Dá pra ler I2C via software usando as portas GPIO com a lib a seguir: não usa a A4 e A5.

https://playground.arduino.cc/Main/SoftwareI2CLibrary/

Boa noite Hélio; Com um ADC0831 talvez resolva.

Atte:JSMB

Uma sugestão é fazer uma média de várias leituras se o valor de tensão lido for fixo.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço