mpu6050判断自由落体状态的方法
mpu6050在静止状态时,三个轴方向上的加速度值为有一个方向上的加速度大小为g,其余两个方向上为0。当mpu6050处于自由落体状态时,三个轴方向上的加速度值均为0(实际情况可能会有微小偏差)。
//将加速度传感器的原始数据(数字信号)转换为模拟信号(m/s^2):
//获取转换后的加速度值, g自定义重力加速度值
void Get_Accelerometer(void)
{
short aacx,aacy,aacz; //加速度传感器原始数据
MPU_Get_Accelerometer(&aacx,&aacy,&aacz); //得到加速度传感器数据
acc_x=2\*g\*aacx/32768; //转换后的加速度值
acc_y=2\*g\*aacy/32768;
acc_z=2\*g\*aacz/32768;
}
//延迟自由落体状态触发。
//延迟自由落体状态触发。time:自定义t++执行最小次数,用于延迟事件触发。acc_lim:自定义自由落体最小阈值
while(1)
{
Get_Accelerometer();
t = 0;
while(acc_z <= acc_lim && acc_x <= acc_lim && acc_y <= acc_lim) {
t++;
delay_ms(1);
if(t == time) 触发事件;
Get_Accelerometer();
}
}