ADC com NRF24LE1
Estudamos o primeiro programa do módulo NRF que era muito simples e tivemos sucesso piscando o LED.
Agora, se quisermos fazer alguma coisa com NRF, devemos saber como receber entradas analógicas, pois a maior parte do sensor é analógica. Neste artigo, veremos como usar o embutido ADC da NRF e como podemos usar qualquer sensor analógico e converter seu valor em digital

Fig. 1: Protótipo de interface NRF24LE1 com ADC
Algumas especificações importantes sobre o ADC embutido do NRF24LE1 são:
• Resolução de 6, 8, 10 ou 12 bits – Significa que temos a opção de escolher ADC de 6, 8, 10 ou 12 bits.
• 14 canais de entrada – 14 pinos de entrada para sinal analógico de entrada
• Entrada de terminação única ou diferencial – Entrada de linha única ou entrada de duas linhas
• Faixa de fundo de escala definida por referência interna, referência externa ou VDD – Para definir a tensão analógica máxima a ser detectada.
• Modo de passo único – Converta o sinal e depois pare
• Modo contínuo com taxa de amostragem de 2, 4, 8 ou 16 kbps – Converte continuamente o sinal, a menos que seja interrompido.
• Baixo consumo de corrente; apenas 0,1 mA a 2 kbps

Fig. 2: Imagem mostrando a interface de NRF24LE1 com ADC
Estas são as especificações que extraímos da folha de dados. Agora, para entender o código, pegamos um trecho dos códigos de exemplo fornecidos pela Nordic. Vamos entender a parte principal do código linha por linha.
Funções fornecidas pela biblioteca nórdica
| NOME DA FUNÇÃO | PARÂMETRO DE ENTRADA | SAÍDA | DESCRIÇÃO |
|---|---|---|---|
| hal_adc_set_input_channel | AIN0 – AIN13 | – | Defina o canal de entrada |
| hal_adc_set_reference | INT/VDD/AIN3/AIN9 | – |
Defina a tensão de referência INT – Referência interna de 1,22V VDD – referência 3,3V AIN3/AIN9 – referência externa |
| hal_adc_set_input_mode |
ÚNICO/DIFF_AIN2/ DIFF_AIN6 |
– |
Defina o tipo de entrada SINGLE – Entrada de terminação única DIFF_AIN2 – Entrada diferencial com AIN2 como entrada inversora DIFF_AIN6 – Entrada diferencial com AIN6 como entrada inversora |
| hal_adc_set_conversion_mode | SINGLE_STEP/CONTÍNUO | – |
Defina o modo de conversão SINGLE_STEP – etapa única CONTÍNUO – Contínuo |
| hal_adc_set_resolution |
RES_6BIT/ RES_8BIT/ RES_10BIT/RES_12BIT |
– |
Definir resolução ADC RES_6BIT – resolução de 6 bits RES_8BIT – resolução de 8 bits RES_10BIT – resolução de 10 bits RES_12BIT – resolução de 12 bits |
| hal_adc_set_data_just | APENAS_ESQUERDA/APENAS_DIREITA | – |
Justifique a posição dos dados de saída JUST_LEFT – Posição esquerda JUST_Right – posição correta |
| hal_adc_start | – | – | Iniciar conversão ADC |
| hal_adc_busy | – | 0/1 |
Verifique o status da conversão 0 – Não ocupado 1 – Ocupado |
| hal_adc_read_LSB | – | Byte | Leia o LSB dos dados convertidos |
| hal_adc_read_MSB | – | Byte | Leia o MSB dos dados convertidos |
//Configura o ADC
hal_adc_set_input_channel (HAL_ADC_INP_AIN0);
Aqui precisamos atribuir qual pino de entrada estamos configurando para a entrada analógica. Como estamos usando P0.0, definimos isso por HAL_ADC_INP_AIN0
hal_adc_set_reference (HAL_ADC_REF_VDD);
A tensão de referência ADC é mantida igual à VDD (tensão de alimentação), que é 3,3V
hal_adc_set_input_mode (HAL_ADC_SINGLE);
Como estamos usando uma entrada única, ela está definida como HAL_ADC_SINGLE.
hal_adc_set_conversion_mode (HAL_ADC_SINGLE_STEP);
Durante a conversão ADC, podemos definir o modo de conversão. Aqui nós definimos como etapa única
hal_adc_set_resolution (HAL_ADC_RES_8BIT);
Também podemos definir a resolução antes do controlador iniciar as operações ADC. Estamos configurando para 8 bits
hal_adc_set_data_just (HAL_ADC_JUST_RIGHT);
Podemos ajustar os dados para a direita ou para a esquerda na operação ADC. Estamos ajustando para a direita
Encontre abaixo o loop principal onde a operação do ADC está ocorrendo
Código-fonte do projeto
###
//Program to/* Direitos autorais (c) 2009 Nordic Semiconductor. Todos os direitos reservados.
*
###
Diagramas de circuito
| Diagrama de Circuito-NRF24LE1-Interface-ADC | ![]() |
Vídeo do projeto
