单片机如何写PID程序?

单片机如何写PID程序?,第1张

具体如下:

1、如果加入D抖动的特别厉害,试试只用PI控制。

2、还有PID参数都是一步一步调出来的,我建议你做个上位机,就是个简单的VB串口程序,用来设置PID参数

3、然后在单片机这边弄个串口接收程序,这里就是个简单的串口程序,人人都会,把接收到的PID存储在缓冲区里。

4、然后单片机程序直接调用。单片机带EEPROM的话,当接收到改变的PID参数时,存储这些参数。去STC官网下你的单片机资料,上面有EEPROM测试程序,直接套用。

#include <stdlib.h>

#include "global_varible.h"

/****************************************************************************

* 模块名: PID

* 描述: PID调节子程序

* 采用PID-PD算法。在偏差绝对值大于△e时,用PD算法,以改善动态品质。

* 当偏差绝对值小于△e时,用PID算法,提高稳定精度。

* PIDout=kp*e(t)+ki*[e(t)+e(t-1)+...+e(1)]+kd*[e(t)-e(t-1)]

*============================================================================

* 入口: 无

* 出口: 无

* 改变: PID_T_Run=加热时间控制

*****************************************************************************/

void PID_Math(void)

{

signed long ee1 //偏差一阶

//signed long ee2 //偏差二阶

signed long d_out //积分输出

if(!Flag_PID_T_OK)

return

Flag_PID_T_OK=0

Temp_Set=3700 //温度控制设定值37.00度

PID_e0 = Temp_Set-Temp_Now //本次偏差

ee1 = PID_e0-PID_e1 //计算一阶偏差

//ee2 = PID_e0-2*PID_e1+PID_e2 //计算二阶偏差

if(ee1 >500) //一阶偏差的限制范围

ee1 = 500

if(ee1 <-500)

ee1 = -500

PID_e_SUM += PID_e0 //偏差之和

if(PID_e_SUM >200) //积分最多累计的温差

PID_e_SUM = 200

if(PID_e_SUM <-200)

PID_e_SUM = -200

PID_Out = PID_kp*PID_e0+PID_kd*ee1 //计算PID比例和微分输出

if(abs(PID_e0) <200) //如果温度相差小于1.5度则计入PID积分输出

{

if(abs(PID_e0) >100) //如果温度相差大于1度时积分累计限制

{

if(PID_e_SUM >100)

PID_e_SUM = 100

if(PID_e_SUM <-100)

PID_e_SUM = -100

}

d_out = PID_ki*PID_e_SUM //积分输出

if(PID_e0 <-5) //当前温度高于设定温度0.5度时积分累计限制

{

if(PID_e_SUM >150)

PID_e_SUM = 150

if(PID_e_SUM >0) //当前温度高于设定温度0.5度时削弱积分正输出

d_out >>= 1

}

PID_Out += d_out //PID比例,积分和微分输出

}

else

PID_e_SUM=0

PID_Out/=100 //恢复被PID_Out系数放大的倍数

if(PID_Out >200)

PID_Out=200

if(PID_Out<0)

PID_Out=0

if(PID_e0 >300) //当前温度比设定温度低3度则全速加热

PID_Out=200

if(PID_e0 <-20) //当前温度高于设定温度0.2度则关闭加热

PID_Out=0

Hot_T_Run=PID_Out //加热时间控制输出

PID_e2 = PID_e1 //保存上次偏差

PID_e1 = PID_e0 //保存当前偏差

}

////////////////////////////////////////////////////////////void PID_Math() end.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7751067.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存