请 大师解决MPU6050 左转右转 算法灵敏度问题 重谢
我现在做了一个汽车转向灯 用6050 感觉转向时不灵敏。必须猛打方向才有信号。请大师帮助重谢void Gesture_Update(void)
{
static uint8_t no_new_direction_tick =0;
AccGyroStructure.acc_x =GetData(ACCEL_XOUT_H) +4096; //显示X轴加速度
AccGyroStructure.acc_y =GetData(ACCEL_YOUT_H) +4096; //显示Y轴加速度
AccGyroStructure.acc_z =GetData(ACCEL_ZOUT_H) +4096; //显示Z轴加速度
AccGyroStructure.gyr_x =GetData(GYRO_XOUT_H) +4096; //显示X轴角速度
AccGyroStructure.gyr_y =GetData(GYRO_YOUT_H) +4096; //显示Y轴角速度
AccGyroStructure.gyr_z =GetData(GYRO_ZOUT_H) +4096; //显示Z轴角速度
Uart_Send_String("\r\n ");
if(AccGyroStructure.gyr_z >=0)
sprintf(strBuffer," %.5d ",AccGyroStructure.gyr_z);
else
sprintf(strBuffer,"%.5d ",AccGyroStructure.gyr_z);
Uart_Send_String(strBuffer);
//Accelarate_Gyro_XYZ_Filter(); //水平放置时gyro的offset约为 -56
if(AccGyroStructure.gyr_z > SENSOR_OFFSET_MAX +AccGyroStructure.gyr_z_offset) // 左转时数据变大
{
no_new_direction_tick =0;
//if(SYSTEM_MODE_STABLE ==SystemStruture.curMode )
{
SystemStruture.curMode =SYSTEM_MODE_TURN;
SystemStruture.curOption =SYSTEM_TURN_RIGHT;
}
}
else if(AccGyroStructure.gyr_z < AccGyroStructure.gyr_z_offset -SENSOR_OFFSET_MIN) // 右转时数据变小
{
no_new_direction_tick =0;
//if(SYSTEM_MODE_STABLE ==SystemStruture.curMode )
{
SystemStruture.curMode =SYSTEM_MODE_TURN;
SystemStruture.curOption =SYSTEM_TURN_LEFT;
}
}
else
{
no_new_direction_tick ++;
if(no_new_direction_tick >0)
{
no_new_direction_tick =0;
SystemStruture.curMode =SYSTEM_MODE_STABLE;
SystemStruture.curOption =SYSTEM_NONE_OPTION;
}
}
// if(AccGyroStructure.gyr_x >=0)
// sprintf(strBuffer," %.5d ",AccGyroStructure.gyr_x);
// else
// sprintf(strBuffer,"%.5d ",AccGyroStructure.gyr_x);
// Uart_Send_String(strBuffer);
// if(AccGyroStructure.gyr_y >=0)
// sprintf(strBuffer," %.5d ",AccGyroStructure.gyr_y);
// else
// sprintf(strBuffer,"%.5d ",AccGyroStructure.gyr_y);
// Uart_Send_String(strBuffer);
if(AccGyroStructure.gyr_z >=0)
sprintf(strBuffer," %.5d ",AccGyroStructure.gyr_z);
else
sprintf(strBuffer,"%.5d ",AccGyroStructure.gyr_z);
Uart_Send_String(strBuffer);
if(AccGyroStructure.gyr_z_offset >=0)
sprintf(strBuffer," %.5d ",AccGyroStructure.gyr_z_offset);
else
sprintf(strBuffer,"%.5d ",AccGyroStructure.gyr_z_offset);
Uart_Send_String(strBuffer); 用dmp吧,一个库
库函数及代码:https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050
直接运行范例程序:i2cdevlib / Arduino / MPU6050 / Examples / MPU6050_DMP6 /
(路径:https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050/Examples/MPU6050_DMP6 ) 开机之后需要一段时间自动校正 大师你的 QQ 号多少,我的279641518 这只是模拟啊,我装到车上还是还是反应慢:dizzy: 转角太小,装方向盘才有用。 1981818001 发表于 2016-6-17 11:24 static/image/common/back.gif
转角太小,装方向盘才有用。
什么意思
我那个 往右转时灵敏度高,挺好。就是往右转时反应迟钝
页:
[1]