劉克凡
(渭南師范學(xué)院,陜西 渭南 714099)
溫度作為基本的環(huán)境參數(shù),在人們的生活、工作中有著重要的作用,而在工農(nóng)業(yè)生產(chǎn),尤其是蔬菜大棚的使用中,更是需要對(duì)溫度進(jìn)行實(shí)時(shí)而精密的檢測(cè)控制。由于傳統(tǒng)的溫度計(jì)精度不高,也欠缺其它的控制功能。而開發(fā)板的集成度高,擁有多種功能,同時(shí)兼顧了能耗較低、穩(wěn)定性好的特點(diǎn)。
因此文章將以開發(fā)板為藍(lán)本,DS18B20測(cè)溫單元為基礎(chǔ)來(lái)完成溫控系統(tǒng)的設(shè)計(jì),使用放風(fēng)機(jī)等元件實(shí)現(xiàn)對(duì)大棚內(nèi)部溫度的控制。同時(shí)將測(cè)量數(shù)據(jù)上傳至PC機(jī),用以記錄大棚所在的溫度環(huán)境,實(shí)現(xiàn)對(duì)于大棚內(nèi)溫度的精準(zhǔn)控制。
溫控系統(tǒng)框圖如圖1所示,測(cè)溫系統(tǒng)采用DS18B20測(cè)溫單元,由于開發(fā)板上沒有DS18B20,將DS18B20接上后開發(fā)板需要先檢測(cè)其是否成功接入。系統(tǒng)通過(guò)LCD液晶顯示屏顯示溫度情況與測(cè)溫操作,使用按鍵來(lái)切換溫度設(shè)定與當(dāng)前溫度的顯示。另有一報(bào)警系統(tǒng),若大棚內(nèi)的當(dāng)前溫度連續(xù)三次掉至溫度設(shè)定外時(shí),將通過(guò)蜂鳴器進(jìn)行報(bào)警并緊急關(guān)閉設(shè)備。
圖1 溫控系統(tǒng)框圖
開發(fā)板會(huì)將最低/最高溫度記錄在存儲(chǔ)器中,以便使用PC來(lái)查看溫度情況。整個(gè)系統(tǒng)通過(guò)開發(fā)板輸出的信號(hào)來(lái)控制溫度調(diào)節(jié)模塊的運(yùn)作以達(dá)到控溫的目的。
STM32開發(fā)板塊中選擇了一個(gè)STM32F103ZETT6作為MCU,擁有64 kbs RAM、512 kb FLASH、兩個(gè)數(shù)字定時(shí)器、四個(gè)普遍廣泛使用的數(shù)字定時(shí)器、兩個(gè)高級(jí)別的定時(shí)器、兩個(gè)新的DMA數(shù)字控制器、三個(gè)12位數(shù)的ADC、一個(gè)12位U的DAC、一個(gè)新的SDIO數(shù)字接口、一個(gè)新的FSMC數(shù)字接口,三個(gè)FSSPI,兩個(gè)SDIIC,五個(gè)數(shù)字串口,一個(gè)FSUSB,一個(gè)FSCA與112個(gè)U的普通I/O口[1]。
開發(fā)板在系統(tǒng)中作為信息的接收與儲(chǔ)存端,可將測(cè)得的溫度信息放入存儲(chǔ)器中,是最為核心的設(shè)計(jì)模塊。
DS18B20測(cè)溫管理單元系統(tǒng)采用了高頻晶振轉(zhuǎn)換方式來(lái)進(jìn)行測(cè)量輸入溫度的作業(yè),無(wú)論溫度高低,晶振的振蕩頻率不會(huì)隨輸入溫度發(fā)生變化[2]。DS18B20電路圖如圖2所示。
圖2 DS18B20電路圖
圖3為DS18B20測(cè)溫單元系統(tǒng)圖,將高溫度頻率系數(shù)晶振輸入振蕩時(shí)的頻率輸入一個(gè)溫度減法測(cè)量計(jì)數(shù)器a,另外還有一低于高溫度頻率系數(shù)晶振的振蕩頻率與其輸入振蕩時(shí)的頻率相同,其輸入的一個(gè)溫度減法測(cè)量計(jì)數(shù)器b。當(dāng)b值歸零時(shí)測(cè)量溫度。測(cè)量時(shí),計(jì)數(shù)器a對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器a的預(yù)置值減到0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器a的預(yù)置將重新被裝入,計(jì)數(shù)器a重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器b計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。
圖3 DS18B20系統(tǒng)圖
此外,斜向功率補(bǔ)償累加器還設(shè)計(jì)了可以用來(lái)同時(shí)補(bǔ)償其在測(cè)溫處理過(guò)程中的斜率補(bǔ)償和溫度糾偏以及同時(shí)修正測(cè)溫處理過(guò)程中可能存在的非線性測(cè)溫誤差。此裝置的檢測(cè)精度為0.1 ℃,測(cè)溫范圍為-55 ℃~125 ℃。
表1為DS18B20測(cè)溫格式表,DS18B20接收主機(jī)傳來(lái)的開始溫度自動(dòng)變化控制命令后系統(tǒng)便會(huì)自動(dòng)進(jìn)行溫度轉(zhuǎn)換。當(dāng)溫度轉(zhuǎn)換器的工作全部完成后,溫度額定值就以16位作為帶符號(hào)的可擴(kuò)展的第二進(jìn)制進(jìn)位補(bǔ)碼的形式被分別存儲(chǔ)在高速數(shù)據(jù)暫存器和存儲(chǔ)器的第1,2個(gè)進(jìn)位字節(jié)。系統(tǒng)可同時(shí)通過(guò)一個(gè)平臺(tái)單線或多個(gè)數(shù)據(jù)接口直觀地直接讀取該平臺(tái)計(jì)算機(jī)的所有數(shù)據(jù),讀取時(shí)間以低位為前,高位為后,數(shù)據(jù)的輸出格式以0.062+5+℃/lsb的數(shù)據(jù)形式輸出來(lái)直觀顯示。
表1 DS18B20溫度值格式表
高五位用做定義溫度前符號(hào)位,分辨率0.0625。正溫度把16進(jìn)制數(shù)轉(zhuǎn)成10進(jìn)制即可;負(fù)溫度把16進(jìn)制數(shù)取反后加1再轉(zhuǎn)成10進(jìn)制數(shù),例如00FA是(15*16+10)*0.0625=15.62 ℃,第二個(gè)是0032是(3*16+2)*0.0625=3.125 ℃(負(fù)的)。
測(cè)溫模塊是溫度數(shù)據(jù)輸入開發(fā)板的端口,也是測(cè)量溫度的基本模塊。
本開發(fā)板采用 TFTLCD的通用模塊接口,支持2.4寸、3.8寸等尺寸的TFTLCD模塊。
圖4為L(zhǎng)CD電路圖,LCD液晶與開發(fā)板直接相連,通過(guò)開發(fā)板內(nèi)部的LCD控制器來(lái)控制LCD的動(dòng)作,LCD接收到控制器發(fā)出的幀同步信號(hào)等信號(hào)后便會(huì)開始動(dòng)作。由于LCD接口與 fsmc 總線相連,可大幅增加 LCD 的刷屏速率,因此能支持高速度的幀率顯示,使人眼的視覺暫留,以便實(shí)現(xiàn)動(dòng)態(tài)顯示的功能。
圖4 LCD 1602電路圖
LCD模塊是本設(shè)計(jì)的主要顯示模塊,承擔(dān)了幾乎全部的顯示功能。
報(bào)警裝置采用開發(fā)版自帶的HT6872音頻功率放大器來(lái)驅(qū)動(dòng)板載的8Ω 2W喇叭。當(dāng)遇到意外情況時(shí),由開發(fā)板給出報(bào)警信號(hào),驅(qū)動(dòng)喇叭報(bào)警提醒工作人員情況。
時(shí)鐘模塊采用了開發(fā)板自帶的STM32芯片作為計(jì)時(shí)器,其功能強(qiáng)大,含有多種定時(shí)器,擁有SPI與IIC等通道接口。
本項(xiàng)目使用了2個(gè)減法計(jì)數(shù)器作為測(cè)溫模塊的基本構(gòu)成,另有2個(gè)定時(shí)器作為時(shí)鐘顯示。
本模塊在設(shè)計(jì)中主要起到定時(shí)與時(shí)間顯示的作用。
本設(shè)計(jì)共使用6個(gè)開發(fā)板的獨(dú)立按鍵,為SW0~SW5,其中SW0為確定鍵,SW5為退出鍵,SW1為選擇鍵,用戶可使用這三鍵在面板中來(lái)回切換,SW2、SW3為調(diào)整鍵,用來(lái)進(jìn)行對(duì)時(shí)間與閾值的設(shè)定調(diào)整,SW4為上傳鍵,用以上傳開發(fā)板中所保存的溫度數(shù)據(jù)。
按鍵電路是本設(shè)計(jì)的主要控制手段。
控溫模塊為放風(fēng)機(jī),通過(guò)將大棚內(nèi)部的空氣從出風(fēng)口抽出形成負(fù)壓,再由進(jìn)風(fēng)口放入外界空氣,根據(jù)需求,可在進(jìn)風(fēng)口加裝升溫或降溫設(shè)備以進(jìn)行溫度控制[3]。
控溫模塊接收開發(fā)板傳來(lái)的信號(hào)進(jìn)行動(dòng)作,例如接收到升高溫度信號(hào),便讓放風(fēng)機(jī)通道中的加熱棒啟動(dòng)以加熱空氣。
主程序主要有以下功能:溫度數(shù)據(jù)的測(cè)量與存儲(chǔ);溫度的顯示與閾值設(shè)置;控溫系統(tǒng)的控制與警報(bào)系統(tǒng)。
顯示系統(tǒng)擁有3個(gè)界面,分為當(dāng)前溫度-時(shí)間顯示界面,溫度-時(shí)間折線圖界面與溫度閾值設(shè)定界面??赏ㄟ^(guò)觸摸屏來(lái)設(shè)定溫度的上下限與上傳溫度數(shù)據(jù)。當(dāng)溫度超過(guò)閾值時(shí),溫控系統(tǒng)會(huì)啟動(dòng),為大棚調(diào)節(jié)氣溫。
圖5為主程序設(shè)計(jì)流程,系統(tǒng)的時(shí)鐘控制采用了開發(fā)板自帶的定時(shí)/計(jì)數(shù)器,現(xiàn)將定時(shí)器A時(shí)間設(shè)為10 ms,當(dāng)定時(shí)器A溢出十次(1 s)后計(jì)數(shù)器A發(fā)出測(cè)溫信號(hào)并將標(biāo)志位置零。
圖5 主程序流程圖
另有一個(gè)計(jì)數(shù)器B,每當(dāng)計(jì)數(shù)器A溢出360次(1 h)后便發(fā)出一次信號(hào),讓RAM存儲(chǔ)當(dāng)前DS18B20測(cè)出的溫度,當(dāng)使用者打開溫度-時(shí)間折線圖界面時(shí),將溫度數(shù)據(jù)以折線的形式表示。
由于所需測(cè)溫器較多,本項(xiàng)目使用Wire搜索算法,采用二叉樹的搜索操作,將一個(gè)大棚中的所有測(cè)溫器數(shù)據(jù)收集,以節(jié)約成本、提升效率。
溫度的上傳采用其它的定時(shí)器,當(dāng)時(shí)間過(guò)了2 h后,通過(guò)定時(shí)器將存儲(chǔ)器的數(shù)據(jù)通過(guò)I2C總線上傳到PC。
為了用戶的安全與設(shè)備防護(hù)考慮,在主程序外另有一溫度報(bào)警計(jì)數(shù)器,若啟動(dòng)溫控系統(tǒng)后,測(cè)溫系統(tǒng)連續(xù)3次測(cè)得溫度超過(guò)設(shè)定閾值時(shí),報(bào)警計(jì)數(shù)器便發(fā)出信號(hào),讓蜂鳴器報(bào)警,以提示他人溫控系統(tǒng)出現(xiàn)異常。
控溫系統(tǒng)由開發(fā)板的2個(gè)I/O口控制,分別輸出升溫與降溫信號(hào),給到控溫系統(tǒng)的設(shè)備上,啟動(dòng)升/降溫為高電平,關(guān)閉為低電平,用變換電路來(lái)增大開發(fā)板的控制信號(hào)以控制系統(tǒng)的設(shè)備運(yùn)作。
測(cè)試過(guò)程中,報(bào)警系統(tǒng)與溫度閾值的功能正常,蜂鳴器音量足夠,測(cè)溫系統(tǒng)與德國(guó)菲索AFRISO電子溫度計(jì)對(duì)比,測(cè)試結(jié)果如表2所示,以測(cè)量的實(shí)驗(yàn)結(jié)果論,本系統(tǒng)的測(cè)量結(jié)果與AFRISO電子溫度計(jì)結(jié)果基本一致,溫度的誤差不超過(guò)1 ℃,以比例來(lái)論,誤差不超過(guò)3%。
表2 測(cè)溫結(jié)果對(duì)照表
需要注意的是,由于環(huán)境限制,無(wú)法模擬大棚的整體溫度情況,計(jì)算太過(guò)復(fù)雜,所以測(cè)試采用了小規(guī)模模擬的方式,并未出現(xiàn)意外情況。
警報(bào)系統(tǒng)測(cè)試過(guò)程中,蜂鳴器功能正常,開發(fā)板檢測(cè)到溫度異常后立即發(fā)出信號(hào),將控溫系統(tǒng)停轉(zhuǎn),同時(shí)使蜂鳴器報(bào)警。
經(jīng)測(cè)試,警報(bào)系統(tǒng)沒有出現(xiàn)過(guò)誤報(bào)或拒報(bào)的情況,可靠性較高。
本溫控系統(tǒng)設(shè)計(jì)基于STM32戰(zhàn)艦開發(fā)板為控制的核心,由DS18B20測(cè)溫器、放風(fēng)機(jī)、蜂鳴器等設(shè)備單元組成。功能包括高精度溫度檢測(cè)、LCD溫度顯示、溫度警報(bào)設(shè)置、實(shí)時(shí)時(shí)鐘、放風(fēng)機(jī)溫度控制等功能,并且設(shè)計(jì)簡(jiǎn)潔,可靠性與靈敏度高,另增有上傳數(shù)據(jù)功能,可使用PC查看當(dāng)天溫度數(shù)據(jù)。
經(jīng)測(cè)試,本設(shè)計(jì)的功能完好,測(cè)溫誤差不超過(guò)0.1 ℃,控溫誤差未超過(guò)一次,溫度上傳功能可以將當(dāng)天的室溫儲(chǔ)存并上傳至PC實(shí)現(xiàn)溫度的記錄功能。