霍英楠,孫金根
(沈陽理工大學(xué) 自動化與電氣工程學(xué)院,遼寧 沈陽 110159)
在工業(yè)制造及室內(nèi)家居生產(chǎn)等領(lǐng)域,溫度作為重要影響因素需實時監(jiān)視,有時還需要查看一段時間內(nèi)的溫度變化趨勢[1].目前,溫度計仍被廣泛應(yīng)用于溫度檢測,如玻璃溫度計、雙金屬溫度計和壓力式溫度計.這些溫度計存在實時性差、精度低、溫度值讀取麻煩等缺點.隨著單片機技術(shù)的成熟以及半導(dǎo)體技術(shù)和嵌入式技術(shù)的飛速發(fā)展,溫度測量系統(tǒng)正逐步轉(zhuǎn)變?yōu)閺?fù)合型系統(tǒng),具有很強的適應(yīng)能力,可以應(yīng)用于較為惡劣的環(huán)境,更重要的是測量精度有了很大的提高[2],正逐步向智能化、集成化和實用化方向發(fā)展.
本文基于STM32開發(fā)的溫度測量系統(tǒng)實時性好、精度高、成本低、功耗小,與以往溫度測量系統(tǒng)相比,性能有很大提高.首先,系統(tǒng)的集成度更高,無需復(fù)雜的組裝;其次,系統(tǒng)采用μC/OS-III進行任務(wù)管理,可以完成更多更復(fù)雜的任務(wù),不但更加安全可靠,而且后期的修改和維護方便;其三,測量系統(tǒng)添加了溫度監(jiān)視界面,可以將實時溫度以及相關(guān)信息顯示在LCD(liquid Crystal Display)屏幕上,溫度數(shù)據(jù)的讀取更加方便,系統(tǒng)更具有實用性.
溫度測量系統(tǒng)的開發(fā)平臺是正點原子的精英開發(fā)板,處理器采用的是意法半導(dǎo)體(ST)公司出品的STM32F103型,芯片為ARM(Advanced RISC Machines)公司生產(chǎn)的Cortex-M3型,屬于32位ARM微控制器,其最高工作頻率為72 MHz,外部Flash為大容量512 kB[3].該系列芯片集成了定時器、USB、ADC(Analog-to-Digital Converter)等多種外設(shè)功能,同時具有低功耗、可低壓操作的特點,是一款適用于工業(yè)、醫(yī)療等多個領(lǐng)域的微控制器[4].
所采用的溫度傳感器集成于STM32F103芯片中,用來實現(xiàn)對工作環(huán)境和室內(nèi)溫度的測量.芯片內(nèi)部的ADC能夠?qū)鞲衅鬏敵龅碾妷褐缔D(zhuǎn)換成數(shù)字傳送至CPU.為了保證測量精度,ADC的模擬輸入采樣時間應(yīng)不低于17.1 μs,否則會產(chǎn)生很大誤差[5].
該溫度測量系統(tǒng)運行時,ADC內(nèi)部輸入通道16被激活,按照式(1)計算后,將溫度傳感器傳送的電壓值轉(zhuǎn)換為實際溫度值,同時將溫度數(shù)據(jù)傳送給數(shù)據(jù)顯示模塊,實現(xiàn)溫度數(shù)據(jù)在監(jiān)視界面中的顯示.
T={(V25-Vsense)/Avg_Slope}+25
(1)
式中:T為轉(zhuǎn)換后溫度值;Vsense為溫度傳感器輸出的電壓值;V25為Vsense在25 ℃時的數(shù)值;Avg_Slope為溫度與Vsense曲線的平均斜率.
溫度測量系統(tǒng)的軟件部分在MDK5上進行開發(fā),采用ST公司固件庫中的API(Application Programming Interface)函數(shù),使程序簡潔美觀,并在很大程度上降低了開發(fā)難度.軟件的主程序流程如圖1所示.需要注意的是,ADC的時鐘頻率應(yīng)低于14 MHz,否則會影響測量精度,采樣時間設(shè)置為239.5個時鐘周期即可.
圖1 主程序流程
系統(tǒng)啟動后,首先初始化操作系統(tǒng)、ADC、LCD、定時器,并配置相關(guān)的外設(shè)引腳,接下來創(chuàng)建系統(tǒng)所需的任務(wù).其中,LED的主要功能是在系統(tǒng)正常運行時每秒閃爍一次;STemWin包含了溫度數(shù)據(jù)采集和GUI(Graphical User Interface)刷新顯示數(shù)據(jù)兩個功能.當(dāng)系統(tǒng)正常運行時,LED不斷閃爍,監(jiān)視界面會顯示實時溫度數(shù)據(jù)以及提示信息,同時繪制出溫度曲線,以便查詢某段時間的歷史溫度數(shù)據(jù)并預(yù)測溫度變化趨勢.
移植操作系統(tǒng)是為了充分利用CPU資源.GUI運行時應(yīng)該對CPU和內(nèi)存資源進行合理使用.操作系統(tǒng)具有豐富的可調(diào)用庫函數(shù),能夠縮短系統(tǒng)開發(fā)時間.移植操作系統(tǒng)使工程易于修改和維護,且有利于在工程中創(chuàng)建更多更復(fù)雜的任務(wù).
μC/OS-III是實時性強的嵌入式操作系統(tǒng),可移植性好,可管理任務(wù)數(shù)多,是μC/OS的第三代內(nèi)核;其源代碼是開放的,非常便于學(xué)習(xí)和研究[6].相比于μC/OS-II,它添加了時間片輪轉(zhuǎn)調(diào)度算法,能夠高效快速地完成系統(tǒng)的進程調(diào)度,使CPU資源得以充分利用[7].μC/OS-III還支持STemWin、μCGUI等GUI庫,具有很強的可擴展性,在實際應(yīng)用中運行穩(wěn)定.
首先從官方網(wǎng)站下載源碼;然后將源碼解壓,找到系統(tǒng)移植所需要的文件并添加到已有工程的μC/OS-III分組中;添加源碼后,需要參照移植流程和μC/OS-III移植手冊進行以下操作:①在bsp.c中將CTRL寄存器的bit0置1,開通時鐘計數(shù)功能;②對stm32f10x_it.o文件中名為PendV_Handler的函數(shù)進行屏蔽;③在os_cfg_app.h文件中配置μC/OS-III內(nèi)部任務(wù)的優(yōu)先級;④將sys.h文件中SYSTEM_SUPPORT_UCOS的宏定義值改為1,使系統(tǒng)文件支持μC/OS.
μC/OS-III系統(tǒng)移植操作完成后,在工程中建立簡單的跑馬燈任務(wù),用于測試μC/OS-III系統(tǒng)是否移植成功.
GUI是指用圖形方式顯示數(shù)據(jù)處理狀態(tài)和結(jié)果的用戶計算機操作界面.與使用命令行界面相比,圖形界面內(nèi)容豐富多彩,功能多樣.圖形用戶界面的廣泛應(yīng)用給非專業(yè)用戶帶來了極大的便利.
STemWin是一個包含曲線、文本、按鈕等多種控件的嵌入式圖形庫,適用于ST公司的MCU(Microprogrammed Control Unit).ST的芯片可以免費使用,但不開源,且以lib的形式提供[8].
移植STemWin時,同樣需要首先到ST官網(wǎng)上下載源碼,且要下載STM32F103對應(yīng)的Cube;然后將源碼解壓,找到移植系統(tǒng)所需要的文件,添加到已經(jīng)移植好的μC/OS-III操作系統(tǒng)的工程中去;最后,需要根據(jù)STM32F1 EMWIN開發(fā)手冊進行以下操作:①需要在GUIConf.c文件中為STemWin分配內(nèi)存,但其大小不能超過64 kB; ②將GUIConf.h文件中的GUI_OS宏定義值改為1,使其能夠支持操作系統(tǒng);③將用于打點、讀點、填充的函數(shù)定義在GUIDRV_Template.c文件中;④刪除LCDConf_FlexColor_Template.c文件中調(diào)用LCD驅(qū)動的函數(shù)(這是因為實際應(yīng)用中STemWin自帶的驅(qū)動程序?qū)σ恍㎜CD驅(qū)動電路不支持).
開發(fā)監(jiān)視界面之前,還需要實現(xiàn)漢字顯示功能.在PC機上制作的漢字字庫通過SD卡被刷入外部Flash中,并在工程中添加定義字體和查找字庫的文件,即可實現(xiàn)漢字的顯示.接下來,借助GUIBuilder工具和STemWin庫的API函數(shù),完成監(jiān)視界面的開發(fā).GUIBuilder工具操作簡單,控件齊全,是emWin官方提供的一款用于GUI設(shè)計的軟件.打開GUIBuilder軟件,添加實驗需要的FRAMWIN、GRAPH和TEXT等小工具,小工具添加完成后,點擊顯示save選項而自動生成FramewinDLG.c文件;打開新生成的文件,在_cbDialog函數(shù)中完成所有控件的初始化,并利用GRAPH_DATA_YT_AddValue函數(shù)將溫度數(shù)據(jù)添加到GRAPH工具中,從而實現(xiàn)溫度曲線的繪制(溫度曲線最右側(cè)的溫度值對應(yīng)實時溫度值);最后在文件中加入用戶自定義函數(shù)以及開發(fā)監(jiān)視界面所需要的頭文件,將文件名改為Mygui.c,并將其添加到工程中,即可完成監(jiān)視界面的開發(fā).監(jiān)視界面開發(fā)流程如圖2所示.
圖2 監(jiān)視界面的開發(fā)流程
基于μC/OS-III和STemWin移植系統(tǒng),在main()主函數(shù)中創(chuàng)建LED任務(wù),用來顯示系統(tǒng)運行狀態(tài);創(chuàng)建STemWin任務(wù),實現(xiàn)溫度監(jiān)視界面,以便將溫度信息顯示在界面中;最后在確認工程編譯鏈接無報錯后,將程序下載到開發(fā)平臺上,在實驗室中對溫度測量系統(tǒng)進行模擬實驗.為了檢測溫度測量系統(tǒng)的性能,首先利用吹風(fēng)機升高開發(fā)平臺周圍的環(huán)境溫度,再利用風(fēng)扇降低環(huán)境溫度.由于條件所限,測量的溫度范圍為20~40 ℃.實驗的溫度測量系統(tǒng)監(jiān)視界面如圖3所示.
圖3 實驗的溫度測量系統(tǒng)監(jiān)視界面
由圖3可以看出,實時溫度為25.0 ℃,屏幕下方可顯示室內(nèi)環(huán)境溫度狀態(tài).查看實時溫度曲線可知,實驗平臺的環(huán)境溫度由低升高、又由高降低進行變化.通過該溫度測量系統(tǒng)監(jiān)視界面可了解溫度變化所經(jīng)歷的時間,有利于隨時掌握工作環(huán)境的溫度變化情況.
基于STM32處理器和LCD開發(fā)出一種溫度測量系統(tǒng).該測量系統(tǒng)能夠利用STM32內(nèi)部的溫度傳感器測量周圍環(huán)境的溫度,并在監(jiān)視界面中顯示實時溫度數(shù)據(jù)以及提示信息,同時繪制出溫度變化曲線.經(jīng)實驗測試,該溫度測量系統(tǒng)監(jiān)視界面簡潔直觀,溫度數(shù)據(jù)清晰,系統(tǒng)實時性好,成本低,具有很強的實用性.