OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6311|回复: 4

平衡小车PID的疑问之一

[复制链接]

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2018-2-13
在线时间
19 小时
发表于 2018-2-13 16:45:28 | 显示全部楼层 |阅读模式
1金钱
     做平衡小车的基本都知道平衡小车的控制可以分为三部分的叠加: 直立控制, 速度控制, 方向控制.  直立控制是最主要的 这三部分控制是最终叠加来输出一个值来控制电机转速的. 我看了一些资料有说到直立控制周期为5ms, 速度控制周期为100ms. 然后为了不太影响到直立控制, 要把速度控制的较为缓慢和平滑, 说是把速度控制的输出变化量平均分配到20步5ms的控制周期中.          (暂时不考虑方向控制 假设直立控制输出量:b; 速度控制输出量:s; 最终给电机的控制量(5ms每次): P) 我的理解是:
                                         理解一.     P = b+s/20 * i;     (i初始值为1 然后++i/5ms, i满20后又为1)

                                         理解二.     P = b+s/20;
      大家感觉哪个才是正确的呢???    求解啊!!!

最佳答案

查看完整内容[请看2#楼]

嗯,飞思卡尔官方给出的那个程序没用过,不过看你给出的代码确实是你说的那样,“输出是在上次输出的基础之上慢慢改变的,是增量的”。不过,一定要有上一次速度的状态(g_nMotorOutSpeedOld),形成无论何时电机的速度都是渐变的。不知道飞思卡尔这种设计方案怎么样,我项目中的机子鲁棒性不太好,我之前的速度控制方式实现出来的效果不太好。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2018-3-6
在线时间
4 小时
发表于 2018-2-13 16:45:29 | 显示全部楼层
柒夜 发表于 2018-3-10 19:23
看到一个类似理解一的

上图是飞卡官方给的的速度控制的代码.

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-2-19 22:01:31 | 显示全部楼层
帮顶、
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2018-3-6
在线时间
4 小时
发表于 2018-3-6 14:09:04 | 显示全部楼层
我曾经做过一个项目关于平衡小车的,直立控制、速度控制以及方向控制都采用5ms控制周期,比较接近你的理解二,理解一应该是有问题。
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2018-2-13
在线时间
19 小时
 楼主| 发表于 2018-3-10 19:23:46 | 显示全部楼层
看到一个类似理解一的

code

code

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

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 21:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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