打印

无刷直流电机PID调速

[复制链接]
2232|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tec2|  楼主 | 2011-8-4 14:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在做无刷直流电机PID调速,通过调整PWM的占空比来调速,调速使用增量式PI算法,但只在低于1000RPM时正常调速,高于这个速度时,调速不起作用,始终维迟在1000RPM左右。是什么原因?部分代码:

speed_error_current = target_speed - actual_speed ;         
proportional_term=(KP*(speed_error_current-speed_error_last));
integral_term =(speed_error_current*KI);
speed_error_last = speed_error_current;
pid_out=proportional_term+integral_term;
pwm_adjust=(pid_out/800);   
pwm_duty = current_pwm_duty + pwm_adjust;

相关帖子

沙发
lixiaoxu2meng| | 2011-8-4 15:32 | 只看该作者
1# tec2
LZ的问题  “是什么原因” 我是没明白啥意思

至于代码 可以给你解释一下
计算出 目标速度与当前速度的差值
speed_error_current = target_speed - actual_speed ;      
计算比例增量
proportional_term=(KP*(speed_error_current-speed_error_last));
计算积分增量
integral_term =(speed_error_current*KI);
将当前的速度差赋给上一次的速度差  以便下一次计算时用
speed_error_last = speed_error_current;
增量的PID输出
pid_out=proportional_term+integral_term;
根据增量来调节PWM 占空比
pwm_adjust=(pid_out/800);   
pwm_duty = current_pwm_duty + pwm_adjust;

使用特权

评论回复
板凳
tec2|  楼主 | 2011-8-4 16:04 | 只看该作者
谢谢, 代码我知道,这是我自己写的。什么原因的意思是为什么速度调不上去,比如,我的目标速度是3600RPM,但它只运行到1000RPM左右,就稳定了。

使用特权

评论回复
地板
lixiaoxu2meng| | 2011-8-4 16:10 | 只看该作者
没有理由啊 你全速输出时 能达到多少转

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

34

帖子

0

粉丝