STM32F103C8T6实现直流电机速度PID控制

发布时间:2023-10-17  

01 前言

前面完成了基于STM32F103C8T6+L298N+MG513P30直流电机的PWM控制和两种方法的编码器实时速度反馈,拿到这个反馈值后我们就可以使用经典的PID算法,对电机的转速进行准确的控制了,这篇文章主要分享PID基本原理和Keil5的PID编程。


02 PID的基本原理

PID算法是上个世纪30年代左右提出的控制算法,大至航空航天、小至家庭温度调控都可以使用PID算法,虽然PID算法从提出到现在已经历经了快一个世纪,其后也出现了很多现代的智能算法,比如蒙特卡洛、智能控制等等,但现在PID仍然经久不衰,可以说目前80%以上的控制仍然使用PID算法。


PID算法是自动控制原理课程学习的一部分,但在课程中老师讲解的是最基本的原理,没有任何拓展,更别提应用了,首先,先简单说一下PID控制算法的原理。

图片

上图为PID算法的控制框图,在我们控制电机速度时,期望输入就是电机的期望速度值,期望输入与由编码器测得的实际速度作差,求出的误差值传给PID的控制部分,算出需要输出的控制信号,将该控制信号传给控制器,也就是输出给电机驱动板L298N,这样形成一个循环,就实现了对电机速度的精准控制。


中间PID的控制部分的连续型公式如下:

图片

但是在计算机中计算机很难实现连续型变量的积分或者微分操作,因此在计算机中,我们使用离散型的积分和微分,就是取时间间隔T为1,离散型PID公式如下:

图片

各个项的主要作用及效果如下:

  • P:增加快速性,过大会引起震荡和超调,P单独作用会一直有静态误差

  • I:减少静态误差,过大会引起震荡

  • D:减小超调,过大会使响应速度变慢

在实际的应用中,有可能不需要PID同时使用,比如在速度控制中一般只使用PI控制就够了

03变式PID

PID算法有很多进化版本,分类别的简单阐述一下

增量式PID

在电机的速度PID控制算法中,因为我们一般使用PI算法就够了,所以我们可以使用增量式PID算法,这样可以让我们的公式和代码更加简洁。

图片

积分限幅

因为积分的效果是累加,随着时间的推移,积分项的值会升到很高,积分本来的作用是用来减小静态误差,但积分项过大会引起过大的震荡,所以我们可以加一个判断函数if,当积分项的值达到一定值后,就让积分项保持这个值,避免引起更大的震荡。


积分分离

如果刚开始的误差比较大,那么积分项则会在刚开始就累计到了一个很大的数值,那么当第一次实际输出达到期望值时,不会立刻停止,而是会产生一个很大的过冲。这时就需要用到积分分离,就是当误差值过大时,我们就不使用积分项,只让PD项单独作用,当误差值较小后,再加入积分项,以减小静态误差。


04 Keil5程序


为了使用方便,我们先定一个PID结构体,结构体储存左右轮的PID参数、限幅值、误差等参数。


typedefstruct

{

//相关速度PID参数

floatVelcity_Kp;

floatVelcity_Ki;

floatVelcity_Kd;

floatUr;//限幅值


u8PID_is_Enable;//PID使能

intUn;//期望输出值

intEn_1;//上一次的误差值

intEn_2;//上上次的误差值

intPWM;//输出PWM值


}PID_InitDefStruct;

在程序初始化部分,定义一个初始化函数,对其中的参数进行初始化配置。


voidPID_Init(PID_InitDefStruct*p)

{

p- >Velcity_Kp=5;

p- >Velcity_Ki=0.5;

p- >Velcity_Kd=0;

p- >Ur=7100;

p- >PID_is_Enable=1;

p- >Un=0;

p- >En_1=0;

p- >En_2=0;

p- >PWM=0;

}

当编码器的定时器,每隔10ms反馈一次编码器测出的实际速度后,调用PID函数,求解输出给电机驱动板的PWM值,然后通过Set_Pwm函数进行设置,以此控制电机转速。


