Índice:
- Etapa 1: O que é um ADC?
- Etapa 2: Como funciona o ADC no AVR- Microcontrolador
- Etapa 3: Fórmula de conversão ADC
- Etapa 4: Como configurar o ADC no ATmega8?
- Etapa 5: Seleção ADLAR
- Etapa 6: Seleção ADCSRA
- Etapa 7: Se você deseja obter o valor do ADC, você precisa realizar alguns trabalhos listados abaixo
- Etapa 8: Definir valor ADC
- Etapa 9: Configurar o pino do LED de saída
- Etapa 10: Configurar Hardware ADC
- Etapa 11: Habilitar ADC
- Etapa 12: iniciar as conversões analógicas para digitais
- Etapa 13: ENQUANTO para sempre
- Etapa 14: no final, o código completo está
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-23 15:03
Neste tutorial você saberá tudo ADC em microcontrolador AVR
Etapa 1: O que é um ADC?
Um ADC, ou conversor analógico para digital, permite converter uma tensão analógica em um valor digital que pode ser usado por um microcontrolador. Existem muitas fontes de sinais analógicos que gostaríamos de medir. Existem sensores analógicos disponíveis que medem temperatura, intensidade de luz, distância, posição e força, apenas para citar alguns.
Etapa 2: Como funciona o ADC no AVR- Microcontrolador
O AVR ADC permite que o microcontrolador AVR converta tensões analógicas em valores digitais com poucas ou nenhuma parte externa. O ATmega8 apresenta uma aproximação sucessiva de 10 bits ADC. ATmega8 tem 7 canais ADC no PortC. O ADC tem um pino de tensão de alimentação analógica separado, AVCC. AVCC não deve diferir mais do que ± 0,3 V de VCC.. A referência de tensão pode ser desacoplada externamente no pino AREF. AVCC é usado como referência de tensão. O ADC também pode ser configurado para funcionar continuamente (o modo de execução livre) ou para fazer apenas uma conversão.
Etapa 3: Fórmula de conversão ADC
Onde Vin é a tensão no pino de entrada selecionado e Vref a referência de tensão selecionada
Etapa 4: Como configurar o ADC no ATmega8?
Os seguintes registros são usados para implementação de ADC em ATmega8
Seleção de Multiplexador ADC
Etapa 5: Seleção ADLAR
Resultado do ajuste à esquerda do ADC O bit ADLAR afeta a apresentação do resultado da conversão do ADC no registrador de dados ADC. Escreva um para ADLAR para ajustar o resultado à esquerda. Caso contrário, o resultado é ajustado corretamente
Quando uma conversão ADC é concluída, o resultado é encontrado em ADCH e ADCL. Quando ADCL é lido, o Registro de Dados ADC não é atualizado até que ADCH seja lido. Consequentemente, se o resultado for ajustado à esquerda e não for necessária mais de 8 bits de precisão, é suficiente ler ADCH. Caso contrário, ADCL deve ser lido primeiro e, em seguida, ADCH. Bits de seleção de canal analógico O valor desses bits seleciona quais entradas analógicas são conectadas ao ADC.
Etapa 6: Seleção ADCSRA
• Bit 7 - ADEN: ADC Enable Gravar este bit em um habilita o ADC. Ao escrever para zero, o ADC é desligado
• Bit 6 - ADSC: ADC Start Conversion No modo Single Conversion, escreva este bit em um para iniciar cada conversão. No modo de execução livre, escreva este bit em um para iniciar a primeira conversão.
• Bit 5 - ADFR: ADC Free Running Select Quando este bit é definido (um), o ADC opera no modo Free Running. Neste modo, o ADC faz a amostragem e atualiza os registros de dados continuamente. Limpar este bit (zero) encerrará o modo de execução livre.
• Bit 4 - ADIF: Sinalizador de interrupção ADC Este bit é definido quando uma conversão ADC é concluída e os registros de dados são atualizados. A Interrupção Completa da Conversão ADC é executada se o bit ADIE e o bit I em SREG estiverem definidos. ADIF é limpo por hardware ao executar o vetor de tratamento de interrupção correspondente. Como alternativa, o ADIF é limpo gravando um lógico no sinalizador.
• Bit 3 - ADIE: ADC Interrupt Enable Quando este bit é escrito para um e o bit I em SREG é definido, a ADC Conversion Complete Interrupt é ativada.
• Bits 2: 0 - ADPS2: 0: Bits de seleção do pré-escalar ADC De acordo com a folha de dados, este pré-escalar precisa ser definido de forma que a frequência de entrada do ADC esteja entre 50 KHz e 200 KHz. O relógio ADC é derivado do relógio do sistema com a ajuda de ADPS2: 0 Esses bits determinam o fator de divisão entre a frequência XTAL e o relógio de entrada para o ADC.
Etapa 7: Se você deseja obter o valor do ADC, você precisa realizar alguns trabalhos listados abaixo
- Definir valor ADC
- Configure o pino do LED de saída
- Configurar Hardware ADC
- Habilitar ADC
- Iniciar conversões de analógico para digital
- ENQUANTO para sempre
SE o valor ADC for maior do que o valor definido, ligue o LED ELSE desligue o LED
Etapa 8: Definir valor ADC
Código: uint8_t ADCValue = 128;
Etapa 9: Configurar o pino do LED de saída
Código: DDRB | = (1 << PB1);
Etapa 10: Configurar Hardware ADC
Configurar Hardware ADC
Isso é feito definindo bits nos registros de controle do ADC. Primeiro, vamos definir o pré-escalar para o ADC. De acordo com a ficha técnica, esse pré-escalar precisa ser configurado de forma que a frequência de entrada do ADC esteja entre 50 KHz e 200 KHz. O relógio ADC é derivado do relógio do sistema. Com uma frequência de sistema de 1 MHz, um prescaler de 8 resultará em uma frequência ADC de 125 Khz. A pré-escala é definida pelos bits ADPS no registro ADCSRA. De acordo com a folha de dados, todos os três bits ADPS2: 0 devem ser definidos como 011 para obter o 8 prescaler.
Código: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
A seguir, vamos definir a tensão de referência do ADC. Isso é controlado pelos bits REFS no registro ADMUX. O seguinte define a tensão de referência para AVCC.
Código: ADMUX | = (1 << REFS0);
Para definir o canal passado pelo multiplexador para o ADC, os bits MUX no registro ADMUX precisam ser definidos de acordo. Como estamos usando ADC5 aqui
Código: ADMUX & = 0xF0; ADMUX | = 5;
Para colocar o ADC em modo de execução livre, defina o bit ADFR apropriadamente nomeado no registro ADCSRA:
Código: ADCSRA | = (1 << ADFR);
Uma última alteração nas configurações será feita para tornar a leitura do valor ADC mais simples. Embora o ADC tenha uma resolução de 10 bits, muitas vezes essas informações não são necessárias. Este valor de 10 bits é dividido em dois registradores de 8 bits, ADCH e ADCL. Por padrão, os 8 bits mais baixos do valor ADC são encontrados no ADCL, com os dois superiores sendo os dois bits mais baixos do ADCH. Definindo o bit ADLAR no registro ADMUX, podemos alinhar à esquerda o valor ADC. Isso coloca os 8 bits mais altos da medição no registro ADCH, com o resto no registro ADCL. Se lermos o registro ADCH, obteremos um valor de 8 bits que representa nossa medição de 0 a 5 volts como um número de 0 a 255. Basicamente, estamos transformando nossa medição ADC de 10 bits em uma de 8 bits. Aqui está o código para definir o bit ADLAR:
Código:
ADMUX | = (1 << ADLAR); Isso conclui a configuração do hardware ADC para este exemplo. Mais dois bits precisam ser definidos antes que o ADC comece a fazer medições.
Etapa 11: Habilitar ADC
Para habilitar o ADC, defina o bit ADEN em ADCSRA:
Código: ADCSRA | = (1 << ADEN);
Etapa 12: iniciar as conversões analógicas para digitais
Para iniciar as medições ADC, o bit ADSC em ADCSRA precisa ser definido:
Código: ADCSRA | = (1 << ADSC);
Nesse ponto, o ADC começaria a amostrar continuamente a tensão apresentada no ADC5. O código até este ponto seria semelhante a este:
Etapa 13: ENQUANTO para sempre
A única coisa que falta fazer é testar o valor do ADC e definir os LEDs para exibir uma indicação de alto / baixo. Uma vez que a leitura do ADC no ADCH tem um valor máximo de 255, um valor de teste th foi escolhido para determinar se a tensão estava alta ou baixa. Uma simples instrução IF / ELSE nos loops FOR nos permitirá acender o LED correto:
Código
if (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Liga o LED
}
outro
{
PORTB & = ~ (1 << PB0); // Desligue o LED
}
Etapa 14: no final, o código completo está
Código:
#incluir
int main (vazio)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Definir LED1 como saída
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Definir ADC pré-escalar para 8 - // taxa de amostragem de 125 KHz 1 MHz
ADMUX | = (1 << REFS0); // Definir referência ADC para AVCC
ADMUX | = (1 << ADLAR); // Ajuste à esquerda do resultado ADC para permitir uma leitura fácil de 8 bits
ADMUX & = 0xF0;
ADMUX | = 5; // Os valores MUX precisam ser alterados para usar ADC0
ADCSRA | = (1 << ADFR); // Definir ADC para modo de execução livre
ADCSRA | = (1 << ADEN); // Habilitar ADC
ADCSRA | = (1 << ADSC); // Iniciar conversões A2D enquanto (1) // Loop para sempre
{
if (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Liga o LED1
}
outro
{
PORTA & = ~ (1 << PB1); // Desligue o LED1
}
}
return 0;
}
Publique primeiro este tutorial Clique aqui
Recomendado:
Introdução ao Bascom AVR: 5 etapas
Getting Startet With Bascom AVR: Este é o começo de uma série para ensiná-lo a programar seu microcontrolador AVR com Bascom AVR. Alguns mais fáceis e outros mais difíceis, mas no final ambos
Introdução ao microcontrolador CloudX: 3 etapas
Introdução ao microcontrolador CloudX: O microcontrolador CloudX é um hardware de código aberto e softwaremicro-computador que permite criar seus próprios projetos interativos. CloudX é um pequeno chip que permite aos usuários dizer o que fazer antes de tomar qualquer ação, ele aceita diferentes k
Microcontrolador AVR. Sensor de distância ultrassônico. HC-SR04 no LCD NOKIA 5110: 4 etapas
Microcontrolador AVR. Sensor de distância ultrassônico. HC-SR04 no LCD NOKIA 5110: Olá a todos! Nesta seção, faço um dispositivo eletrônico simples para detectar a distância e esses parâmetros são exibidos no LCD NOKIA 5110. Os parâmetros são exibidos como um diagrama e números. O dispositivo é baseado no microcontrolador AVR ATMEG
Microcontrolador AVR. Alterne os LEDs usando um botão de pressão. Botão Debouncing: 4 etapas
Microcontrolador AVR. Alterne os LEDs usando uma chave de botão. Push Button Debouncing: Nesta seção, aprenderemos como fazer o código do programa C para ATMega328PU para alternar o status dos três LEDs de acordo com a entrada de uma chave de botão. Além disso, exploramos uma solução para o problema de ‘Switch Bounce’. Como de costume, nós teremos
Configuração de bits de fusível do microcontrolador AVR. Criando e enviando na memória flash do microcontrolador o programa de LED piscando: 5 etapas
Configuração de bits de fusível do microcontrolador AVR. Criando e Carregando na Memória Flash do Microcontrolador o Programa de LED Piscando .: Neste caso iremos criar um programa simples em código C e gravá-lo na memória do microcontrolador. Vamos escrever nosso próprio programa e compilar o arquivo hex, usando o Atmel Studio como plataforma de desenvolvimento integrada. Vamos configurar o fusível bi