智能车制作

标题: 电机PID控制 [打印本页]

作者: IT天下    时间: 2012-7-8 12:25
标题: 电机PID控制
请教一个问题: 之前都是开环跑,这两天调闭环,用PID只能给一个PID设定值,只要改变设定值,电机就会狂转,一时还检查不到原因
void Speed_PID(uint expect,uint feedback)
{
  motor_err=expect-feedback;
  speedP=lastspeed + KpSP*(motor_err-lastmotor_err);
  lastspeed=speedP;
  lastmotor_err=motor_err;
  PWMDTY67=speedP;
}

这个是电机闭环控制程序

作者: isearching    时间: 2012-7-8 13:14
只用P控制?
作者: IT天下    时间: 2012-7-8 15:02
isearching 发表于 2012-7-8 13:14
只用P控制?

加了个I,差点把电机搞坏,差速齿轮都磨了
作者: 易湘鑫    时间: 2012-7-8 15:37
你的公式好像有问题。。。另外注意你定义的变量值的范围
作者: renqinglei    时间: 2012-7-8 21:18
最好不要这样搞,输入是什么输出还是什么。
作者: 侠意    时间: 2012-8-1 16:01

作者: woaikebe1234    时间: 2012-10-21 12:09

作者: xiongcaifei    时间: 2013-1-18 18:45
公式真错了啊
作者: JudeScorpio    时间: 2013-2-3 19:02
pwm_dianji = PWMDTY45 + Kp*(speed_error - last_speed_error)+Ki*speed_error+Kd*(speed_error-2*pre_speed_error+last_speed_error);
有学长留的这个公式,我在纠结呢
作者: 零度的亲吻    时间: 2014-2-19 16:18
参数错了,输入的不该是速度,该是编码器的值




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2