ADC con NRF24LE1
Estudiamos el primer programa del módulo NRF que era muy simple y logramos hacer parpadear el LED .
Ahora bien, si queremos hacer algo con NRF, debemos saber cómo recibir entradas analógicas ya que la mayor parte del sensor es analógico. En este artículo, veremos cómo utilizar el ADC integrado de NRF y cómo podemos utilizar cualquier sensor analógico y convertir su valor a digital.
Fig. 1: Prototipo de interfaz NRF24LE1 con ADC
Algunas especificaciones importantes sobre el ADC integrado del NRF24LE1 son:
• Resolución de 6, 8, 10 o 12 bits: significa que tenemos la opción de elegir ADC de 6, 8, 10 o 12 bits.
• 14 canales de entrada – 14 pines de entrada para señal de entrada analógica
• Entrada de un solo extremo o diferencial: entrada de una sola línea o entrada de dos líneas
• Rango de escala completa definido por referencia interna, referencia externa o VDD: para definir el voltaje analógico máximo que se detectará.
• Modo de un solo paso: convierte la señal y luego la detiene
• Modo continuo con frecuencia de muestreo de 2, 4, 8 o 16 kbps: convierte la señal continuamente a menos que se interrumpa.
• Bajo consumo de corriente; sólo 0,1 mA a 2 kbps
Fig. 2: Imagen que muestra la interfaz de NRF24LE1 con ADC
Estas son las especificaciones que extrajimos de la hoja de datos. Ahora, para entender el código, tomamos un fragmento de los códigos de ejemplo proporcionados por Nordic. Entendamos la parte principal del código línea por línea.
Funciones que proporciona la biblioteca nórdica
NOMBRE DE LA FUNCIÓN | PARÁMETRO DE ENTRADA | SALIDA | DESCRIPCIÓN |
---|---|---|---|
hal_adc_set_input_channel | AIN0 – AIN13 | – | Establecer el canal de entrada |
hal_adc_set_referencia | INT/VDD/AIN3/AIN9 | – |
Establecer el voltaje de referencia INT – Referencia interna de 1,22V VDD – referencia de 3,3 V AIN3/AIN9 – referencia externa |
hal_adc_set_input_mode |
ÚNICO/DIFF_AIN2/ DIFF_AIN6 |
– |
Establecer el tipo de entrada SINGLE – Entrada de un solo extremo DIFF_AIN2 – Entrada diferencial con AIN2 como entrada inversora DIFF_AIN6 – Entrada diferencial con AIN6 como entrada inversora |
hal_adc_set_conversion_mode | UN SOLO PASO/CONTINUO | – |
Establecer el modo de conversión SINGLE_STEP – un solo paso CONTINUO – Continuo |
hal_adc_set_resolución |
RES_6BIT/RES_8BIT/ RES_10BIT/RES_12BIT |
– |
Establecer resolución ADC RES_6BIT – resolución de 6 bits RES_8BIT – resolución de 8 bits RES_10BIT – resolución de 10 bits RES_12BIT – resolución de 12 bits |
hal_adc_set_data_just | SÓLO_IZQUIERDA/SÓLO_DERECHA | – |
Justificar la posición de los datos de salida. JUST_LEFT – Posición izquierda JUST_Right – posición correcta |
hal_adc_start | – | – | Iniciar la conversión de ADC |
hal_adc_busy | – | 0/1 |
Verificar el estado de la conversión 0 – No ocupado 1 – Ocupado |
hal_adc_read_LSB | – | Byte | Leer el LSB de los datos convertidos. |
hal_adc_read_MSB | – | Byte | Leer el MSB de los datos convertidos. |
//Configurar el ADC
hal_adc_set_input_channel (HAL_ADC_INP_AIN0);
Aquí necesitamos asignar qué pin de entrada estamos configurando para la entrada analógica. Como estamos usando P0.0, lo definimos por HAL_ADC_INP_AIN0
hal_adc_set_reference (HAL_ADC_REF_VDD);
El voltaje de referencia del ADC se mantiene igual a VDD (voltaje de suministro), que es 3,3 V.
hal_adc_set_input_mode (HAL_ADC_SINGLE);
Como utilizamos una única entrada, se establece en HAL_ADC_SINGLE.
hal_adc_set_conversion_mode (HAL_ADC_SINGLE_STEP);
Durante la conversión de ADC, podemos configurar el modo de conversión. Aquí lo definimos como un solo paso.
hal_adc_set_resolución (HAL_ADC_RES_8BIT);
También podemos configurar la resolución antes de que el controlador inicie las operaciones del ADC. Lo estamos configurando a 8 bits.
hal_adc_set_data_just (HAL_ADC_JUST_RIGHT);
Podemos ajustar los datos hacia la derecha o hacia la izquierda en la operación ADC. Nos estamos adaptando a la derecha
Encuentre a continuación el bucle principal donde se lleva a cabo la operación del ADC
Código fuente del proyecto
###
//Programa para
/* Copyright (c) 2009 Nordic Semiconductor. Todos los derechos reservados.
*
###
Diagramas de circuito
Diagrama de circuito-NRF24LE1-Interfaz-ADC |
Vídeo del proyecto