arduino – como melhorar a precisão da entrada analógica

porRicardo Jorge

arduino – como melhorar a precisão da entrada analógica

Monitorar Diagnosticar e Projetar

Melhorar a precisão da entrada analógica para o arduino e ESP8266 é um tema tratado com certa frequência na Internet.

Neste artigo, abordaremos alguns pontos importantes que farão a diferença em seu projeto.

Será que apenas 10 bits são suficientes ?

Para responder melhor, primeiro é necessário entender o objetivo de nosso projeto.

O que desejamos construir com nosso arduino e / ou ESP8266?

Responder claramente a esta pergunta tem relação direta com o custo e a complexidade do projeto.

Na maioria dos casos, buscamos monitorar algo e não estamos preocupados em desenvolver um sistema de medição de alta precisão.

Monitorar é entender o comportamento de um sistema através de suas métricas básicas “baseline”.

A precisão é mais importante para diagnosticar e projetar.

Todos sabemos que bons instrumentos de medição são caros.

Estes instrumentos compartilham algumas das características listadas abaixo :

  • Fonte de alimentação de qualidade – precisa e estável
  • Componentes discretos com boa qualidade e precisão : capacitores, resitores e indutores
  • Circuitos para compensão da temperatura
  • Planejamento da disposição dos componentes e contorno das trilhas da placa de circuito impresso.
  • Filtros de faixa, conforme a frequência a ser medida
  • Conectores de baixa resistência
  • Cabos e pontas de prova com resistência, capacitância e indutância adequadas para medição a ser feita.
  • Chaves comutadoras de qualidade
  • Isolação quanto a ruídos externos que possam afetar a medição

Como pode ser visto, não é só o ADC ( Analog to Digital Converter – Conversor Analógico Digital ), que torna nosso sistema preciso.

Como melhorar a precisão analógica?

Pouco adianta utilizamos um ADC de 16 bits, se nossa fonte de alimentação tem ruído, ou não entrega uma tensão estável para nosso circuito.

Existe ainda o condicionamento do sinal a ser medido e não podemos esquecer da relação Sinal Ruído, que pode comprometer nossa medição.

O condicionamento é quando conseguimos que o sinal em medição tenha uma amplitude equivalente a entrada analógica e o mais livre possível de ruídos.

Outra forma de condicionar o sinal, é quando utilizamos apenas a faixa de nosso interesse, desprezando a amplititude total possível para a entrada analógica.

Este caso de condionamento por faixa é conhecido como Modo Diferencial.

Vejamos alguns tipos mais comuns de módulos :

MóduloFaixa da Tensão analógica
arduino – UNO ( 5V )0 – 5V
arduino – Pró Mini ( 5V )0 – 5V
arduino – Pró Mini ( 3V3 )0 – 3.3V
ESP82660 – 1V
NodeMCU0 – 3.3V
Tabela 1 – Faixa de operação da entrada analógica de alguns MCU

De fato, para um ADC de 10 bits, a entrada analógica mostra valores inteiros entre 0 e 1023.

Duas observações são fundamentais para entrada analógica :

  • Não suporta valores negativos, podendo danificar o controlador
  • Só pode ser usada para medir tensão

Exemplo : para medir corrente, é necessário transformar os níveis de corrente em níveis de tensão.

Atenção : alguns MCU utilizam a tensão de alimentação como tensão de referência analógica, enquanto outros podem ter tensão de referẽncia externa.

A família arduino baseada em ATmega328 pode utilizar tensão de referência externa, que pode ser diferente da tensão de alimentação, mas nunca maior.

O ESP8266 sempre utiliza a tensão de alimentação para referência analógica.

Em qualquer dos caso, uma fonte de alimentação de qualidade é fundamental para precisão de medição analógica.

Observação : não será raro, percebermos que nosso projeto apresenta comportamento diferente quando alimentado pela USB de um computador e posteriormente por uma fonte externa.

Como a tensão de referência e o ADC interferem na precisão

Faixa analógica ( Volts )Fator de divisão para ADC de 10 bitsPrecisão em mV
0 – 510244,9
0 – 3V310243,2
0 – 110240,1
Tabela 2 – Relação da precisão com a faixa de tensão analógica – ADC de 10 bits

Através da tabela 2, podemos verificar que a tensão de referência tem influência direta na precisão medida pela entrada analógica.

Isto precisa ser levado em consideração em nosso sketch.

Utilizando a tablea 2, podemos verificar que um sistema que opere entre 0 a 5V na entrada analógica, terá 1024 passos de 4,9 mV cada e para 3V3, 1024 passos de 3,2 mV.

Enquanto a quantidade de passos é definida pelo precisão do ADC, o valor de cada passo, depende da tensão de referência usada.

