Arduino - Aula 12 - Entradas Analógicas

Imagem



As entradas digitais só podem assumir dois estados, HIGH e LOW, ou seja, 0 V ou 5 V. Dessa forma só é possível ler apenas dois estados. Por exemplo, verificar se uma porta está aberta ou fechada, identificar se um botão está pressionado ou solto, etc. Com as entradas digitais você aplica em lógica discreta (HIGH ou LOW) para controle de seus projetos, porém em muitas situações a variação das grandezas envolvidas acontece de forma analógica. Ou seja, variam continuamente em relação ao tempo e podem assumir infinitos valores dentro de uma faixa. Como exemplo a temperatura, pressão e umidade são grandezas que variam dessa forma.

O microcontrolador da Arduino trabalha internamente com dados digitais, portanto é necessário traduzir um sinal analógico para um valor digital. A técnica utilizada para leitura de um sinal analógico pelo Arduino é a conversão analógica digital. Essa técnica consiste em converter o sinal analógico para um valor digital, dessa forma se pode quantificar o sinal presente no pino. Esse processo é feito pelo conversor Analógico digital, ADC ou conversor A/D.

Um conversor A/D quantifica o valor analógico conforme a quantidade de bits da sua resolução. A resolução de um conversor A/D é dada pela seguinte equação:


Imagem

onde:

Vref: tensão de referência do conversor A/D;

n: número de bits do conversor.



Conversor A/D do Arduino


O conversor A/D do microcontrolador ATmega328 possui 10 bits de resolução, a sua tensão de entrada pode variar de 0 V até o valor de VCC e possui referência interna selecionável de 1,1 V.

Dessa forma quando está trabalhando com a referência em VCC o menor valor que pode ser lido será:




Imagem



Esse é o valor de degrau para uma conversão em 10 bits com referência em 5 V.

Caso trabalhe com a referência interna de 1,1V a resolução será:



Nota-se que o passo é bem menor para esse valor de referência.

Se a referência externa for selecionada, a resolução dependerá do valor de tensão aplicada ao pino AREF.



As Entradas Analógicas


A placa Arduino UNO possui 6 canais de conversor analógico digital. Essas entradas são nomeadas de A0 a A5 e são exibidas na figura a seguir:



Funções

A plataforma Arduino possui funções para trabalhar com entradas analógicas, as quais abstraem a configuração dos registradores de configuração do conversor A/D, assim como selecionam o canal conforme o pino passado como parâmetro. São apenas duas funções e são exibidas a seguir:

  • analogReference(tipo) 
Descrição
Configura a referência de tensão para a conversão analógica/digital, usando esse valor como o máximo para a entrada analógica.

Os tipos possíveis de configurações são:

DEFAULT: a tensão padrão para conversão é a tensão de alimentação da placa. 5 V para placas alimentadas com 5 V e 3,3 V para placas alimentadas com 3,3 V;

INTERNAL: referência interna de 1,1V no Atmega168 e Atmega328, e 2,56 V no ATmega8;

INTERNAL1V1: referência de 1,1V, apenas no Arduino Mega;

INTERNAL2V56: referência interna de 5,6 V, apenas no Arduino Mega;

EXTERNAL: referência de tensão aplicada no pino AREF (valor entre 0 e 5V).


Sintaxe


analogReference(tipo);

Parâmetros:

tipo: DEFAULT, INTENAL, INTERNAL1V1, INTERNAL2V56, EXTERNAL.

Retorno:


Essa função não tem retorno algum.


  • int analogRead(pino)

Descrição

Lê o valor presente em um pino configurado como entrada analógica. Internamente o Arduino possui um conversor A/D de 10 bits. Dessa forma o valor retornado por esta função estará na faixa de 0 a 1023 conforme o valor presente no pino.

O tempo para leitura pela função analogRead() é por volta de 100 micro segundos, dessa forma a máxima frequência de leitura que se pode ter é de 10000 vezes por segundo.


Sintaxe:
analogRead(pino)

Parâmetros:

pino: valor do pino configurado como entrada analógica (0 a 5 na maioria da placas, 0 a 7 na MINI e NANO, 0 a 15 na MEGA).

Retorno:


int (0 a 1023)



Exemplo

Para iniciar o estudo da entrada analógica, a maneira mais simples e rápida é ligando um potenciômetro a uma entrada analógica, conforme esquema apresentado em seguida:



Se girarmos o cursor do potenciômetro, alteramos a resistência em cada lado do contato elétrico que está conectado ao terminal central do botão. Isso provoca a mudança na proximidade do terminal central aos 5 volts ou GND, o que implica numa mudança no valor analógico de entrada. Quando o cursor for levado até o final da escala, teremos, por exemplo, 0 V a ser fornecido ao pino de entrada do Arduino e, assim, ao lê-lo obtém-se 0. Quando giramos o cursor até o outro extremo da escala, haverá 5 V a ser fornecido ao pino do Arduino e, ao lê-lo, teremos 1023. Em qualquer posição intermediaria do cursor, teremos um valor entre 0 e 1023, que será proporcional à tensão elétrica sendo aplicada ao pino do Arduino.

A ligação no Arduino UNO pode ser feita conforme a figura abaixo:


Atenção:
Certifique-se que ao usar uma referência externa o GND do Arduino e o da referência sejam os mesmos. Não fazer isso leva a leituras erradas.
Não use em qualquer circunstâncias menos do que 0 V no pino AREF (ou um sinal que varia e que possa ter valores negativos), porque o resultado é imprevisível.
Se você conectar uma tensão de referência externa, não chame a função analogRead () antes de executar a instrução analogReference (external), porque isso causa um curto circuito interno danificando o Arduino.
Não conecte a AREF menos de 1V ou mais de 5V.


Links:

- Embarcados: entradas analógicas-


Imagem


O divisor de Tensão

Um divisor de tensão consiste em dois resistores associados em série num circuito elétrico, dimensionado para se obter uma dada fração da tensão.

Quando um resistor variável, um LDR ou potenciómetro, é utilizado num divisor de tensão, a tensão de saída pode variar continuamente entre zero e valor da tensão de entrada.



Imagem


Ou o mesmo circuito com um LDR.



O projeto em um Arduino Uno é:



Ou...




Concluindo, o divisor de tensão com um resistor LDR se transforma em circuito sensível à luz. Assim, basta adicionar um LED ao circuito para se criar um sensor para um robô seguidor de linha.


Segue o projeto de um possível circuito.





Vídeos