找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2816|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

上傳一個(gè)PID調(diào)節(jié)例程(PID難點(diǎn)在參數(shù),推薦ZN整定法)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:264387 發(fā)表于 2021-6-4 14:53 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include "pid.h"

PID pid; //存放PID算法所需要的數(shù)據(jù)

//          pid.Sv=120;        //用戶設(shè)定溫度
//        pid.Kp=30;         //比例系數(shù)
//        pid.T=500;         //PID計(jì)算周期
//          pid.Ti=5000000;         //積分時(shí)間
//        pid.Td=1000;         //微分時(shí)間
//        pid.pwmcycle=200;        //pwm周期1000
//        pid.OUT0=1;
void PID_Calc()  //pid計(jì)算
{
        float DelEk;
        float ti,ki;
        float td;
        float kd;
        float out;
if(pid.C10ms<(pid.T))  //計(jì)算周期未到
{
    return ;
}

pid.Ek=pid.Sv-pid.Pv;   //當(dāng)前的偏差值 = 設(shè)定值 - 返回值
pid.Pout=pid.Kp*pid.Ek; //比例輸出 = 比例系數(shù)*偏差

pid.SEk+=pid.Ek;        //歷史偏差總和

DelEk=pid.Ek-pid.Ek_1;  //最近兩次偏差之差

ti=pid.T/pid.Ti;  //系數(shù)1

ki=ti*pid.Kp;     // 系數(shù)2

  pid.Iout=ki*pid.SEk*pid.Kp;  //積分輸出 = 系數(shù)2 * 偏差和 * 比例系數(shù)

td=pid.Td/pid.T;   //系數(shù)3

kd=pid.Kp*td;      //系數(shù)4

pid.Dout=kd*DelEk; //微分輸出 = 系數(shù)4 * 最近兩次偏差和

out= pid.Pout+ pid.Iout+ pid.Dout; //PID輸出 = 比例輸出 + 積分輸出 + 微分輸出

///////////////////////////輸出保護(hù)///////////////////////////////
if(out>pid.pwmcycle)
{
  pid.OUT=pid.pwmcycle;
}
else if(out<0)
{
  pid.OUT=pid.OUT0;
}
else
{
  pid.OUT=out;
}
//pid.OUT+=; //本次的計(jì)算結(jié)果
pid.Ek_1=pid.Ek;  //更新偏差

pid.C10ms=0;
}

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:462629 發(fā)表于 2021-12-28 10:07 | 只看該作者
這個(gè)能直接使用嗎,
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表