呂淑平, 王 瀟
(哈爾濱工程大學自動化學院,黑龍江哈爾濱150001)
采用單片機MC9SXS128設計了1種水溫控制系統,該系統用于學生實驗課里,集成了3種溫度傳感控制方案,實驗時學生可任選1種或幾種。這樣不僅增加了系統的靈活性,也更好地擴大了學生的知識面[1]。
系統采用MC9SXS128為主控芯片,包含PT100電橋、PT1000阻值-頻率變換及DS12B20數字芯片等水溫測定方案。經PID算法得到控制量,通過脈寬寬度調制(PWM)、過零觸發方法控制加熱棒功率從而控制水溫。水溫控制實驗系統結構圖如圖1所示。

圖1 水溫控制系統結構圖
執行部分采用過零觸發固態繼電器和加熱棒。
繼電器輸入控制端為3~32 VDC,輸出端為5 A 380 V,50~60 Hz,加熱棒功率為500~1 000 W。固態繼電器通過過零控制,在設定時間間隔內,改變固態繼電器內部晶閘管導通的周波數實現對加熱棒功率控制,配合PWM模塊可方便實現。圖2是實驗測得繼電器全導通下加熱棒對一定量水加熱溫度曲線。
2.2.1 PT100 電橋方案
PT100鉑電阻測溫元件和R4、R5、可調電阻R6組成單臂電橋,TL431為電橋提供2.5 V穩定電壓。由于執行部分過零觸發工作頻率太小(10 Hz),出現低頻干擾,系統加入2階低通濾波電路消除低頻干擾,截頻率為21 Hz(水溫變化正常不會超過這個頻率)。2級放大輸出直接連接單片機ADC0口,如圖3所示。
2.2.2 PT1000鉑電阻阻值頻率變換方案

圖2 繼電器全導通下一定量水加熱溫度曲線

圖3 PT100電橋方案電路
方案如圖4所示,利用NE555時基電路實現多諧振蕩器產生矩形波,頻率和矩形波占空比只與相關電阻值有關。輸出方波脈沖振蕩頻率為:

由于PT1 000阻值隨溫度變化,通過NE555得到1個近似線性的頻率變化,利用MC9SXS128內部增強型捕獲定時器ECT捕獲該頻率大小和矩形波高電平脈寬,得到頻率與溫度之間的關系。

圖4 PT1000鉑電阻阻值頻率變換方案電路
2.2.3 DS18B20 數字芯片方案
電路如圖 5所示,采用美國 DALLAS公司DS18B20,單總線接口方式。該方案為數字信號傳送,抗干擾能力強,溫度不必標定。

圖5 PT100鉑電阻阻值頻率變換方案
軟件部分包括基于MC9SXS128的嵌入式和基于C++Builder 6平臺設計的上位機軟件編程。
軟件采用C語言編程、模塊化結構,各硬件模塊對應相應軟件模塊。主函數首先對功能寄存器等進行配置初始化,包括CPU倍頻、ADT初始化、SCI初始化、ECT初始化、PWM初始化等。流程圖如圖6所示。
3.1.1 增強型定時器捕獲脈沖頻率
通過ECT捕獲N個矩形波上升沿或下降沿數量,并讀出n=0和n=N時ECT定時器寄存器值存于Count[0]和 Count[1]中。因為定時器在自加過程中可能會溢出,這樣在相減得到N個脈沖的時間內需要

