亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
基于單片機(jī)溫度控制的PID算法及C程序?qū)崿F(xiàn)
[打印本頁]
作者:
1244986336
時(shí)間:
2020-4-22 10:18
標(biāo)題:
基于單片機(jī)溫度控制的PID算法及C程序?qū)崿F(xiàn)
溫度控制系統(tǒng)是一個(gè)慣性較大的系統(tǒng),也就是說, 當(dāng)給溫區(qū)開始加熱之后,并不能立即觀察得到溫區(qū)溫度的明顯上升;同樣的, 當(dāng)關(guān)閉加熱之后, 溫區(qū)的溫度仍然有一定程度的上升。 另外,熱電偶對(duì)溫度的檢測(cè), 與實(shí)際的溫區(qū)溫度相比較,也存在一定的滯后效應(yīng)。所以,傳統(tǒng)的定點(diǎn)開關(guān)控制溫度會(huì)有正負(fù)誤差幾度的現(xiàn)象, 但這不是溫度控制器本身的問題, 而是整個(gè)熱系統(tǒng)的結(jié)構(gòu)性問題,使溫度控制器控溫產(chǎn)生一種慣性溫度誤差。這也給溫度的控制帶來了困難。
要解決溫度控制器這個(gè)問題, 采用PID控制技術(shù), 是明智的選擇。PID控制,是針對(duì)以上的情況而制定的、新的溫度控制方案,用先進(jìn)的數(shù)碼技術(shù)通過 Pvar、Ivar 、Dvar三方面的結(jié)合調(diào)整,形成一個(gè)模糊控制,來解決慣性溫度誤差問題。
基于單片機(jī)溫度控制的PID算法的C 程序如下:
/*
pid 算法 C 源程序,還有實(shí)現(xiàn) pid 自動(dòng)調(diào)整。 51 用于控制溫度 26-100 攝氏度。
TIME:2018-07-29 20:15:07
*/
#include <stdlib.h>
#include "global_varible.h"
/****************************************************************************
* 模塊名 : PID
* 描述 : PID 調(diào)節(jié)子程序
* 采用 PID-PD 算法。在偏差絕對(duì)值大于△ e 時(shí),用 PD 算法,以改善動(dòng)態(tài)品質(zhì)。
* 當(dāng)偏差絕對(duì)值小于△ e 時(shí),用 PID 算法,提高穩(wěn)定精度。
* PIDout=kp*e(t)+ki*[e(t)+e(t-1)+...+e(1)]+kd*[e(t)-e(t-1)]
*=====================================================================
=======
* 入口 : 無
* 出口 : 無
* 改變 : PID_T_Run= 加熱時(shí)間控制
*****************************************************************************/
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; //溫度控制設(shè)定值 37.00 度
PID_e0 = Temp_Set - Temp_Now; // 本次偏差
ee1 = PID_e0 - PID_e1; //計(jì)算一階偏差
//ee2 = PID_e0-2*PID_e1+PID_e2; //計(jì)算二階偏差
//一階偏差的限制范圍
if(ee1 > 500) ee1 = 500;
if(ee1 < -500) ee1 = -500;
PID_e_SUM += PID_e0; //偏差之和
//積分最多累計(jì)的溫差
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; //計(jì)算 PID 比例和微分輸出
if(abs(PID_e0) < 200) //如果溫度相差小于 1.5 度則計(jì)入 PID 積
分輸出
{
if(abs(PID_e0) > 100){ //如果溫度相差大于 1 度時(shí)積分累計(jì)限制
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){ //當(dāng)前溫度高于設(shè)定溫度 0.5 度時(shí)積分累
計(jì)限制
if(PID_e_SUM > 150) PID_e_SUM = 150;
if(PID_e_SUM > 0) d_out >>= 1; //當(dāng)前溫度高于設(shè)定溫度 0.5 度時(shí)削弱積
分正輸出
}
PID_Out += d_out; //PID 比例 ,積分和微分輸出
}
else
PID_e_SUM=0;
PID_Out /= 100; //恢復(fù)被 PID_Out 系數(shù)放大的倍數(shù)
if(PID_Out > 200) PID_Out=200;
if(PID_Out<0) PID_Out=0;
if(PID_e0 > 300) PID_Out=200; //當(dāng)前溫度比設(shè)定溫度低 3 度則全速加熱
if(PID_e0 < -20) PID_Out=0; //當(dāng)前溫度高于設(shè)定溫度 0.2 度則關(guān)閉加
熱
Hot_T_Run = PID_Out; //加熱時(shí)間控制輸出
// PID_e2 = PID_e1; //保存上次偏差
PID_e1 = PID_e0; //保存當(dāng)前偏差
}
復(fù)制代碼
作者:
jovew
時(shí)間:
2024-10-24 07:54
global_varible.h 這個(gè)文件可以提供嗎?
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1