OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 388|回复: 1

平衡小车mpu6050角速度数据的问题。

[复制链接]

  离线 

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2017-3-23
在线时间
30 小时
发表于 2017-7-6 16:35:42 | 显示全部楼层 |阅读模式
2金钱
相关的PID 调节程序如下。其中黑体的gyro[0]是x轴角速度,后边注释说乘上0.0153转换单位为度/每秒
可我查相关资料mpu6050读到的数据除以16.40就可以得到角速度,单位为度每秒,也就是乘上1/16.40=0.06098,而不是0.0153。这么算有木有问题?
还有,如何最方便找到mpu静止水平时的gyrox也就是x轴角速度?我用oled测试过他的数据非常不稳定,不容易确定一个小范围的值。
/*************PID控制调节******************************/
/******************************************************
Function: void PID_balance(float vertical)
Description:通过运算得到合适的PWM值
Input: vertical:小车垂直于桌面时得到的角度,用于垂直校准
Output: PWM_L、PWM_L,通过计算得到合适的PWM值
******************************************************/
void PID_balance(float vertical)
{
        static s16 needAngle;
        err = Roll - vertical;                //得到实际偏差角度
        needAngle = err + speedNeedAngle; //需要小车保持的角度
        err = needAngle - vertical;                //得到实际偏差角度
        PWM = - err * pidValue[0]                      //角度
              - (gyro[0]-GYRO_X_ADJUST)*0.0153 * pidValue[1] * 0.1         //角速度     静止初始化时 gyrox=11    *0.0153将单位换算为(°/s)
              - position_dot_filter * pidValue[2] * 0.1 //单位时间脉冲个数,看做速度
                    - position * pidValue[3] * 0.0001;               //运行距离    *0.0001是为了是PID参数为整数
       
        PWM_L = PWM + turnNeed ;
        PWM_R = PWM - turnNeed ;
}


有大神的话帮忙把这个pid调节的程序分析一下,嘿嘿,最近在学校准备参加电子科技竞赛,好多东西都不是很明白。

回复

使用道具 举报

  离线 

482

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
117247
金钱
117247
注册时间
2010-12-1
在线时间
900 小时
发表于 2017-7-6 21:55:54 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-22 05:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */