Baixe o app para aproveitar ainda mais
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
Compartilhar