Periféricos do Arduino: O conversor Analógico-Digital

 

Neste artigo vou apresentar a teoria e o modo de utilização do Conversor Analógico-Digital (ADC, do inglês Analog-Digital Converter) do Arduino.

O ADC é um periférico muito importante, presente na maioria dos microcontroladores. A sua grande distinção se dá pelo fato dele ser o principal meio de leitura de grandezas analógicas.

O mundo é analógico, enquanto o Arduino é digital, portanto é necessário um meio de interação entre estes dois lados.

Funcionamento do conversor Analógico-Digital do Arduino

Para explicar o funcionamento do ADC, vou utilizar o Arduino Uno, que tem por base um microcontrolador Atmega 328.

O ADC do Atmega 328 utiliza a tecnologia SAR, do inglês Successive Approximation Register

A primeira noção que devemos ter em mente é a seguinte: O mundo analógico permite infinitos níveis de variação das grandezas.

Por exemplo, entre 1 V e 1,1 V podemos ter infinitos valores com amplitudes praticamente insignificantes.

Em outras palavras, não existe restrição mínima de variação de uma grandeza analógica. Citei como exemplo valores de tensão, mas podemos pensar do mesmo modo para corrente elétrica, intensidade sonora, variação de brilho, dentre outros.

No mundo digital, ao contrário do analógico, nós temos restrições em termos de representação numérica dos sinais. Mesmo que os microcontroladores modernos tenham evoluído bastante, e tenham capacidade de trabalhar com números de grande amplitude, o conversor ADC impõe limites. 

Só para exemplificar, na Figura 1 é mostrado o exemplo da amostragem de um sinal arbitrário. 

Figura 1: Exemplo de amostragem de um sinal.

 

Os pontos vermelhos representam os valores instantâneos daquela amostra. Em síntese, estes pontos são as leituras do conversor ADC do Arduino.

Todavia, entre os pontos vermelhos há um espaço sem leitura alguma; Por isso é importante que saibamos o tipo de sinal que estamos realizando a leitura, visto que há perda de informação entre as amostragens.

Voltando ao exemplo do ADC do Arduino Uno. Este ADC possui resolução de 10-bit, que equivale a 2^10 = 1024 valores discretos. Dessa forma, toda a faixa de valores analógicos de tensão é convertida para valores digitais em uma amplitude de 0 a 1023.

Características do Conversor Analógico-digital

Além da amplitude numérica, outras características inerentes ao ADC são a sua velocidade e impedância de entrada.

Assim sendo, a velocidade máxima determina o número máximo de conversões por segundo que o ADC é capaz de realizar.

No caso do ADC do Arduino, a velocidade máxima é algo em torno de 15 kSPS (SPS é o acrônimo de Samples per second, ou amostras por segundo).

Esta velocidade é para o caso de se utilizar o ADC do Arduino com a finalidade de se obter a resolução máxima, que é 10-bit. Todavia, caso seja utilizada a resolução de 8-bit, é possível de se atingir a velocidade de 76 kSPS.

A impedância de entrada do ADC é uma propriedade importante, visto que o ADC representa uma carga inserida no circuito, podendo drenar corrente além do tolerável.

Além disso, se a impedância não for adequada ao circuito no qual se quer realizar a conversão de analógico para digital, os sinais poderão ser distorcidos. Em virtude disso, além de prejudicar o funcionamento do circuito, a leitura poderá ser errônea.

Por causa destes fatores, muitos circuitos utilizam amplificadores operacionais entre a fonte do sinal propriamente dito e o ADC.

Utilização do Conversor Analógico-Digital do Arduino

Para a utilização do ADC do Arduino, temos de realizar os seguintes passos:

  • Definir os critérios básicos: Velocidade de conversão, faixa de tensão e resolução.
  • Codificar a configuração do ADC.
  • Codificar a função de leitura do ADC.

A velocidade de operação do ADC depende dos requisitos da aplicação. Porquanto o uso geral não traz grandes restrições, vamos considerar a configuração padrão do Arduino no nosso exemplo a seguir.

Com isso, vamos entender a configuração do ADC do Arduino e codificá-la. Precisamos definir os pinos que serão utilizados como entrada analógica.

 

 

 

2 thoughts on “Periféricos do Arduino: O conversor Analógico-Digital”

    1. Olá Geovani! Bem vindo a ToT!
      Para resolver este seu problema, primeiramente é necessário estabelecer a banda passante de interesse, isto é, definir os limites das frequências dos sinais que você precisa ler. Com isto definido, você pode implementar um filtro analógico para limitar a frequência dos sinais. Na maioria dos casos um filtro RC simples já resolve o problema!

E aí, gostou? Opine. Assim poderemos melhorar.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *