陀螺仪 MPU6050 解决不同方式安装
时间:2022-10-29 23:00:00
陀螺仪 MPU6050 以不同的方式解决安装(基于安装(基于不同的方式)STM32库函数)
?
1、背景
???1、MPU默认情况下,6050等相关陀螺仪/惯性传感器(姿态传感器/角度传感器)需要水平放置和安装。如图1所示,陀螺仪水平安装PCB在底板上。其中,陀螺仪本身 x-y轴 已在其模块上标记,其z轴可通过右手定则获得(食指沿x轴,中指沿y轴,z轴沿拇指指向)
???
???陀螺仪在图1中x-y-z轴与PCB底板的xs-ys-zs轴是一致的。在这种情况下,陀螺仪的重力方向为z轴负方向;我们自带陀螺仪DMP库得到的欧拉角可以表示如下:
???①沿y轴旋转,为pitch(俯仰)角度
???②沿x轴旋转,为roll(横滚)角度
???③沿z轴旋转,为yaw(航向)角度
?
???2.用正点原子STM32教学源-实验32 MPU以6050六轴传感器实验为例:图2为方向设置,图3为重力方向设置。
?
???①方向设置:
???②重力设置:
1. 重力沿 z轴 /* Don't remove gravity! */ if (accel[2] > 0L) 0是x轴,1是y轴,2是z轴,DMP默认程序写的是accel[2], accel[2] -= 65536L; 因此,只有将芯片水平放置,才能使z轴与G重合 mpu_run_self_test 函数自检成功 else accel[2] = 65536L; 2.重力沿 x轴 if (accel[0] > 0L) accel[0] -= 65536L; else accel[0] += 65536L;
3.重力沿 y轴
if (accel[0] > 0L)
accel[0] -= 65536L;
else
accel[0] += 65536L;
2、需求与解决
1、需求:需要将陀螺仪随着底板PCB垂直安装。①PCB底板的 zs轴与陀螺仪x轴重合(标记zs’,之前PCB底板的xs轴与陀螺仪x轴重合),此时 zs 对应 -x;②PCB底板的y轴与陀螺仪y轴重合(与之前相同),此时 ys 对应 y;③PCB底板的zx轴与陀螺仪z轴与重合,此时 zx 对应 z;④重力方向与陀螺仪x轴正方向重合。因此陀螺仪的方向应设置如下:
陀螺仪方向设置
默认方向
static signed char gyro_orientation[9] = {
1, 0, 0,
0, 1, 0,
0, 0, 1};
1.将默认方向更改为:系统方向与 x-y-z不同; 系统 xs 为 z , 系统 ys 为 y ,系统 zs 为 -x
static signed char gyro_orientation[9] = {
0, 0, 1,
0, 1, 0,
-1, 0, 0};
2、问题解决:
①代码更改内容:
第一步:更改重力方向
static int get_st_biases(long *gyro, long *accel, unsigned char hw_test)
{
...
...
/* Don't remove gravity! */ // 调整重力方向
if (accel[0] > 0L) 0是x轴,1是y轴,2是z轴,DMP默认程序写的是accel[2],
accel[0] -= 65536L; 所以只能通过将芯片水平放置让z轴和G重合才能让mpu_run_self_test函数自检成功
else
accel[0] += 65536L;
...
}
第二步:更改陀螺仪方向
// 系统方向与 x-y-z不同; 系统 xs 为 z , 系统 sy 为 y ,系统 sz 为 -x
static signed char gyro_orientation[9] = {
0, 0, 1,
0, 1, 0,
-1, 0, 0};
②更改之后效果:之前陀螺仪的z轴转动yaw航向角,现在已经变更为新的roll横滚角;从而满足垂直安装在机构上的需求。