|
小车会两边倒,用的是pd控制,都调了好几遍了还是不行,感觉快要倒了就是办救不会来,做过小车的来给点经验啊!
还有就是mpu6050出来的数据调零也不知道对不对,我是在把小车把平的时候的(必须用手扶着,小车自己不能立起来)通过蓝牙发数据加速度和角速度数据给串口,然后分别求几千次的和的平均,最后
void Angle_Calcu(void)
{
//------加速度--------------------------
//范围为2g时,换算关系:16384 LSB/g
//角度较小时,x=sinx得到角度(弧度), deg = rad*180/3.14
//因为x>=sinx,故乘以1.3适当放大
Accel_x = GetData(ACCEL_XOUT_H); //读取X轴加速度
Angle_ax = (Accel_x -110.69)/16384; //去除零点偏移,计算得到角度(弧度) //主要就是修改这一行和下面的一行!!!调出来的值跟实际通电的时候差别很大!
Angle_ax = Angle_ax*1.2*180/3.1415926; //弧度转换为度,
//-------角速度-------------------------
//范围为2000deg/s时,换算关系:16.4 LSB/(deg/s)
Gyro_y = GetData(GYRO_YOUT_H); //静止时角速度Y轴输出为-30左右
Gyro_y = -(Gyro_y -7)/16.4; //去除零点偏移,计算角速度值,负号为方向处理 //30
//Angle_gy = Angle_gy + Gyro_y*0.01; //角速度积分得到倾斜角度.
//-------卡尔曼滤波融合-----------------------
Kalman_Filter(Angle_ax,Gyro_y); //卡尔曼滤波计算倾角
}
这个程序来实现,求大神指导! |
|