文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)05-0086-03
溫度控制器已廣泛應(yīng)用于冶金、紡織、化工、醫(yī)療等工業(yè)控制的諸多領(lǐng)域,是一種最常用的自動(dòng)化儀表。但是大都存在著無(wú)法與控制系統(tǒng)通信,或者無(wú)法自動(dòng)保存用戶設(shè)定的數(shù)據(jù)等功能單一的問(wèn)題。
本文介紹的具有與上位機(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 ℃范圍的溫度測(cè)量和自動(dòng)控制。同時(shí),實(shí)現(xiàn)了在應(yīng)用中編程,即自主完成內(nèi)部Flash的擦寫(xiě),降低了外擴(kuò)存儲(chǔ)器帶來(lái)的成本。
1 溫度控制器的設(shè)計(jì)原理
溫度控制器的系統(tǒng)結(jié)構(gòu)如圖1所示。傳感器采用應(yīng)用較廣的K型熱電偶,測(cè)量電路選用芯片MAX6675。MAX6675將熱電偶輸出的毫伏信號(hào)直接轉(zhuǎn)換成數(shù)字信號(hào)送給單片機(jī)STC12C5204AD,單片機(jī)控制LED數(shù)碼管顯示相關(guān)的信息,冷端溫度補(bǔ)償問(wèn)題由MAX6675自行解決。溫度控制器通過(guò)串行口與上位機(jī)通信,發(fā)送測(cè)量數(shù)據(jù),接收溫度設(shè)定值,并將溫度測(cè)量值與設(shè)定值比較,送出控制信號(hào)驅(qū)動(dòng)光耦,以控制繼電器的吸合與斷開(kāi)。
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型熱電偶的測(cè)量電路選用芯片MAX6675[2],如圖3所示。MAX6675不僅可以將熱電偶輸出的毫伏信號(hào)直接轉(zhuǎn)換成數(shù)字信號(hào),而且可以自行解決冷端溫度補(bǔ)償問(wèn)題。圖中,P+和P-分別接熱電偶的正極和負(fù)極;SO、CS、SCK三條信號(hào)線與單片機(jī)的GPIO連接,實(shí)現(xiàn)串行數(shù)據(jù)傳輸。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 溫度讀取
測(cè)量環(huán)節(jié)的軟件的重點(diǎn)是MAX6675測(cè)溫?cái)?shù)據(jù)的讀取。MAX6675與單片機(jī)通過(guò)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為無(wú)用位;D14~D3對(duì)應(yīng)于熱電偶模擬輸出電壓的數(shù)字量;D2用于檢測(cè)熱電偶是否斷線(D2為1表明熱電偶斷線);D1為MAX6675標(biāo)識(shí)符;D0為三態(tài)。
3.2 通信模塊設(shè)計(jì)
3.2.1 通信規(guī)約的設(shè)計(jì)[3]
每個(gè)溫度控制器都必須通過(guò)按鍵設(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ī)查詢溫度控制器的測(cè)量值報(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是與程序空間分開(kāi)的,利用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中寫(xiě)入扇區(qū)起始地址的高字節(jié)和低字節(jié),在這里均為0x00;然后將寄存器IAP_CONTR的最高位置1,表示允許IAP操作;向IAP_CMD中寫(xiě)入0x03; 最后向IAP_TRIG中先后發(fā)送0x5A和0xA5,完成扇區(qū)的擦寫(xiě)。
把表1中的數(shù)據(jù)寫(xiě)入到相應(yīng)地址,首先向IAP_ADDRH和IAP_ADDRL中寫(xiě)入相應(yīng)地址的高字節(jié)和低字節(jié);然后將寄存器IAP_CONTR的最高位置1,表示允許IAP操作;然后向IAP_CMD中寫(xiě)入0x02;最后向IAP_TRIG中先后發(fā)送0x5A和0xA5,完成扇區(qū)的擦寫(xiě)。
4 功能測(cè)試與分析
溫度控制器上電后,LED數(shù)碼管依次顯示“100”、“110”和“150”,說(shuō)明單片機(jī)將數(shù)據(jù)寫(xiě)入到了Flash中,IAP功能正常。
溫度控制器顯示的溫度與使用標(biāo)準(zhǔn)的溫度計(jì)測(cè)量的溫度值進(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è)繼電器的吸合與斷開(kāi)的狀態(tài)。繼電器的狀態(tài)如圖7所示,0代表斷開(kāi),1代表吸合,繼電器正常工作。
本裝置以通用的單片機(jī)STC12C5204AD為核心,外擴(kuò)測(cè)溫模塊、通信模塊和人機(jī)交互模塊,應(yīng)用于熱電偶測(cè)溫的場(chǎng)合。經(jīng)測(cè)試,該溫度控制器可以實(shí)現(xiàn)對(duì)溫度的自動(dòng)控制,測(cè)溫?cái)?shù)據(jù)精確;實(shí)現(xiàn)了計(jì)算機(jī)網(wǎng)絡(luò)控制,遠(yuǎn)程操作方便;實(shí)現(xiàn)了IAP功能,降低了擴(kuò)展外部存儲(chǔ)器帶來(lái)的成本,具有很強(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.