急求:关于PID控制量的输出怎样转化为PWM信号对执行机构进行控制
- UID
- 828816
|
急求:关于PID控制量的输出怎样转化为PWM信号对执行机构进行控制
芯片:MC9S12DP256
控制内容:对发动机转速进行增量PID控制,通过调节电子节气门开度,使怠速转速稳定在1000r/min,
我的问题是:通过对怠速设定转速和实际测量转速求偏差,进行PID运算,得到一个控制增量,那么这个控制增量怎么处理呢?把它直接赋给PWM占空比寄存器吗?
这个问题想了好久都没有想明白,非常苦恼,请明白的朋友指教! |
|
|
|
|
|
- UID
- 794675
- 性别
- 男
|
你的得到的增量做个放大活缩小系数,就可直接给Pwm的占比赋值了。我想这样控制起来会有比较大的震荡把,估计pi参数很难调整的,应该是基于扭矩控制的,你的模型可以估算出来怠速的摩擦功,根据这个计算进气量和点火提前角度的修正。 |
|
|
|
|
|
- UID
- 793634
- 性别
- 男
|
我也做过类似的。我的是PID增量,用PWM控制电机。也曾经苦恼于计算出的增量与PWM的关系,一直没有真正的弄明白。通过不断的调试才勉强可以,但是一直不稳定。求解阿。。 |
|
|
|
|
|
- UID
- 835631
|
楼主的问题是PID的控制量如何与执行机构的映射问题,对于单因子控制,对转速偏差得到的PID增量,可以直接给PWM的占空比,楼主想不明白是这两个不是同一个控制对象吧,应该把PID计算结果付给速度因子才对而不是占空比因子。比如PID计算出来的速度为V1, 输出应该为V2 = Kp*V1, 假设输出速度V2 = k1*占空比(所谓的单因子控制),那么占空比 = V2/K1 = Kp*V1/K1 = Kp' *V1, 结论:只要你是单因子模型,输入和输出的映射关系都转换到Kp,Ki,Kd三个参数上了,只要你好好的标这几个参数,根据老衲的经验,就一定能够稳定。不知道我说明白没? |
|
|
|
|
|
- UID
- 828816
|
非常感谢楼上朋友们的热然后情回答!
只是现在还不是特别明白,我现在的做法是这样的:因为我是要通过控制节气门来实现怠速转速的稳定,所以我现在是把对转速偏差得到的PID增量赋给节气门位置变量,这样就得到了一个节气门位置变量的目标值,然后用PID函数计算节气门目标位置和实际位置的偏差,得到的增量再赋给PWM的占空比寄存器。
不知道这样对不对?
还有一个痛苦的问题:
单纯软件仿真的话,能对PID程序进行仿真吗?能看到程序运行的结果吗?运行结果是个什么样的形式? |
|
|
|
|
|
- UID
- 520510
- 性别
- 男
|
推荐使用模拟的PWM来使用,不用模组,这样占空比就容易控制 |
|
|
|
|
|
- UID
- 822621
|
近期用PID PWM 电机转动,用位置式控制相对来说简单些,增量式更合适舵机控制,此乃个人看法,望指正 |
|
|
|
|
|
- UID
- 835631
|
5# benbentl
楼主你好,你个要看你的怠速控制模型了啊,那一块特别复杂,应该不只是仅仅控制节气门开度来稳怠速吧,比如还有大气压力,水温有么?还有怠速如果稳到1000转,此时再踩油门踏板,转速上去到3000转后跌落时还能稳到1000转么?
单纯从PID控制原理来说,转速偏差通过PID计算然后给节气门开度是没有问题的,通过控制进气量来控制燃烧效率。但是实际上你可能在整车上调试的不好,这并不是说明Kp,Ki,Kd没有标好,而是控制对象很复杂,控制策略可能需要完善。。。
至于单独对PID算法的软仿,没有意义啊,给一个阶跃信号,得到稳定值和响应时间,超调...书上就有,
算法大家都知道,不要怀疑算法,关键是看你怎么去用 |
|
|
|
|
|