找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2971|回復: 6
收起左側(cè)

關(guān)于單片機PID溫度控制程序的相關(guān)問題

[復制鏈接]
ID:546381 發(fā)表于 2021-4-27 18:49 | 顯示全部樓層 |閱讀模式
這是我學習單片機的一個小項目
附件包含:Proteus仿真和程序

我現(xiàn)在主要存在著幾個問題:
參數(shù)調(diào)整該咋搞?

在程序中我使用的是增量式PID算法,通過控制out(值域是0-100)來控制高低電平的翻轉(zhuǎn)
  1.     Pout = pp->Kp * dError1;        //輸出P
  2.                 Iout = pp->Ki * pp->ERR0;        //輸出I
  3.                 Dout = pp->Kd * dError2;        //輸出D
復制代碼
  1. D_Out = (unsigned int) (Pout + Iout + Dout + Out + 0.5);  //△Out=Kp*(Ek-Ek-1)+Kp*Ek+Kd*(Ek-2Ek-1+Ek-2)
復制代碼
  1. Out = Out + D_Out;      //記錄這次輸出的值
復制代碼

1)在偏差比較大時,為使盡快消除偏差,提高響應速度,同時為了避免系統(tǒng)響應出現(xiàn)超調(diào),Kp 取大值,Ki 取零;在偏差比較小時,為繼續(xù)減小偏差,并防止超調(diào)過大、產(chǎn)生振蕩、穩(wěn)定性變差,Kp 值要減小,Ki 取小值;在偏差很小時,為消除靜差,克服超調(diào),使系統(tǒng)盡快穩(wěn)定,Kp 值繼續(xù)減小,Ki 值不變或稍取大。
2)當偏差與偏差變化率同號時,被控量是朝偏離既定值方向變化。因此,當被控量接近定值時,反號的比例作用阻礙積分作用,避免積分超調(diào)及隨之而來的振蕩,有利于控制;而當被控量遠未接近各定值并向定值變化時,則由于這兩項反向,將會減慢控制過程。在偏差比較大時,偏差變化率與偏差異號時,Kp 值取零或負值,以加快控制的動態(tài)過程。
3)偏差變化率的大小表明偏差變化的速率,e(t)-e(t-1)越大,Kp 取值越小,Ki 取值越大,反之亦然。同時,要結(jié)合偏差大小來考慮。

建立對象參考模型?
參考了這篇文檔  基于單片機的熏蒸溫度微分先行控制器  趙愛玲, 張海峰, 侯君
%`J59)5L(%[(KXY}8_2OL_9.png

在開環(huán)狀態(tài)下, 通過多次實驗確定對象模型, 系統(tǒng)初始溫度選擇室溫 20 ℃, 根據(jù)多次重復實驗數(shù)據(jù)的變化規(guī)律, 選每 30 s 為 1 個采樣時間間隔, 得到較為穩(wěn)定的實驗數(shù)據(jù)如表 1 所示 ”意思是,不加入算法調(diào)控,給加熱器器件通電,記錄他的溫度值(比如說我放水里面,記錄水溫),然后根據(jù)這個畫出圖,這個就算是他的模型?


實驗結(jié)果及數(shù)據(jù)這塊,有一個PID算法調(diào)控的評測,溫度調(diào)控的誤差
CS{[V~UWB%}7PJJ]$~UUZPN.png
像這種實驗數(shù)據(jù)我是要盯著顯示模塊(我是用LCD1602來顯示實時溫度值)一個個記下來,再畫圖嗎?這個記錄過程是手動記錄?有沒有辦法自動記錄呢?

附件里面有一個“LCD顯示溫度+串口接收溫度”的實例程序,我是否可以用它來記錄溫度數(shù)據(jù)?
如果可以,那我把它移植到溫度控制程序里面,是不是也可以實時記錄了?

最后PID溫度控制有一個誤差值,這個誤差值就是最后溫度穩(wěn)定(沿著一個值震蕩)下來,這個震蕩范圍就是誤差值?

差不多就這么多,還有啥漏提的希望大家集思廣益。謝謝啦!

咨詢.zip (729.66 KB, 下載次數(shù): 18)

回復

使用道具 舉報

ID:569384 發(fā)表于 2021-4-28 10:39 | 顯示全部樓層
上b站找些pid的視頻認真的看一看,要理解透徹
回復

使用道具 舉報

ID:913577 發(fā)表于 2021-4-28 15:18 | 顯示全部樓層
直接用matlab做不就行了
回復

使用道具 舉報

ID:909296 發(fā)表于 2021-4-28 15:55 | 顯示全部樓層
要做數(shù)據(jù)記錄可以用一個sd卡模塊,編一段程序,往sd卡里面寫數(shù)據(jù),然后到電腦上處理就好,這是最快捷的做法,比一直連接電腦這種我覺得方便多了,一般做數(shù)據(jù)記錄都是用內(nèi)存卡的。
回復

使用道具 舉報

ID:546381 發(fā)表于 2021-4-29 10:25 | 顯示全部樓層
mornbin 發(fā)表于 2021-4-28 15:18
直接用matlab做不就行了

我知道可以用matlab畫圖,但是我不知道咋記錄數(shù)據(jù)啊,一個個收集(手記)也太蠢了吧。準備用串口記錄來著
回復

使用道具 舉報

ID:546381 發(fā)表于 2021-4-29 10:26 | 顯示全部樓層
haokey 發(fā)表于 2021-4-28 10:39
上b站找些pid的視頻認真的看一看,要理解透徹

PID的原理我大致上都摸清楚了,但是到具體應用就有點犯迷糊。
回復

使用道具 舉報

ID:546381 發(fā)表于 2021-4-29 10:26 | 顯示全部樓層
96578741251 發(fā)表于 2021-4-28 15:55
要做數(shù)據(jù)記錄可以用一個sd卡模塊,編一段程序,往sd卡里面寫數(shù)據(jù),然后到電腦上處理就好,這是最快捷的做法 ...

如果用sd卡的話,可能實現(xiàn)不了。沒那個條件,不過謝謝你提供了一個思路
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表