Faixa analógica ( Volts )Fator de divisão para ADC de 12 bitsPrecisão em mVolts
0 – 540961,2
0 – 3V340960,8
0 – 140960,02
Tabela 3 – Relação da precisão com a faixa de tensão analógica – ADC de 12 bits

Supondo que desejamos medir uma tensão que vai de 0 a 100 V, teríamos :

Tensão de entradaValor na entrada analógica para ADC de 10 bits
0 Volts0
10 Volts102 ~103
20 Volts204 ~ 205
25 Volts256
50512
75768
1001023
Tablea 4 – Relação aproximada da tensão de entrada e valor lido – ADC de 10 bits

Tensão de entradaValor na entrada analógica para ADC de 12 bits
0 Volts0
10 Volts409 ~410
20 Volts819 ~ 820
25 Volts1024
502048
753072
1004096
Tablea 5 – Relação aproximada da tensão de entrada e valor lido – ADC de 12 bits

Divisor Resistivo de Tensão

Quando medimos tensão utilizando a entrada analógica, precisamos ter cuidado para :

  • A tensão não ultrapassar o nível máximo da entrada analógica
  • A tensão não pode ser negativa

A tabela 1 mostra os níveis máximos para alguns controladores.

Para evitar que o sinal fique negativo, existem técnicas para posicionar a leitura em zero, no centro da faixa de tensão da entrada analógica.

Isto já foi abrodado em :

arduino – Monitor para energia solar e eólica – Parte 2

Quando a tensão a ser medida é maior do que a permitida pela entrada analógica. utilizamos um divisor resisitivo de tensão.

Figura 1 – Diagrama básico de um divisor resistivo de tensão

Existem sistemas para cálculo online dos resistores e das tensões.

Rapidamente você notará que os valores dos resistores nem sempre estão dentro dos valores encontrados no mercado, ou que você tenha para usar.

Uma opção são os resistores variáveis “trimpots”, de preferência multivoltas, para facilitar o ajuste.

Algumas dicas importantes :

  • No divisor resistivo, sempre use uma combinação de valores que resulte em um Vout abaixo da tensão máxima da entrada analógica.
  • Não utilize valores nem muito baixos nem muito altos para os resistores.
  • Tente utilizar valores entre dezenas de Ohm e abaixo de milhões de Ohm.
  • Utilize resistores de precisão, sempre que possível.

O divisor resistivo de tensão, também influencia na precisão das medidas.

Quando 10 bits não bastam

Caso seja necessário utilizar mais do que 10 bits, temos algums opções.

MóduloBits do DAC
arduino Zero12
arduino DUE12
arduino MKR family12
Tabela 6 – placas arduino com ADC de 12 bits

Temos ainda o ESP32 que também conta com ADC de 12 bits.

Necessita de mais precisão ?

Uma opção é o módulo ADS1115 com ADC de 16 bits, visto abaixo

ADS1115
Figura 2 – Módulo ADS1115

Este módulo possui 4 entradas analógicas, sendo acessado via protocolo I2C.

Utilizar I2C permite que até 4 módulos ADS1115 sejam instalados ou que o barramento I2C seja compartilhado com outros dispositivos, como um display LCD, OLED ou outros sensores.

É sempre bom lembrar que o protocolo I2C tem uma temporização própria para estabelecer o endereçamento, a leitura e a escrita no barramento.

Isto deve ser levado em consideração para calcular a máxima taxa de aquisição analógica de seu projeto.

Entrada analógica usando modo diferencial

ATTiny85
Figura 3 – ATTiny85

Observação : Embora o ATTiny85 tenha um ADC de 10 bits, ele é bastante popular, tem bom custo benefício e seu modo diferencial pode ser uma excelente opção para vários usos.

Assim como o ATTiny85, o ADS1115 permite utilizar o modo diferencial.

Um ADC normalmente mede a tensão do sinal com referência ao terra do circuito.

Já no modo diferencial, uma das entradas é usada como referência e desta maneira temos o valor medido como a diferença entre as duas entradas.

Usando o modo diferencial, temos apenas metade das entradas analógicas disponíveis.

Modo diferencial
Figura 4 – Exemplo do Modo diferencial

Mais detalhes sobre o modo diferencial podem ser vistos neste link da Microchip

O ADS115 e o ATTiny85 tem controle de ganho nas entradas analógicas

  • ADS115 tem PGA com os seguintes valores : 2/3, 1, 2, 4, 8, 16
  • ATTiny85 tem ganho de 1 ou 20, somente no modo diferencial

Artigos relacionados :

arduino – Monitor para energia solar e eólica – Parte 1

Sistemas Off-Grid – Monitorando resultados

Divisor de tensão

Calculadora online para divisor de tensão resisitivo

Atenção : O material usado para referência e as fotos para ilustração, não representam associação com as marcas, patrocíonio, indicação e nem endosso para uso.


Sobre o Autor

Ricardo Jorge administrator

Deixe uma resposta