Buscar

ENTRADAS ANALOG

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Arduino - Entradas Analógicas
Com as entradas digitais você aplica em  lógica discreta 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 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.
na qual:
VRef: tensão de referência do conversor A/D;
n: número de bits do conversor.
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.
Trabalhando com a referência em VCC o menor valor que pode ser lido será: 
Resolução  = (5V)÷(210) = 5÷1024 = 4,88 mV
 
Esse é o valor de degrau para uma conversão em 10 bits com referência em 5 V.
Conversor A/D do Arduino
Caso  trabalhe com a referência interna de 1,1V a resolução será:
Resolução  = (1,1V)÷(210) = 1,1÷1024 = 1,07 mV
Observe 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.
Conversor A/D do Arduino
A placa Arduino UNO possui 6 canais de conversor analógico digital nomeadas de A0 a  A5:
Conversor A/D do Arduino
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)
Funções da plataforma Arduino
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;
Funções da plataforma Arduino
INTERNAL: referência interna de 1,1V no Atmega168 e Atmega328, e 2,56 V no ATmega8;
No Arduino Mega (ATmega8) ainda temos:
	INTERNAL1V1: referência de 1,1V;
	INTERNAL2V56: referência interna de 5,6 V;
EXTERNAL: referência de tensão aplicada no pino AREF (valor entre 0 e 5V).
Funções da plataforma Arduino
analogRead(pino)
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 é por volta de 100µs, assim a máxima frequência de leitura é de 10kHz. 
Funções da plataforma Arduino
Sintaxe:
analogRead(pino);
Parâmetros: 
pino: valor do pino configurado como entrada analógica
Retorno: 
int (0 a 1023)
Funções da plataforma Arduino
Taxa de amostragem do conversor A/D
A plataforma Arduino trás em seu núcleo funções para leitura de sinal analógicos através da utilização do conversor analógico digital. 
O valor da taxa de amostragem é configurado internamente através das bibliotecas do Arduino. Desta forma não precisamos configurar os registradores internos do ATmega328 antes da leitura de uma sinal analógico. 
Essa camada de abstração auxilia a leitura de sinais analógicos, porém em aplicações que necessitam de uma otimização da leitura, é necessário entender o funcionamento do conversor A/D do microcontrolador ATmega328 e a correta configuração dos seus registradores para que atenda as necessidades do projeto.
Taxa de amostragem do conversor A/D
Conversor A/D do ATmega328
O Atmega328 possui internamente um conversor A/D de aproximação sucessivas de 10 bits de resolução com precisão de ± 2 LSBs. 
O Atmega328 PDIP, do Arduino UNO, apresenta 6 canais de entradas multiplexados.
Por existir apenas 1 conversor A/D, só poderá ser selecionado 1 canal por vez para conversão, isso é feito através da configuração dos registradores internos.
O bloco do conversor A/D possui fonte separada para a parte analógica, o pino AVcc. Essa tensão não pode variar mais do que +/-0,3V de Vcc.
 
O Atmega328 possui tensão de referência interna de 1,1 V, que pode ser selecionada por software. 
Apresenta também um pino externo para uma tensão de referência diferente de VCC ou a referência interna de 1,1 V.
Conversor A/D do ATmega328
O valor de tensão de entrada deve estar entre  0V e o valor de tensão de referência, não ultrapassando o valor de VCC.
 
Ao final da conversão pode ser gerada uma interrupção, caso a mesma esteja habilitada.
 
A conversão gera um resultado de 10 bits, necessitando assim de 2 registradores, ADCH e ADCL.
Conversor A/D do ATmega328
A seguir serão apresentados os registradores de configuração do conversor A/D do ATmega328:
 
ADMUX - ADC Multiplexer selection Register:
Conversor A/D do ATmega328
Bit 7:6 – REFS1:0 – Reference Selection Bits
Esses bits configuram a fonte de tensão de referência para o A/D, conforme a tabela abaixo:
 
Conversor A/D do ATmega328
Bit 5 – ADLAR: ADC left adjust Result
Configura a forma de exibição do resultado da conversão. ADLAR = 1, resultado justificado a esquerda, ADLAR = 0, justificado a direita. O resultado é exibido nos registradores ADCL e ADCH, conforme a configuração do ADLAR.
 
Bit4 – Não usado
 
Bits 3:0 – MUX3:0 – Analog Channel Selection Bits
Seleciona qual entrada analógica será conectada ao conversor, conforme tabela a seguir:
Conversor A/D do ATmega328
(1) Sensor de temperatura
Conversor A/D do ATmega328
22
ADCSRA – ADC Control and Status Registe A 
 
 
 
Bit 7 – ADEN: ADC Enable
Habilita o conversor A/D quando em nível lógico 1. Quando ADEN = 0 o conversor será desligado e caso isso ocorra enquanto uma conversão em progresso, a mesma será terminada antes de desligar o conversor A/D.
 
Bit 6 - ADSC: ADC Start conversion
No modo de conversão simples, ADCS = 1 fará iniciar a conversão, já no modo de conversão contínua será iniciada a primeira conversão. ADCS vai para nível lógico zero quando a conversão é finalizada. Se ADCS for escrito em nível lógico 1 ao mesmo tempo que ADEN, a primeira conversão levará 25 ciclos de clock ao invés dos 13 Ciclos de uma conversão.
Conversor A/D do ATmega328
Bit 5 – ADATE: ADC Auto Trigger Enable
Habilita o auto dispara, quando esse bit estiver em 1. O conversor iniciará uma conversão quando uma borda de subida ocorrer no sinal de disparo. O sinal de disparo é selecionado nos bits ADTS do registrador ADCSRB.
 
Bit 4 – ADIF: ADC Interrupt Flag
Sinaliza o final de uma conversão e os registradores de dados são atualizados.
 
Bit 3 – ADIE: ADC Interrupt Enable
Habilita a interrupção no final da conversão. Porém os nit I do registrador SREG deve estar ligado, para que ocorra a interrupção.
Conversor A/D do ATmega328
Bit 2:0 – ADPS2:0: ADC Prescaler Select Bits
Configura o fator de divisão entre o clock do sistema e a entrada de clock do ADC. Os valores possíveis são exibidos na tabela abaixo:
Conversor A/D do ATmega328
ADCSRB – ADC Control and Status Register B
Bit 2:0 – ADTS2:0: ADC Auto Trigger Source
Seleciona a fonte de disparo caso o bit ADATE esteja habilitado. A fontes possíveis são exibidas na tabela a seguir:
Conversor A/D do ATmega328

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais