具有NRF24LE1的接口加速度计
在本系列中,我们学习了基本的功能和特点nrf24le1。现在是时候使用它们来实现更高的任务了。未来,我们将与外层世界结合各种功能。今天,我们将使用ADC(模拟到数字转换器)与NRF24LE1的加速度计传感器接口。我们还将使用串行通信将加速读取到我们的PC。
图1:NRF2401的原型与加速度计接口
请参阅以前的文章ADC和串行通信。
我们都学过加速度的定义它是速度的变化率。以前,我们用公式手工计算加速度,但现在是数字时代;现在可以使用传感器来代替人工任务。无论是机械臂还是火箭,这些传感器都有广泛的应用。我们将使用的加速度计传感器是ADXL335。
ADXL335的一些基本功能:
·3轴传感
·低功耗- 350ua(典型)
·1.8V - 3.6 V操作
·小尺寸
·-3g至+ 3g传感范围
功能:
这个模块有3个模拟输出引脚在X, Y和Z方向加速。这些引脚的输出电压从0 - 3.3V变化。
图2:使用加速度计的NRF24LE1接口的PCB布局
3.3V对应于+ 3g,其中g是引力加速度。
我们将使用NRF的内置ADC将模块感应到的模拟电压进行转换,ADC的参考电压为3.3V。X模拟引脚连接到Pin0.0, Y连接到Pin0.1, Z连接到Pin0.2。ADXL335的模块已经内置了3.3V的稳压IC,所以我们将提供5V给这个模块。
在获取不同方向的转换数字值后,我们必须从它们中减去0g值。0G表示没有加速,但加速度计传感器仍然输出一些模拟电压。因此,我们必须从感知的数字值降低这个值。
0g的输出值可以在传感器的数据表中找到。我们使用的0g值是X为1.33V, Y为1.6V, Z方向为0.84V。对应的数字值是103、124和65。
减去0g值后,我们将用传感器的灵敏度划分结果。在MV / g中测量灵敏度。它可以在数据表中找到。我们正在使用近300mV / g的灵敏度值。相应的数字值左右23.除以后,结果将根据g。
因此,计算加速的公式是:
x =(x - 103.0)/23.0中的加速度;
y =(y - 124.0)/23.0的加速;
加速在z =(z - 65.0)/21.0;
其中x,y和z是从模块感测的模拟值。
我们将使用串行通信将计算到PC计算的加速度。用于串行传输的引脚是P0.3。我们还提到了更清晰的理解的代码。
项目源代码
###
/ /程序
/ *版权所有(c)2009北欧半导体。版权所有。
**本文件所载资料为北欧的机密财产*半导体ASA.TERMS和使用条件详细描述*在北欧半导体标准软件许可协议中。**许可人获得免费,不可转让的信息。不*提供任何形式的保管。不能从中删除此标题* 文件。** $ lastchangedrevision:133 $* /#包括//标准I / O库 #包括/ /标准库 #include“nrf24le1.h”// nrf24le1库#include "hal_adc.h" // ADC函数库#include“hal_uart.h”// UART函数库#include“hal_clk.h”#包括// String函数库 #包括//数学函数库 #include "hal_delay.h" //延迟函数库///////////////////////////将整数转换为字符串数组void itoa(int num,char * str){Int i= 0, count = 0;int temp = num;if(num == 0){str (+ +) = ' 0 ';str [i] ='';返回;}而(temp!= 0){int REM = TEMP%10;temp = temp / 10;count ++;}str [count - ] ='';而(num!= 0){int rem = num%10;str [count - ] =(REM> 9)?(REM - 10)+'1':REM +'0';num = num / 10;}返回;}//重复putchar打印一个字符串空白putstring (char * s){而(* s!= 0)hal_uart_putchar(* s ++);}###