這是我學習單片機的一個小項目
附件包含:Proteus仿真和程序
我現(xiàn)在主要存在著幾個問題:
參數(shù)調(diào)整該咋搞?
在程序中我使用的是增量式PID算法,通過控制out(值域是0-100)來控制高低電平的翻轉(zhuǎn)
- Pout = pp->Kp * dError1; //輸出P
- Iout = pp->Ki * pp->ERR0; //輸出I
- Dout = pp->Kd * dError2; //輸出D
復制代碼- D_Out = (unsigned int) (Pout + Iout + Dout + Out + 0.5); //△Out=Kp*(Ek-Ek-1)+Kp*Ek+Kd*(Ek-2Ek-1+Ek-2)
復制代碼- 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é)合偏差大小來考慮。
建立對象參考模型?
參考了這篇文檔 基于單片機的熏蒸溫度微分先行控制器 趙愛玲, 張海峰, 侯君
“在開環(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)控的誤差
像這種實驗數(shù)據(jù)我是要盯著顯示模塊(我是用LCD1602來顯示實時溫度值)一個個記下來,再畫圖嗎?這個記錄過程是手動記錄?有沒有辦法自動記錄呢?
附件里面有一個“LCD顯示溫度+串口接收溫度”的實例程序,我是否可以用它來記錄溫度數(shù)據(jù)?
如果可以,那我把它移植到溫度控制程序里面,是不是也可以實時記錄了?
最后PID溫度控制有一個誤差值,這個誤差值就是最后溫度穩(wěn)定(沿著一個值震蕩)下來,這個震蕩范圍就是誤差值?
差不多就這么多,還有啥漏提的希望大家集思廣益。謝謝啦!
咨詢.zip
(729.66 KB, 下載次數(shù): 18)
2021-4-27 18:49 上傳
點擊文件名下載附件
附件
|