智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1113|回复: 1
打印 上一主题 下一主题

速度PID为什么没有达到控制电机的目的?求教

[复制链接]

19

主题

97

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2387
威望
1139
贡献
662
兑换币
680
注册时间
2013-7-27
在线时间
293 小时
跳转到指定楼层
1#
发表于 2014-4-4 08:44:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 疯鸟嘛 于 2014-4-4 08:46 编辑

我是用DMA采集出来编码器的脉冲,大概全速转是300+,而我的控制电机的PWM精度是1000,是否需要将其转化为同意数量级?
无论我改变什么参数都不能让电机趋近我给定的值。这是为啥啊?
void speedPid(int stdSpeed,int curSpeed)      //给定速度和采集出来的速度。
{   
    speedError=stdSpeed-curSpeed;
    absSpeedError  = (speedError>0)?speedErrorspeedError*(-1));     //
    if(absSpeedError > 30)
      Kp = 1;//1
    else
      Kp = 1;// 0.175
    pwmMotor+=(int)(Kp*speedError+Ki*(speedError-preSpeedError)+Kd*(speedError-2*preSpeedError+lastSpeedError));               
    if(pwmMotor<=0)
      pwmMotor=0;
    else if(pwmMotor>=1000)
      pwmMotor=1000;
   //FTM_PWM_init(FTM0, CH0, 10000, pwmMotor);
        //FTM_PWM_init(FTM0, CH1, 10000, 500);
    MotorPWM1(pwmMotor);
    preSpeedError=speedError;
    lastSpeedError=preSpeedError;
}
这是PID程序,,求指导。。   
回复

使用道具 举报

0

主题

11

帖子

0

精华

高级会员

Rank: 4

积分
757
威望
228
贡献
129
兑换币
141
注册时间
2013-10-12
在线时间
200 小时
毕业学校
山东科技大学
2#
发表于 2014-4-15 20:07:25 | 只看该作者
(Kp*speedError+Ki*(speedError-preSpeedError)+Kd*(speedError-2*preSpeedError+lastSpeedError))。。。。。(Ki*speedError+Kp*(speedError-preSpeedError)+Kd*(speedError-2*preSpeedError+lastSpeedError))
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-27 15:21 , Processed in 0.049771 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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