加速度传感器方向校准方法

发布于:2025-07-18 ⋅ 阅读:(15) ⋅ 点赞:(0)

保持平板平放在桌面上,将后置摄像头保持在平板的左上后方,或者右上后方,此为机器的正方向

1、以一台重力方向正常的机器做测试,通过DeviceInfoHw这个软件的加速度测试功能【Accelerometer Test】我们可以知道

X方向数据测试:
将机器右侧抬起,以平板左边框为轴转动,发现X的数据从0开始逐渐增大,从0不断增加到10左右
将机器左侧抬起,以平板右边框为轴转动,发现X的数据从0开始逐渐减小,从0不断减小到-10左右

Y方向数据测试:
将机器顶部抬起,以平板下边框为轴转动,发现Y的数据从0开始逐渐增大,从0不断增加到10左右
将机器底部抬起,以平板上边框为轴转动,发现Y的数据从0开始逐渐减小,从0不断减小到-10左右

Z方向数据测试:
将机器正放,屏方向朝上,发现Z数据是10
将机器反放,屏方向朝下,发现Z数据是-10

2、接下来我们拿到一台重力方向不正确的机器来调试,我们同样打开DeviceInfoHw-传感器-加速规(Accelerometer Test)界面进行调试:

2.1纯文字测试记录结果:

X方向:
我们将机器右侧抬起,以平板左边框为轴转动,发现X的数据不变,Y的数据却从0不断减小为负值,那么说明Y的数据应该是X的才对,并且其数值应该也要取反

Y方向:
我们将机器顶部抬起,以平板下边框为轴转动,发现Y的数据不变,X的数据却从0不断增大为正值,那么说明X的数据应用是Y的才对,并且其数值方向正确,无须取反处理

Z方向:
我们将机器反放,屏方向朝下,Z的数据为-11.1,与上述测试结果作比较,说明当前测试机器Z方向的数据是正确的

2.2 图文测试记录结果:
X方向测试:

X方向:
我们将机器右侧抬起,以平板左边框为轴转动,发现X的数据不变,Y的数据却从0不断减小为负值,那么说明Y的数据应该是X的才对,并且其数值应该也要取反

在这里插入图片描述

Y方向测试:

Y方向:
我们将机器顶部抬起,以平板下边框为轴转动,发现Y的数据不变,X的数据却从0不断增大为正值,那么说明X的数据应用是Y的才对,并且其数值方向正确,无须取反处理

在这里插入图片描述
Z方向测试:

Z方向:
我们将机器反放,屏方向朝下,Z的数据为-11.1,与上述测试结果作比较,说明当前测试机器Z方向的数据是正确的

在这里插入图片描述

3、根据以上测试结果我们直接去修改bsp中对应文件上报数数据部分代码即可

diff --git a/bsp/modules/input/misc/sc7a20/sc7a20.c b/bsp/modules/input/misc/sc7a20/sc7a20.c
index 7acb52dd8a..c76fc8fb17 100755
--- a/bsp/modules/input/misc/sc7a20/sc7a20.c
+++ b/bsp/modules/input/misc/sc7a20/sc7a20.c
@@ -2600,8 +2600,8 @@ static void sc7a20_acc_report_values(struct sc7a20_acc_data *acc, int *xyz)
        input_report_abs(acc->input_dev, ABS_Y, -xyz[1]);   
        input_report_abs(acc->input_dev, ABS_Z, -xyz[2]);
 #else
-    input_report_abs(acc->input_dev, ABS_X, xyz[1]);
-    input_report_abs(acc->input_dev, ABS_Y, xyz[0]);
+    input_report_abs(acc->input_dev, ABS_X, xyz[0]);//xyz[0] --<A1><B7> -xyz[1])
+    input_report_abs(acc->input_dev, ABS_Y, -xyz[1]);//xyz[1] --<A1><B7> -xyz[0])
     input_report_abs(acc->input_dev, ABS_Z, -xyz[2]);  
 #endif

网站公告

今日签到

点亮在社区的每一天
去签到