文獻標識碼: A
文章編號: 0258-7998(2013)05-0086-03
溫度控制器已廣泛應(yīng)用于冶金、紡織、化工、醫(yī)療等工業(yè)控制的諸多領(lǐng)域,是一種最常用的自動化儀表。但是大都存在著無法與控制系統(tǒng)通信,或者無法自動保存用戶設(shè)定的數(shù)據(jù)等功能單一的問題。
本文介紹的具有與上位機通信功能的智能溫度控制器,它以單片機STC12C5204AD[1]為核心,采用A/D轉(zhuǎn)換技術(shù)和RS485通信接口芯片MAX487,具有可靠性好、抗干擾性能強、可實現(xiàn)計算機網(wǎng)絡(luò)控制等優(yōu)點,具有0 ℃~1 024 ℃范圍的溫度測量和自動控制。同時,實現(xiàn)了在應(yīng)用中編程,即自主完成內(nèi)部Flash的擦寫,降低了外擴存儲器帶來的成本。
1 溫度控制器的設(shè)計原理
溫度控制器的系統(tǒng)結(jié)構(gòu)如圖1所示。傳感器采用應(yīng)用較廣的K型熱電偶,測量電路選用芯片MAX6675。MAX6675將熱電偶輸出的毫伏信號直接轉(zhuǎn)換成數(shù)字信號送給單片機STC12C5204AD,單片機控制LED數(shù)碼管顯示相關(guān)的信息,冷端溫度補償問題由MAX6675自行解決。溫度控制器通過串行口與上位機通信,發(fā)送測量數(shù)據(jù),接收溫度設(shè)定值,并將溫度測量值與設(shè)定值比較,送出控制信號驅(qū)動光耦,以控制繼電器的吸合與斷開。
2 系統(tǒng)硬件設(shè)計
2.1 通信電路
RS485串行總線接口采用平衡發(fā)送和差分接收的方式進行數(shù)據(jù)通信,較RS232提高了抗共模干擾能力和傳輸距離。RS485總線可用于多個帶有RS485接口設(shè)備的互連,以實現(xiàn)數(shù)據(jù)高速遠距離傳送,其連線十分方便?;谛酒琈AX487的通信接口電路如圖2所示。
2.2 溫度采集電路
傳感器K型熱電偶的測量電路選用芯片MAX6675[2],如圖3所示。MAX6675不僅可以將熱電偶輸出的毫伏信號直接轉(zhuǎn)換成數(shù)字信號,而且可以自行解決冷端溫度補償問題。圖中,P+和P-分別接熱電偶的正極和負極;SO、CS、SCK三條信號線與單片機的GPIO連接,實現(xiàn)串行數(shù)據(jù)傳輸。
3 系統(tǒng)軟件設(shè)計
3.1 溫度讀取
測量環(huán)節(jié)的軟件的重點是MAX6675測溫數(shù)據(jù)的讀取。MAX6675與單片機通過3線串口進行通信。當CS引腳由高電平變?yōu)榈碗娖綍r,MAX6675停止任何信號的轉(zhuǎn)換并在時鐘SCK的作用下向外輸出已轉(zhuǎn)換的數(shù)據(jù);當CS從低電平變回到高電平時,MAX6675將進行新一輪轉(zhuǎn)換。一個完整的數(shù)據(jù)讀取需要16個時鐘周期,數(shù)據(jù)的讀取在SCK的下降沿進行。
MAX6675的輸出數(shù)據(jù)為16位,如圖4所示。輸出時高位在前,D15為無用位;D14~D3對應(yīng)于熱電偶模擬輸出電壓的數(shù)字量;D2用于檢測熱電偶是否斷線(D2為1表明熱電偶斷線);D1為MAX6675標識符;D0為三態(tài)。
3.2 通信模塊設(shè)計
3.2.1 通信規(guī)約的設(shè)計[3]
每個溫度控制器都必須通過按鍵設(shè)定一個地址,地址的最大值為255。溫度控制器采用RS485的接口標準與上位機進行通信。通信采用異步通信方式,1位起始位,8位數(shù)據(jù)位,1位停止位。通信速率(波特率)設(shè)定為1 200 b/s。上位機與溫度控制器采用主從查詢方式進行數(shù)據(jù)交互。
在規(guī)約中定義以下報文:(1)上位機查詢溫度控制器的測量值報文A1和溫度控制器的數(shù)據(jù)應(yīng)答報文R1;(2)上位機設(shè)定溫度控制器工作參數(shù)報文A2和溫度控制器的參數(shù)確認報文R2; (3)上位機復(fù)位溫度控制器報文A3及溫度控制器的復(fù)位確認報文R3; (4)上位機查詢溫度控制器工作狀態(tài)報文A4及溫度控制器的狀態(tài)報告報文R4;(5)溫度控制器向上位機發(fā)送的接收出錯報文R5。
3.2.2 通信模塊軟件設(shè)計
溫度控制器的通訊模塊初始化包括定時器的初始化和中斷寄存器的初始化。
溫度控制器的數(shù)據(jù)發(fā)送采用中斷方式。 每次發(fā)送8 bit,即一個字節(jié),每發(fā)送完一個字節(jié),中斷標志位TI將置位,進入發(fā)送中斷服務(wù)程序。在發(fā)送中斷服務(wù)程序中,先將發(fā)送中斷標志位TI清0,然后發(fā)送相應(yīng)的一個字節(jié)的數(shù)據(jù)。
溫度控制器的數(shù)據(jù)接收采用中斷方式。當上位機以1 200 b/s的通信速率向溫度控制器傳送數(shù)據(jù)時,單片機STC12C5204AD的接收緩存寄存器SBUF每次中斷只接收8 bit,即一個字節(jié),每接收完一個字節(jié)后,接收中斷標志RI將置位,在下一個機器周期,CPU查詢到此標志為1時,就會產(chǎn)生接收中斷,進入接收中斷服務(wù)程序。在接收中斷服務(wù)程序中,首先判斷接收的數(shù)據(jù)是否符合報文A1、A2、A3或者A4的規(guī)范。若不符合,則舍棄;若符合,則將其放入事先定義的數(shù)組中。在主程序中,計算CRC校驗是否正確。如果正確, 則根據(jù)報文的不同類型回答R1、R2、R3或者R4;如果不正確,則回答R5。如圖5所示。
3.3 IAP保存數(shù)據(jù)
3.3.1 單片機內(nèi)部EEPROM地址設(shè)計
單片機STC12C5204AD內(nèi)部集成的EEPROM是與程序空間分開的,利用ISP/IAP技術(shù)可將內(nèi)部的Data Flash作為EEPROM。EEPROM分為兩個扇區(qū),每個扇區(qū)的大小為512 B,第一扇區(qū)地址是0x000~0x1FF,第二扇區(qū)的地址是0x200~0x3FF。
由上位機以通信的方式或者由按鍵設(shè)定的參數(shù)地址編排如表1所示。其中,STDL和STDH分別代表設(shè)定溫度下限的低字節(jié)和高字節(jié),STUL和STUH分別代表設(shè)定溫度上限的低字節(jié)和高字節(jié);SFL和SFH分別代表設(shè)定報警溫度的低字節(jié)和高字節(jié)。
擦除整個扇區(qū)的數(shù)據(jù),首先向IAP_ADDRH和IAP_ADDRL中寫入扇區(qū)起始地址的高字節(jié)和低字節(jié),在這里均為0x00;然后將寄存器IAP_CONTR的最高位置1,表示允許IAP操作;向IAP_CMD中寫入0x03; 最后向IAP_TRIG中先后發(fā)送0x5A和0xA5,完成扇區(qū)的擦寫。
把表1中的數(shù)據(jù)寫入到相應(yīng)地址,首先向IAP_ADDRH和IAP_ADDRL中寫入相應(yīng)地址的高字節(jié)和低字節(jié);然后將寄存器IAP_CONTR的最高位置1,表示允許IAP操作;然后向IAP_CMD中寫入0x02;最后向IAP_TRIG中先后發(fā)送0x5A和0xA5,完成扇區(qū)的擦寫。
4 功能測試與分析
溫度控制器上電后,LED數(shù)碼管依次顯示“100”、“110”和“150”,說明單片機將數(shù)據(jù)寫入到了Flash中,IAP功能正常。
溫度控制器顯示的溫度與使用標準的溫度計測量的溫度值進行比較,誤差小于0.2℃。
利用PC作為上位機,使用串口助手分別發(fā)送報文A1、A2、A3和A4,串口助手分別接收到R1、R2、R3和R4,并且能夠遠程設(shè)定溫度控制器的參數(shù)和遠程重啟。
手動給熱電偶加熱,當熱電偶的溫度值處在不同區(qū)間時,觀察兩個繼電器的吸合與斷開的狀態(tài)。繼電器的狀態(tài)如圖7所示,0代表斷開,1代表吸合,繼電器正常工作。
本裝置以通用的單片機STC12C5204AD為核心,外擴測溫模塊、通信模塊和人機交互模塊,應(yīng)用于熱電偶測溫的場合。經(jīng)測試,該溫度控制器可以實現(xiàn)對溫度的自動控制,測溫數(shù)據(jù)精確;實現(xiàn)了計算機網(wǎng)絡(luò)控制,遠程操作方便;實現(xiàn)了IAP功能,降低了擴展外部存儲器帶來的成本,具有很強的實用價值。
參考文獻
[1] 張毅剛.單片機原理及應(yīng)用[M].北京:高等教育出版社,2003.
[2] 李平,李亞榮. 基于MAX6675的溫度控制器設(shè)計[D].大連:大連交通大學(xué),2004.
[3] SARIKAYA B. Analysis and testing of application layer protocols with an application to FTAM[J]. IEEE Transactions on Communications, 1992,40(1):7-11.
[4] 鐘磊. C8051F單片機的IAP系統(tǒng)設(shè)計與實現(xiàn)[J].微處理機,2009(3):9-11.