STM32
直播中

云达贞

8年用户 957经验值
私信 关注
[问答]

基于单片机的pid控制算法该怎样去使用呢

pid是什么?pid控制该如何去实现呢?
基于单片机的pid控制算法该怎样去使用呢?



回帖(1)

张淑兰

2021-12-22 16:10:06

  • 一.基本概述
    pid((proportion integration differentiation)其实就是指比例,积分,微分控制)是一种控制方式 ,实际使用的时候就是量化出来的。是一种模糊控制, 在单片机中实际应用的时候需要操作定时器一起使用。
    二.简单点的控制算法:位式控制算法
    主要就是控制的时pwm的脉冲宽度 ,单片机的话时ms为单位。图片来说明:主要的描述也在框图中表示。





    三.pid控制的实现
    需要对负载传感器的值不断的进行检测,并且有的开关器件如可控硅二极管就可以运用在其中来进行控制(没有记忆功能的)。步进电机是具有记忆功能的控制。





    算法的分析优点(把问题控制在没有发送之前就进行控制) 1.开机以来传感所有采样点的数据序列X1。。。。Xk (离散化的书写) 2. 分析采样点的数据序列 ,可以挖掘出来三方面的信息
    四.pid算法的分析
    2.使用每个时间点采样的值和用户设定的值做比较(就会得到对应的偏差序列就是历史的偏差序列)E1,E1…Ek 。 代数和的Sk=E1+E2…+Ek(也是有三种可能)就可以知道总体的控制达标量。 把Sk的值在进行放大相当于积分求和 IOUT=KPSk(就是积分算法,最大的好处就是考虑了过去的状态)也需要加上一个out IOUT=KpSk+out , 遗留的问题也会带到现在的控制上来
    3.最近的两次偏差构成 Dk=Ek-Ek-1(也式会有三种可能), 反应的是偏差的变化率,可以反应出来趋势。波动的话一般都是有继承和延续。使用的是最近的时间变化来预见将来的变化趋势, Kp*Dk使用一个系数的话可以使得控制的灵敏度提高。就是D控制,微分控制,(取的是变化量)不过这种控制是不能独立行动的(绝对会有误差), 采样的差值的话80,82,84这样的话变化率是 。 微分的主要是关心的是变化趋势 为了不失控还是需要加一个out(主要是维持一种静态误差,使得有一点控制) 只考虑最近的偏差
    四.pid的数学模型
    数学模型的话就是把三种控制起来的值加在一起就是得到的公式。 PID=Pout+Iout+Dout=(KpEk+out)+(KpSk+out)+(Kp*Dp+out)=Kp(Ek+Sk+Dk)+out 算出来的数值的就是用户来调整脉冲的宽度 。
    五.基于单片机的使用
    1.Sk的处理(累加咋求平均) Sk=1/Ti (n,k=0级数)(不会打级数的表示符号)Ek*T 。 T的话叫做采样周期(计算周期,控制周期)(写程序的时候是用来改变的) 输出的控制信号的来源是单片机,使得负载的平均功率在改变(pid的算法不能一直在搞运算,需要实施起来)。 ****Ti的话叫做积分时间,积分常数(IOUT和pout共同决定的)Ti小的话会消弱历史的数据的控制,因此不能太大或者太小,要合理的调整 pid控制在开始的时候会有过冲主要是误差的分析导致的(解决方法的话可以在到达设定值的之前可以把Ti调的非常大,避免对控制的影响,这个方法叫做积分分离) 到达目标之后的时候就非常有用了 (关键是设置好T和Ti的参数的设计)
    2.Dk的话就是相邻两次的变化率 , Ek-Ek-1/T(pid的运算周期跟上面的式子一样的)Td=Dk (微分算法)类似于电感电压的公式 。 分析的时候可以把Iout去掉好分析一点 , T不能取的太大要不然出来的曲线会比较缓 。 Td越大的话也就是说让微分更多时间去帮 POUT(微分时间常数) 。 因此单片机中pid算法的表达式可以表示为OUT位置式的pid=**(kPEk)比例项+Kp(T/Ti)n,k=0级数)Ek积分项+(Kp(Td/T)(Ek-Ek-1))微分项+out常数项 。**
    3.增量式的pid在嵌入式中使用的较多 数据存储的也比较少 计算机运算的少(主要式具有记忆功能信号) 控制量的增加值 OUT=outk-outk-1 (((kPEk-1)比例项+Kp(T/Ti)n=1开始,k=0级数)Ek积分项+(Kp(Td/T)(Ek-1-Ek-2))微分项+out常数项 )) =Kp(Ek-Ek-1)+KpT/TiEk+KpTd/T(Ek-2Ek-1+Ek-2)计算相对简单,需要的是当前本次偏差,上次,上上次的(一共三次)。
    六.小结
    文字描述的较多看起来有点复杂,实际主要的思想在于框图里面。其他的只不过是对框图的理解以及计算。主要掌握的话还需要实际的操作可能会有不一样的理解。


    • Sv-Xk=Ek大小反应了目标值和设定值的偏差会有三种可能 (大,小,相等) , OUT=KpEk(用来调整偏差值放大倍数,就是输出值) 这个就是比例控制(与差值成比例,差值大的化输出大) 计算出来的输出信号一般式pwm信号(双向可控硅的使用来控制)。 数值的话就用来控制脉冲的宽度 , 缺点在于Ek相等的时候输出信号就会等于0这样的话就没有控制信号了,相当于失去控制了因此的话就需要加一常数以至于能使用小信号控制POUT=KpEk+out 。 只考虑现在,就是当下的情况。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分