圖6 嵌入式軟件流程圖
判斷是否溢出,同時保證在采集0~N過程中,不會發生定時器2次溢出情況,程序設計如下:
if(Count[1]> Count[0])
{period=Count[1]-Count[0];//N 個周期}
else if(Count[0] > Count[1])//顯然是溢出了 16 的定時器計數范圍
{period=0xffff-Count[0] +1+Count[1];//處理溢出}
3.1.2 改進增量式PID算法
算法程序如下:
int Pid_cal(int SetTemp){
e=(int)(SetTemp-Temp);
//求出偏差量,其SetTemp為期望溫度值
de=e-ePast;//求出微分量
ePast=e;//記錄偏差信號
Out=(e+de*Kd)*Kp+ie/Ki;//PID運算
OutPast[1] =OutPast[0];
OutPast[0] =Out;
ie=OutPast[1]+OutPast[0];//求出積分值
if(ie>30000)ie=30000;//限制積分值上限
else if(ie<=0)ie=0;//不做低溫積分
if(Out>=16500)Out=16500;//輸出值進行限幅
else if(Out<0)Out=0;//小于0的輸出不計算
return Out;}
算法參數的確定首先采用階躍曲線法建立系統數學模型,再通過MATLAB仿真確定控制參數。階躍曲線如圖7,8所示,由曲線得到:y(t1)=0.39y(∞),y(t2)=0.632y(∞)時的 t1和 t2值。
一階慣性延時數學模型設為

求出:K=y(∞)/x0,T=2(t2-t1),τ=2t1-t2。
經多次計算驗證得到系統數學模型為:

圖7 階躍響應曲線

利用Matlab得到PID階躍曲線,經調試獲得控制參數 KP=120,KI=0.2,KD=20。

圖8 PID階躍跟蹤結果
上位機采用Borland公司C++Builder 6.0,主要使用YbCommDevice串口控件、TChart圖表繪制控件和TTimer控件等。上位機軟件主流程圖如圖9所示。
3.2.1 串口控件YbCommDevice
YbCommDevice控件具有串口自動識別和選擇、奇偶校驗、數據位控制、停止位設置,并且可以設置調制解調器功能,如數據流控和自動應答等功能。設置界面如圖10所示。
讀取串口數據代碼如下:
unsigned char Buf[8192];//收到的字節數不會超過串口緩存的容量
AnsiString s;//AnsiString數據類型代表一序列的數據字,容量可從4 bytes到2GB
int n=YbCommDevice1->Read(Buf,8192);//收到 n 個字節
寫串口數據代碼如下:
YbCommDevice1-> Write(Buffer,nBytes);
Buffer表示待發送數據所在數組,nBytes表示所需發送的數據長度。
3.2.2 TTimer 實現多線程操作
使用TTimer控件實現多線程操作或稱分時操作。方法是,使用多個TTimer,設置每個TTimer在沒有其他任務時的觸發時間。圖11為2個TTimer同時工作的流程圖。

圖9 上位機軟件主要流程圖

圖10 YbCommDevice控件設置界面

圖11 兩個TTimer同時工作流程圖
研制了基于MC9SXS128水溫控制實驗系統,與目前實驗室現有的基于PLC過程控制實驗系統相比,該系統制作簡單、成本低。學生在掌握檢測傳感、過程控制等理論基礎上,可進行建模及不同算法研究。
[1] 王再英,劉懷霞,陳毅靜.過程控制系統與儀表[M].北京:機械工業出版社,2007.
[2] 王天曦,李鴻儒,楊興華.堅持改革創新,開創電子實習新局面[J].實驗技術與管理,2003,20(4):90-94.
[3] 管鳳旭,譚吉來,呂淑萍.基于ARM的液位自動控制實驗系統[J].實驗室研究與探索,2010,29(3):10-13.
[4] 胡曉波,李 瑛,王艷芳.計算機仿真技術在實驗教學中的應用[J].實驗室科學,2007(2):121-123.
[5] 馮毅萍,樂嘉華.計算機液位控制系統實驗裝置的研制[J].實驗室研究與探索,2000(2):78-80.
[6] 王正林,郭陽寬.過程控制與Simulink應用[M].北京:電子工業出版社,2006.
[7] 呂淑平,馬忠麗,王科俊.高等工程教育的實踐與思考[J].實驗技術與管理,2010,27(8):123-135.
[8] 呂淑平,韓 健.按鍵及聲控步進電機控制系統開發[J].實驗科學與技術,2011,9(3):6-9.
[9] 賈 麗,袁小平,陳 燁,等.常用液位檢測方法的研究[J].能源技術與管理,2009(1):120-122.
[10] 洪志剛,杜維玲,周 玲.超聲波外測液位檢測方法研究[J].電子測量與儀器學報,2007,21(4):46-49.
[11] 管鳳旭,楊慶國,呂淑萍.基于ARM的環境檢測與控制綜合實驗系統設計[J].實驗技術與管理,2010,27(10):106-109.
[12] 王 毅,白澤生.現代溫室環境多參數測控系統設計[J].微計算機信息,2008,24(20):140-141.
[13] 匡迎春,沈 岳,姚幫松,等.簡易型溫室溫濕度控制器設計[J].湖南農業大學學報,2009,35(4):452-456.
[14] 李宏俊,黃 鑫,盧開硯.以單片機為核心的溫室智能控制系統[J].電子元器件應用,2007,9(5):20-23.
[15] 王雪文,張志勇.傳感器原理及應用[M].北京:北京航空航天大學出版社,2004.