综合技术
直播中

李辰圻

7年用户 214经验值
私信 关注
[问答]

平衡小车PID把速度控制的输出变化量平均分配到20步5ms的控制周期中怎么理解

     做平衡小车的基本都知道平衡小车的控制可以分为三部分的叠加: 直立控制, 速度控制, 方向控制.  直立控制是最主要的 这三部分控制是最终叠加来输出一个值来控制电机转速的. 我看了一些资料有说到直立控制周期为5ms, 速度控制周期为100ms. 然后为了不太影响到直立控制, 要把速度控制的较为缓慢和平滑, 说是把速度控制的输出变化量平均分配到20步5ms的控制周期中.          (暂时不考虑方向控制 假设直立控制输出量:b; 速度控制输出量:s; 最终给电机的控制量(5ms每次): P) 我的理解是:
                                         理解一.     P = b+s/20 * i;     (i初始值为1 然后++i/5ms, i满20后又为1)
                                         理解二.     P = b+s/20;
      大家感觉哪个才是正确的呢???    求解啊!!!

回帖(4)

李峰

2019-1-21 09:47:27
嗯,飞思卡尔官方给出的那个程序没用过,不过看你给出的代码确实是你说的那样,“输出是在上次输出的基础之上慢慢改变的,是增量的”。不过,一定要有上一次速度的状态(g_nMotorOutSpeedOld),形成无论何时电机的速度都是渐变的。不知道飞思卡尔这种设计方案怎么样,我项目中的机子鲁棒性不太好,我之前的速度控制方式实现出来的效果不太好。
举报

刘秀英

2019-1-21 09:58:16
帮顶、
举报

康永清

2019-1-21 10:14:00
我曾经做过一个项目关于平衡小车的,直立控制、速度控制以及方向控制都采用5ms控制周期,比较接近你的理解二,理解一应该是有问题。
举报

谢微微

2019-1-21 10:23:22
看到一个类似理解一的

上图是飞卡官方给的<<直立车参考设计方案>>的速度控制的代码.
红框部分的子程序是每隔5ms调用的(另一个是每隔100ms调用一次),  这很像我的理解一啊.  只不过他的输出是在上次输出的基础之上慢慢改变的,是增量的.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分