Como usar o ADC embutido do microcontrolador AVR (ATmega16) – (Parte 26/46)

Como usar o ADC embutido do microcontrolador AVR (ATmega16) – (Parte 26/46)

O microcontrolador entende apenas a linguagem digital. Entretanto, as entradas disponíveis do ambiente para o microcontrolador são em sua maioria de natureza analógica, ou seja, variam continuamente com o tempo. Para compreender as entradas do processador digital, é utilizado um dispositivo denominado Conversor Analógico para Digital (ADC). Como o nome sugere, este periférico reúne as informações analógicas fornecidas pelo ambiente e as converte para o formato digital compreensível do controlador, o microcontrolador então processa as informações e fornece o resultado desejado na saída.

((wysiwyg_imageupload:451:))

ATmega16 possui um sistema ADC integrado de 10 bits e 8 canais. Alguns dos recursos básicos do Armega16 ADC são:
· 8 canais.
· Resolução de 10 bits.
· Faixa de tensão de entrada de 0 a Vcc.
· 2,56 V selecionável de fonte de tensão de referência interna.
· Pino AREF para tensão de referência externa.
· Interrupção completa da conversão ADC.
Os canais ADC no Atmega16 são multiplexados com PORTA e usam os pinos comuns (pin33 a pin40) com PORTA. O sistema ADC do microcontrolador Atmega16 consiste nos seguintes pinos:
eu. ADC0-ADC7: 8 canais do pino 40 ao pino 33 do periférico Atmega16 ADC.
ii. AREF: Pin32 do microcontrolador Atmega16, a tensão no pino AREF atua como tensão de referência para conversão ADC, a tensão de referência é sempre menor ou igual à tensão de alimentação, ou seja, Vcc.
iii. AVCC: Pin30, este pino é o pino de tensão de alimentação para usar o PORTA e o ADC; O pino AVCC deve ser conectado ao Vcc (tensão de alimentação do microcontrolador) para usar PORTA e ADC.
Observação: Fonte de tensão de referência externa pode ser usada no pino AREF. Porém, o Atmega16 também possui opções de tensão de referência interna de 2,56V e Vref = Vcc.
A figura abaixo mostra a configuração dos pinos do sistema ADC do microcontrolador Atmega16.
Números de pinos do ADC no microcontrolador ATmega16 AVR
Fig. 2: Números de pinos do ADC no microcontrolador ATmega16 AVR
Registros ADC
Para utilizar o periférico ADC do Atmega16, determinados registros precisam ser configurados.
eu. ADMUX (Multiplexador ADC e registro de seleção)
Valores de bits do multiplexador ADC e registro de seleção para configurar o periférico ADC no AVR
Fig. 3: Valores de bits do multiplexador ADC e registro de seleção para configurar o periférico ADC no AVR
REF(0:1) bits determinam a fonte de tensão de referência, seja ela interna ou externa conectada ao pino AREF. Os bits MUX (4:0) são usados ​​para selecionar entre os canais que fornecerão dados ao ADC para conversão. O bit ADLAR quando definido como 1 fornece o resultado ajustado à esquerda nos registradores de dados ADCH e ADCL.
ii. ADCSRA (Controle ADC e Registro de Status)
Configuração de bits do controle ADC e registro de status no microcontrolador AVR
Fig. 4: Configuração de bits do controle ADC e registro de status no microcontrolador AVR
ÁDEN: Bit de habilitação do ADC, este bit deve ser definido como 1 para ligar o ADC.
ADSC: Bit de conversão inicial do ADC, este bit é definido como 1 para iniciar a conversão do ADC, assim que a conversão é concluída, este bit é definido novamente como 0 pelo hardware.
UM ENCONTRO: ADC Auto Trigger Enable, este bit é definido como 1 para habilitar o disparo automático da conversão ADC.
ADIF: Sinalizador de interrupção ADC, este bit é definido como 1 quando a conversão ADC é concluída.
ADIE: ADC Interrupt Enable, este bit é definido como 1 se quisermos ativar a interrupção completa da conversão ADC.
ADPS(0:2): Bits ADC Prescaler, esses bits são usados ​​para definir a frequência do clock do ADC, a configuração desses bits determina o fator de divisão pelo qual a frequência do clock do microcontrolador é dividida para obter a frequência do clock do ADC. A figura acima mostra os valores dos bits do prescaler para o respectivo fator de divisão.
Equação da frequência do relógio ADC
Fig. 5: Equação da frequência do relógio ADC
A frequência do clock do ADC deve estar entre 50 KHz e 200 KHz.
iii. ADCH e ADCL (Registros de dados ADC)
Quando a conversão do ADC é concluída, os dados são armazenados nesses dois registradores. A configuração dos dados depende do valor do bit ADLAR do registro ADMUX. Se ADLAR=0, os dados são ajustados à direita e se ADLAR=1, os dados são ajustados à esquerda. Sempre leia primeiro o ADCL e depois o ADCH. Nos casos em que a precisão de 8 bits é suficiente, configure o bit ADLAR para 1 para ajustar os dados à esquerda e ler apenas o registro de dados ADCH.
Quando ADLAR = 0,
Configuração de bits do registro de dados ADC em ADLAR = 0 no microcontrolador ATmega16 AVR
Fig. 6: Configuração de bits do registro de dados ADC em ADLAR = 0 no microcontrolador ATmega16 AVR
Quando ADLAR = 1,
Configuração de bits do registro de dados ADC em ADLAR = 1 no microcontrolador ATmega16 AVR
Fig. 7: Configuração de bits do registro de dados ADC em ADLAR = 1 no microcontrolador ATmega16 AVR
Descrição do circuito
Conecte o circuito conforme mostrado no diagrama de circuito. Um capacitor cerâmico 104 está conectado entre AVcc (pino 30) e Aref (pino 32). AVcc (pino 30) está conectado à alimentação externa +5V.
Explicação do código
Para fazer a interface do dispositivo analógico com o microcontrolador AVR, siga as etapas a seguir para programá-lo.

Passo 1: Para inicializar o ADC
eu. Defina o valor no registro ADMUX de acordo com o canal ADC e a tensão de referência.
ii. Defina os bits do Prescaler adequadamente no registro ADCSRA.
iii. Defina o bit ADEN para habilitar o ADC.

vazio ADC_init(vazio) // Inicialização do ADC
{ ADMUX=(1< // AVcc com capacitor externo em AREF ADCSRA=(1< // Habilita o ADC e define o fator de divisão do Prescaler como 128 }
Passo 2: Para ler o valor analógico
eu. Coloque o valor do canal em ADMUX
ii. Inicie a conversão definindo o bit ADSC.
iii. Monitore o bit ADIF para conclusão da conversão.
4. Limpe o bit de conversão ADIF. Ao escrever 1.
v. O resultado convertido digital agora está disponível nos registros ADCH e ADCL.

unsigned int ADC_read(char ch não assinado)
{
ch= ch&0b00000111; // o canal deve ser preto e branco de 0 a 7
ADMUX  = canal; //selecionando canal
 
ADCSRA =(1< //inicia a conversão
while(!(ADCSRA & (1< // aguardando ADIF, conversão concluída
ADCSRA =(1< // limpeza do ADIF, é feito escrevendo 1 nele
 
retorno (ADC);
}

Código fonte do projeto

###


//Programa para o ADC ler do canal 0 e mostrar o/p de 8 bits no PORTB
#incluir #incluir void ADC_init(void); não assinado int ADC_read (char não assinado); // ------------------------------------------------ int principal(vazio) { valor interno não assinado; DDRB=0xFF; DDR=0x03; ADC_init ; // Inicialização do ADC //ch=0; enquanto(1) { valor=ADC_read(0); PORTB=valor; _atraso_ms(500); } } //------------------------------------------------ vazio ADC_init(vazio) // Inicialização do ADC { ADMUX=(1< // AVcc com capacitor externo em AREF ADCSRA=(1< // Habilita o ADC e define o fator de divisão do Prescaler como 128 } unsigned int ADC_read(char ch não assinado) { ch= ch&0b00000111; // o canal deve ser preto e branco de 0 a 7 ADMUX = canal; //selecionando canal ADCSRA =(1< //inicia a conversão enquanto(!(ADCSRA & (1< // aguardando ADIF, conversão concluída ADCSRA =(1< // limpeza do ADIF, é feito escrevendo 1 nele retorno (ADC); }

###

Componentes do Projeto

  • ATmega16
  • LIDERADO

Vídeo do projeto

Conteúdo Relacionado

A Infineon Technologies AG apresenta os novos MOSFETs CoolSiC...
Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
ESP32-CAM é um módulo de câmera compacto que combina...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Você provavelmente já se deparou com o termo “diodo”,...
Quando você explora a área de Controle V/F dos...
Você provavelmente já se deparou com o termo 'arrastar'...
Tillbaka till blogg

Lämna en kommentar

Notera att kommentarer behöver godkännas innan de publiceras.