|
罗姆传感器评估套件(3)加速度传感器KX022-1020
[复制链接]
本帖最后由 x1816 于 2017-2-18 11:56 编辑
传感器介绍
套件里的加速度传感器型号为KX022-1020,是一款三轴加速度传感器。
其芯片内部框图如下,3个方向上的加速度被分别采集,放大,转换为数字信号。
加速度是速度变化量与发生这一变化所用时间的比值Δv/Δt,是描述物体速度变化快慢的物理量。简单的说就是速度的变化量,而不是速度。另外要注意,如果传感器静止不动,或者匀速运动,也不是加速度就是0,因为我们还要考虑重力加速度,也就是球表面附近的物体因受重力产生的加速度,一般用g表示。
因为这个特性,加速度传感器可以用来检测设备的位置,手机上的重力感应,自动转屏等功能都是通过它实现的。另外某些APP上的“摇一摇”也是通过读取加速度传感器数据来实现的。
硬件连接
真正的传感器芯片是下图中的U1,非常小,和杜邦线的横截面差不多大。
正面 背面 正面标识了X、Y、Z轴的正方向。如果按图片上的位置放置,向上为X轴正方向,向左为Y轴正方向,垂直纸面(屏幕)朝向读者为Z轴正方向。
这个传感器是I2C接口连接,工作电压为1.71-3.6V,这里用1.8V。
测试
测试程序:
- #include <Wire.h>
- #include <KX022.h>
-
- KX022 kx022(KX022_DEVICE_ADDRESS_1E);
-
- void setup() {
- byte rc;
-
- Serial.begin(9600);
- while (!Serial);
-
- Wire.begin();
-
- rc = kx022.init();
- }
-
- void loop() {
- byte rc;
- float acc[3];
-
- rc = kx022.get_val(acc);
- if (rc == 0) {
- Serial.write("KX022 (X) = ");
- Serial.print(acc[0]);
- Serial.println(" [g]");
- Serial.write("KX022 (Y) = ");
- Serial.print(acc[1]);
- Serial.println(" [g]");
- Serial.write("KX022 (Z) = ");
- Serial.print(acc[2]);
- Serial.println(" [g]");
- Serial.println();
- }
-
- delay(500);
-
- }
复制代码
首先将传感器水平放置,在Z轴上有1g的重力加速度。
换个角度,在X轴上有约1g的重力加速度。
再换个角度,在Y轴上有约1g的重力加速度
随便放:
在每个轴上的都有重力加速度的分量
简单做个计算:
可见还是约为1g的重力加速度,说明板子此时是静止状态,通过各分量也不难计算出具体姿态。
以上是重力感应的应用,接下来“摇一摇”板子。
加速度发生了剧烈的变化,绝对值也远超过了1,一个简单的计算就能判断出何时发生了“摇一摇”事件。
|
|