voidVelocity_PID(intTargetVelocity,intCurrentVelocity,PID_InitDefStruct*p)

{

if(p- >PID_is_Enable==1)

{

intEn=TargetVelocity-CurrentVelocity;//误差值


p- >Un+=p- >Velcity_Kp*(En-p- >En_1)+p- >Velcity_Ki*En+p- >Velcity_Kd*(En-2*p- >En_1+p- >En_2);//增量式PID


p- >En_2=p- >En_1;

p- >En_1=En;


p- >PWM=p- >Un;


/*输出限幅*/

if(p- >PWM >p- >Ur)p- >PWM=p- >Ur;

if(p- >PWM< -p- >Ur)p- >PWM=-p- >Ur;

}

else

{

PID_Init(p);

}


}

测试给电机输入理想转速为1500mm/s,随便设置了一组PI参数,得到实验结果如下:


测试给电机输入理想转速为1500mm/s,随便设置了一组PI参数,得到实验结果如下:

图片

可以通过上位机看一下波形,可以看到在稳定状态的静差是比较小的。

图片

05 总结

对于PID算法这才是万里长征的第一步吧,想要调出完美的控制程序,还需要复杂的PID参数整定,这里可以配合上位机进行调试。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    ZKS型单相直流电机调速现场使用必须注意的事项;单相直流电机调速器现场使用时需要注意的事项有以下几点: 1. 安装前请先仔细阅读产品使用说明及接线要求; 2. 现场电机如果不带测速电机,则要......
    轻载时节能效果明显,是—种已经广泛推广和应用的节能产品。 ⒉调速器是针对单相电机进行的,分为单相直流控制,单相交流控制和单相直交控制。通过改变接入绕组的电阻和电容等来调节电机的速度和转速。这种......
    做到快速高效又高频的正反转需要拥有一套非常专一的电子线路、高精度检测手段及繁杂的逻辑控制才可安全有效地实现。 现以单相直流DC220V与三相直流DC440V的电机为例。 常规都是用2套可控硅正反并接,2套控......
    ZKS型单相不可逆直流电机调速器使用时注意事项;单相不可逆直流电机调速器在使用时需要注意以下几点: 1. 使用前请仔细参阅说明书 或 网上查看相关资料 2. 输入AC220V工频电源,直流......
    表测绝缘电阻大于0.5M说明是好的,低于0.5M说明电机坏了,但这只是外观判断,对于匝间短路相间击穿只有拆开解体检查。 电动机的故障无非就是两大块:机械和电气。   电气方面   1、三相直流电......
    ZKS型三相直流电机调速器安装接线时的注意事项;1. 常规情况下,三相直流电机调速器30A以上都应该配置进线开关、接触器、电抗器、输入输出保险熔断器(很多厂家只配开关) 2.要求高一点的,磁场......
    是机械故障。 电机振动问题的检修方法 1、电气原因的检修 首先是测定定子三相直流电阻是否平衡,如不平衡,则说明定子连线焊接部位有开焊现象,断开绕组分相进行查找。 另外,绕组是否存在匝间短路现象,如故......
    ZKS型三相直流电机调速器初调时要注意的事项;ZKS型三相直流电机调速器初调时有注意的事项有以下几点: 1.严格按照图纸上的相位顺序将输入输出的线路接好; 2.试机前最好是空载,负载......
    相直流无刷电机驱动电路图解;三相直流无刷电机是指具有三相的绕组、无电刷和换向器(或集电环)的电机,并采用直流电经过逆变电路进行驱动的电机。 与传统的有刷直流电机相比,直流无刷电机采用了电子换向取代有刷电机......
    是行驶时可能产生的种种噪音及静止时冷气空调循环扇的音量亦是,以空调风扇噪音来说,三相马达也许是低噪的最佳选择,但整体成本较高,基于成本及整体效能考量,推出的可优化超前角单相直流无刷马达驱动方案,可说是性价比最高的选择。本文......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>