分享

罗姆传感器评估套件(3)加速度传感器KX022-1020

 知芯世界 2020-10-28

往期回顾:

罗姆传感器评估套件开箱

罗姆传感器评估套件(2)Sensor Shield的使用和软件平台搭建

传感器介绍
套件里的加速度传感器型号为KX022-1020,是一款三轴加速度传感器。
其芯片内部框图如下,3个方向上的加速度被分别采集,放大,转换为数字信号。

加速度是速度变化量与发生这一变化所用时间的比值Δv/Δt,是描述物体速度变化快慢的物理量。简单的说就是速度的变化量,而不是速度。另外要注意,如果传感器静止不动,或者匀速运动,也不是加速度就是0,因为我们还要考虑重力加速度,也就是球表面附近的物体因受重力产生的加速度,一般用g表示。
因为这个特性,加速度传感器可以用来检测设备的位置,手机上的重力感应,自动转屏等功能都是通过它实现的。另外某些APP上的“摇一摇”也是通过读取加速度传感器数据来实现的。
硬件连接
真正的传感器芯片是下图中的U1,非常小,和杜邦线的横截面差不多大。

正面

背面

正面标识了X、Y、Z轴的正方向。如果按图片上的位置放置,向上为X轴正方向,向左为Y轴正方向,垂直纸面(屏幕)朝向读者为Z轴正方向。
这个传感器是I2C接口连接,工作电压为1.71-3.6V,这里用1.8V。

测试
测试程序:

  1. #include <Wire.h>

  2. #include <KX022.h>

  3. KX022 kx022(KX022_DEVICE_ADDRESS_1E);

  4. void setup() {

  5.   byte rc;

  6.   Serial.begin(9600);

  7.   while (!Serial);

  8.   Wire.begin();

  9.   rc = kx022.init();

  10. }

  11. void loop() {

  12.   byte rc;

  13.   float acc[3];

  14.   rc = kx022.get_val(acc);

  15.   if (rc == 0) {

  16.     Serial.write("KX022 (X) = ");

  17.     Serial.print(acc[0]);

  18.     Serial.println(" [g]");

  19.     Serial.write("KX022 (Y) = ");

  20.     Serial.print(acc[1]);

  21.     Serial.println(" [g]");

  22.     Serial.write("KX022 (Z) = ");

  23.     Serial.print(acc[2]);

  24.     Serial.println(" [g]");

  25.     Serial.println();

  26.   }

  27.   delay(500);

  28. }

复制代码

首先将传感器水平放置,在Z轴上有1g的重力加速度。

换个角度,在X轴上有约1g的重力加速度。

再换个角度,在Y轴上有约1g的重力加速度

随便放:

在每个轴上的都有重力加速度的分量
简单做个计算:

可见还是约为1g的重力加速度,说明板子此时是静止状态,通过各分量也不难计算出具体姿态。
以上是重力感应的应用,接下来“摇一摇”板子。

加速度发生了剧烈的变化,绝对值也远超过了1,一个简单的计算就能判断出何时发生了“摇一摇”事件。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多