溫控程序部分報告——基于msp430g2553
學(xué)習(xí)筆記
for
redesigned
2012-09-14
versions:12_09_01
(1)傳感器信號的采集、處理
(2)加熱絲的PWM輸出
(3)加熱的溫度和速度控制
(4)溫控系統(tǒng)運(yùn)行流程控制:程序初始化、溫控的啟動與結(jié)束、液晶顯示模塊控制
(5)溫控信息顯示與參數(shù)設(shè)定:狀態(tài)顯示、控制算法參數(shù)設(shè)定等
上面的幾個能中,除了程序的初始化在主函數(shù)中執(zhí)行,其他的各個部分都是在中斷函數(shù)中執(zhí)行的,其中鍵盤檢測和數(shù)據(jù)輸入是在鍵盤中斷中執(zhí)行,其他的數(shù)據(jù)采集、處理、控制等都是在定時器5ms中斷中執(zhí)行的。單片機(jī)平時處于低功耗模式,降低功耗。
程序的流程圖如下:
本文主要采用兩種算法實現(xiàn)題目要求:
第一個是PID算法的改進(jìn),由于溫度控制是一個只能加熱不能制冷的控制,所以我們只用了PI。首先通過P讓溫度加到一個離設(shè)定溫度較近的溫度,然后利用I逼近設(shè)定溫度。
程序如下:
void
{
e1=set_t-now_t;
uk=kp*e1+ki*e2+kd*e3;
//
e2=e1+e2;
e3=e1-e4;
e4=e1;
if(uk>speed)
uk=speed;
if(uk<0)
uk=0;
control_value=1-uk;
}
第二個是時間控制的線性算法
在時間控制中要求溫度從40°均勻加熱到60°,并且時間任意可設(shè)。
本程序?qū)崿F(xiàn)的方法是:設(shè)定時間set_time是以s為單位,把40°到60°的這20°溫差平均分成set_time份。然后在控制周期中,每一個周期讓時間段time_m自加1,然后根據(jù)平均的公式算出該時間段應(yīng)該達(dá)到的溫度,公式如下:
因為控制時間輸入set_time是以s為單位,而控制周期是100ms,所以上面要除以10。
具體的實現(xiàn)代碼如下:
control_m_value=(float)time_m/set_time;
control_m_value=control_m_value/10;
control_m_value=40+20*control_m_value;
set_t=control_m_value;
pid();
CCR1=control_value*12000;
評論