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