Interface do Acelerômetro com NRF24LE1 (Parte 12/14)

Interfaz del acelerómetro con NRF24LE1 (Parte 12/14)

Acelerómetro de interfaz con NRF24LE1

En esta serie, aprendemos las funcionalidades y características básicas del NRF24LE1 . Ahora es el momento de utilizarlos para realizar tareas superiores. En el futuro combinaremos diversas características de la NRF con el mundo exterior. Hoy, conectaremos un sensor acelerómetro con NRF24LE1 usando ADC (convertidor analógico a digital). También enviaremos la lectura de aceleración a nuestra PC mediante comunicación serie.

Protótipo de interface NRF24LE1 com acelerômetro

Fig. 1: Prototipo de interfaz NRF24LE1 con acelerómetro

Consulte nuestros artículos anteriores sobre ADC y comunicación en serie .

Todos hemos estudiado la definición de aceleración, que dice que es la tasa de cambio de la velocidad. Anteriormente, solíamos calcular la aceleración manualmente usando fórmulas, pero esta es una era del mundo digital; Ahora hay sensores disponibles para reemplazar la tarea manual. Estos sensores tienen una amplia gama de aplicaciones, ya sea un brazo robótico o un cohete. El sensor acelerómetro que utilizaremos es el ADXL335.

Algunas características básicas de ADXL335:

· Detección de 3 ejes

· Baja potencia: 350 uA (típico)

· Operación de 1.8V – 3.6V

· Tamaño pequeño

Rango de detección de -3g a +3g

Operación:

Este módulo tiene 3 pines de salida analógica para aceleración en las direcciones X, Y y Z. El voltaje de salida en estos pines oscila entre 0 y 3,3 V.

Layout de PCB de interface NRF24LE1 com acelerômetro

Fig. 2: Diseño de PCB de la interfaz NRF24LE1 con acelerómetro

3,3V corresponde a +3g donde g es la aceleración gravitacional.

Usaremos el ADC incorporado de NRF para convertir el voltaje analógico detectado en el módulo y el voltaje de referencia para el ADC será 3.3V. El pin analógico X se conectará al Pin0.0, Y al Pin0.1 y Z al Pin0.2. El módulo para ADXL335 ya tiene un regulador IC de 3,3 V incorporado. Entonces suministraremos 5V a este módulo.

Después de obtener el valor digital convertido para diferentes direcciones, tenemos que restarles el valor 0g. 0g significa que no hay aceleración, pero el sensor del acelerómetro aún le genera algo de voltaje analógico. Entonces tenemos que reducir este valor del valor digital detectado.

El valor de salida de 0g se puede encontrar en la hoja de datos del sensor. El valor de 0g que estamos usando es 1,33 V para la dirección X, 1,6 V para Y y 0,84 V para la dirección Z. Los valores digitales correspondientes son 103, 124 y 65.

Después de restar los valores de 0g, dividiremos el resultado por la sensibilidad del sensor. La sensibilidad se mide en mV/g. Se puede encontrar en la ficha técnica. Estamos utilizando un valor de casi 300 mv/g para Sensibilidad. El valor digital correspondiente es alrededor de 23. Después de la división, el resultado estará en términos de g.

Por tanto, la fórmula para calcular la aceleración es:

Aceleración en X= (x – 103,0)/23,0;

Aceleración en Y = (y – 124,0)/23,0;

Aceleración en Z = (z – 65,0)/21,0;

Donde x, y y z son los valores analógicos detectados en el módulo.

Transmitiremos la aceleración calculada al PC mediante comunicación serie. El pin para la transmisión en serie es P0.3. También hemos mencionado el código para una comprensión más clara.

Código fuente del proyecto

###

 //Programa para

/* Copyright (c) 2009 Nordic Semiconductor. Todos los derechos reservados.

*
*La información contenida en este documento es propiedad confidencial de Nordic
*ASA Semiconductor. Los términos y condiciones de uso se describen detalladamente. * en el CONTRATO DE LICENCIA DE SOFTWARE ESTÁNDAR DE NORDIC SEMICONDUCTORES. * * Se concede a los licenciatarios el uso gratuito e intransferible de la información. NO * Se proporciona GARANTÍA DE CUALQUIER TIPO. Este título NO debe eliminarse del * el archivo. * *$Última revisión modificada: 133$ */ #incluir //biblioteca de E/S estándar #incluir //biblioteca estándar #incluye "nrf24le1.h" // biblioteca NRF24LE1 #include "hal_adc.h" // biblioteca de funciones ADC #include "hal_uart.h" // biblioteca de funciones UART #incluir "hal_clk.h" #incluir //Biblioteca de funciones de cadena #incluir //Biblioteca de funciones matemáticas #include "hal_delay.h" // biblioteca de funciones de retardo /////////////////////////// función para convertir un número entero en una matriz de cadenas itoa vacía(int num,char* str) { int i = 0, contar = 0; temperatura interna = número; si(núm == 0) { cadena(i++) = '0'; cadena(i) = ''; volver; } mientras (temperatura!=0) { int rem = temp% 10; temperatura = temperatura/10; contar++; } str(cuenta --) = ''; mientras(núm!= 0) { int rem = número% 10; str(cuenta --) = (rem > 9)? (rem - 10) + '1' : rem + '0'; número = número/10; } volver; } // Putchar se repite para imprimir una cadena cadena de puta vacía (char *s) { mientras(*s != 0) hal_uart_putchar(*s++); }

###

Diagramas de circuito

Diagrama de circuito-NRF24LE1-Interfaz de acelerómetro

Vídeo del proyecto

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.