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