Arduino – Entradas analógicas

Já aprendemos a ler e escrever em portas digitais. Porém, em muitos projetos nos deparamos com a necessidade de amostrar uma grandeza analógica. O microcontrolador do Arduino já conta com um conversor analógico-digital integrado e hoje vamos descobrir como usa-lo!

Sinais analógicos?

Apelidamos de sinais analógicos qualquer sinal que carrega uma informação numa variação continua de tensão. O microfone, por exemplo, é um transdutor que entrega na saída uma informação analógica. A tensão instantânea gerada pelo microfone é uma representação da pressão presente no diafragma, ou seja, a amplitude da tensão de saída carrega a informação que antes se propagava no ar em forma de onda mecânica.


Conversor analógico-digital (A/D)

O processadores digitais não podem compreender uma informação analógica diretamente porque só trabalham discretamente em 0 e 1. Pra lidarmos com sinais analógicos precisamos converter o valor de tensão ou corrente para uma palavra digital compreensível ao processador e quem faz esse trabalho é o conversor A/D.

Um conversor A/D discretiza uma faixa de tensão numa palavra de 2^n bits, onde n é o tamanho do conversor. Os conversores do Arduino são de 10 bits, dessa forma sabemos que

n = 10d = 2^{10} = 1024

onde d é o número de degraus de liberdade. O máximo valor do conversor 1023 representa a tensão de alimentação e o mínimo valor 0 representam 0V.

Já sabemos que uma tensão de 0 a 5V na entrada do conversor analógico será transformada num valor digital de 0 a 1023 que poderemos tratar em software pra realizar determinada tarefa. Agora iremos aprender como programar o Arduino para ativar as entradas analógicas.


Código

Antes de tudo iremos setar o pino como entrada, para isso usaremos a função pinMode já estudada anteriormente.

#define sensor 3

void setup() {
    pinMode(sensor,INPUT);
}

Agora, com a porta já configurada, ler o valor analógico é extremamente simples. Para isso, utilizaremos a função analogRead(pino) onde pino é o pino que queremos ler. A função retorna um valor inteiro que varia de 0 a 1023, representando a tensão na entrada do pino. Alguns exemplos de uso de analogRead podem ser vistos abaixo.

//lê entrada analógica 4 e salva o valor
int tensao = analogRead(4);

//compara valor com 2.5V e faz alguma ação
if (analogRead(6) > 512) {
    // faz determinada ação
}

Essa aula foi um oferecimento da CISTEK, líder em instrumentos de medição para engenharia e eletrônica.
logo