劉 德 全
(寧夏師范學(xué)院,寧夏 固原 756000)
余川川等[1]提出了基于BP神經(jīng)網(wǎng)絡(luò)的PID控制算法,并將其應(yīng)用于溫室溫度的控制,仿真表明控制器具有很好的自適應(yīng)和魯棒性,為溫度采集算法提供了參考價(jià)值,但沒有給出具體的設(shè)計(jì)電路;文獻(xiàn)[2]研究了基于CAN總線網(wǎng)絡(luò)在溫室溫度測控系統(tǒng)的應(yīng)用,其溫度傳感采用了DS18B20,因?yàn)椴捎肅AN總線傳輸數(shù)據(jù),因此沒有充分發(fā)揮DS18B20傳感器的1-Wire性能;文獻(xiàn)[3]中研究了基于計(jì)算機(jī)流體動(dòng)力學(xué)模型(Computational Fluid Dynamics,CFD)的溫度多指標(biāo)GA優(yōu)化算法,為獲得精確的溫室溫度算法提供了很好的參考;文獻(xiàn)[4]對(duì)基于FPGA和模糊PID算法的溫度采集進(jìn)行了系統(tǒng)研究;文獻(xiàn)[5]研究了基于ZigBee的溫室溫度檢測系統(tǒng),采用“一線總線”數(shù)字化溫度傳感器DS18B20的無線溫度檢測系統(tǒng),實(shí)現(xiàn)低功耗、低成本的溫室溫度檢測;文獻(xiàn)[6]提出一種基于現(xiàn)場控制系統(tǒng)(FCS)的現(xiàn)場總線控制模型,結(jié)合煙葉生長原理和溫室溫度控制原理出發(fā),實(shí)現(xiàn)煙葉溫室溫度的精確控制;文獻(xiàn)[7]對(duì)溫室溫度控制系統(tǒng)不確定性與干擾的灰色預(yù)測補(bǔ)償算法進(jìn)行研究,灰色預(yù)測補(bǔ)償算法能夠避開溫室對(duì)象的不確定性、時(shí)變性和多擾動(dòng)性,控制精度明顯提高。結(jié)合上述文獻(xiàn)的優(yōu)缺點(diǎn),本文提出基于Proteus軟件平臺(tái)下的單片機(jī)控制的智能溫室多點(diǎn)檢測系統(tǒng)電路的設(shè)計(jì)和仿真。
溫度傳感電路實(shí)現(xiàn)土壤溫度的實(shí)時(shí)采集,為了提高采集的精確性,這里選取美國DALLAS公司的可編程分辨率的1-Wire數(shù)字溫度傳感器DS18B20[8-11],其主要特點(diǎn)首先是采用單總線接口,具有經(jīng)濟(jì)性好、抗干擾性強(qiáng),適用于惡劣環(huán)境的現(xiàn)場溫度測量;其次可以實(shí)現(xiàn)多點(diǎn)組網(wǎng),輕松地組建傳感器網(wǎng)絡(luò),實(shí)現(xiàn)多點(diǎn)測溫;最后就是DS18B20供電方式靈活,可以不外接電源,具有掉電保護(hù)等功能。DS1820內(nèi)部結(jié)構(gòu)框圖如圖1所示,從圖中可以看出,DS18B20有3個(gè)引腳,其中:DQ為雙向單總線數(shù)據(jù)引腳;GND為地信號(hào);UDD為可選的外部電源引腳[13]。
圖1 DS18B20 內(nèi)部結(jié)構(gòu)圖
每個(gè)DS18B20在出廠時(shí),都被寫入獨(dú)特、不重疊的64位序列號(hào),被保存在圖1中的64位ROM存儲(chǔ)器器中,從而允許多只DS18B20同時(shí)連接在一根總線上。因此,很簡單就可以用一個(gè)微處理去控制很多覆蓋在一大片區(qū)域的DS18B20,這一特性在HVAC環(huán)境監(jiān)控、探測建筑物、儀器或者機(jī)器的溫度以及過程監(jiān)控等方面非常有用。數(shù)據(jù)緩沖存儲(chǔ)器含有2個(gè)字節(jié)的溫度寄存器用來存儲(chǔ)溫度傳感器采集的溫度值;TH和TL溫觸發(fā)寄存器保存用戶設(shè)置的溫度報(bào)警值;1個(gè)字節(jié)的配置寄存器中的R0和R1 兩個(gè)位地址用于設(shè)置溫度轉(zhuǎn)換的精度可以為9,10,11或者12位(此時(shí)R0=1,R1=1,為默認(rèn)狀態(tài))。
DS18B20傳感器的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),從原理上來說,可以將多個(gè)傳感器都掛在一根總線上,但實(shí)際上一根總線上的傳感器數(shù)目超過8個(gè)時(shí),就要計(jì)算總線的驅(qū)動(dòng)能力,因此,在系統(tǒng)設(shè)計(jì)時(shí),每根總線最好接8個(gè)DS18B20。本文在電路設(shè)計(jì)和仿真時(shí)以4個(gè)為例,其電路圖如圖2所示。
DS18B20的核心功能是直接輸出數(shù)字溫度值,溫度值的精度為用戶可編程的9、10、11或者12位,分別以0.5、0.25、0.125、0.0625 °C增量遞增。系統(tǒng)上電狀態(tài)下默認(rèn)為12位精度。上電復(fù)位時(shí)溫度寄存器默認(rèn)值為+85 °C,所以在調(diào)試時(shí)會(huì)出現(xiàn)+85 °C溫度的顯示。
單片機(jī)控制系統(tǒng)為了降低成本和功耗,采用典型的最小系統(tǒng),包括復(fù)位電路、晶振電路和電源電路,在這里只是設(shè)計(jì)仿真,因此電源電路直接用5 V直流電源代替,其他電路如圖3所示。
在圖3中,人機(jī)交互式電路主要包括按鍵電路、聲光報(bào)警電路和液晶顯示電路。按鍵電路的功能主要是進(jìn)行溫度傳感器檢測以及數(shù)字溫度傳感器溫度報(bào)警閾值的設(shè)置,具體功能如表1所示。
表1 按鍵的功能
聲光報(bào)警電路由發(fā)光二極管D1和蜂鳴器SOUNDER構(gòu)成,在溫度處于報(bào)警閾值范圍之內(nèi)時(shí),二極管一直處于亮狀態(tài),當(dāng)溫度高于或者低于閾值時(shí),發(fā)光二極管開始閃爍,并且蜂鳴器發(fā)出“嘟嘟……”的報(bào)警聲。
液晶顯示電路主要由LM016L顯示器構(gòu)成,在不同的狀態(tài)下顯示內(nèi)容也不一樣,總結(jié)如下:
(1)顯示DS18B20的64位的ROM碼;
(2)實(shí)測溫度顯示,液晶顯示器首先顯示DS18B20的64ROM碼,隨后顯示當(dāng)前的溫度情況,如果實(shí)測溫度高于溫度報(bào)警值TH的設(shè)定值時(shí),LCD顯示為“>H”;當(dāng)實(shí)測溫度值小于溫度報(bào)警值TL時(shí),LCD顯示為“ (3)顯示當(dāng)前溫度傳感器的溫度報(bào)警閾值,當(dāng)在溫度設(shè)定狀態(tài)時(shí),顯示改變的溫度報(bào)警閾值。 DS18B20通信需嚴(yán)格遵守1-Wire通信協(xié)議,在此協(xié)議中詳細(xì)定義了復(fù)位脈沖信號(hào)、應(yīng)答信號(hào)、寫時(shí)序和讀時(shí)序等信號(hào)。應(yīng)答脈沖信號(hào)除外的其他信號(hào)都由主機(jī)發(fā)出,且數(shù)據(jù)字節(jié)的低位在前高位在后。下面主要研究各時(shí)序之間的關(guān)系[12-14]。 2.1.1DS18B20復(fù)位時(shí)序1 在節(jié)水灌溉技術(shù)選擇過程中,要按照因地制宜的模式,制定科學(xué)的節(jié)水灌溉發(fā)展規(guī)劃,避免盲目引進(jìn)不適合本地區(qū)農(nóng)業(yè)生產(chǎn)的節(jié)水灌溉技術(shù),不盲目搞所謂的樣子工程。針對(duì)本地區(qū)存在大量中低產(chǎn)田的現(xiàn)狀,應(yīng)該進(jìn)一步重視中低產(chǎn)田改造,將中低產(chǎn)田改造列為今后農(nóng)業(yè)的主攻方向。通過利用合適的灌溉技術(shù),將中低產(chǎn)田的低產(chǎn)向著高產(chǎn)轉(zhuǎn)變。進(jìn)一步促進(jìn)節(jié)水灌溉技術(shù)在中低產(chǎn)田推廣應(yīng)用,提升農(nóng)業(yè)生產(chǎn)效益。 上位機(jī)與DS18B20間的任何通信的第一步就是進(jìn)行初始化操作[15],其初始化序列如圖4所示。從圖中可以看出,初始化脈沖包括一個(gè)復(fù)位脈沖和一個(gè)存在脈沖,在發(fā)出復(fù)位脈沖時(shí),總線控制器首先拉低總線DQ并保持480 μs以上發(fā)出(TX)一個(gè)復(fù)位脈沖,然后釋放總線,進(jìn)入接收狀態(tài)(RX),并將單總線上拉電阻拉至高電平;存在脈沖表明DS18B20已經(jīng)準(zhǔn)備好數(shù)據(jù)的發(fā)送和接收,當(dāng)DS18B20檢測到DQ總線上的上升沿后,等待15~60 μs,然后發(fā)出一個(gè)由60~240 μs低電平信號(hào)構(gòu)成的存在脈沖。復(fù)位程序流程圖如圖5所示。 圖4 DS18B20初始化時(shí)序圖 圖5 復(fù)位程序流程圖 2.1.2DS18B20讀、寫時(shí)序 DS18B20的數(shù)據(jù)讀寫是通過時(shí)序處理來確認(rèn)信息交換的。寫時(shí)序包括寫邏輯1時(shí)序和寫邏輯0時(shí)序。從圖6(a)可以看出,寫時(shí)序開始前必須將DQ總線處于低電平狀態(tài),等待15 μs后釋放總線并讀取總線的狀態(tài),如果總線是高電平,則向DS18B20寫入1;如果總線是低電平,則向DS18B20寫入0。從圖5(a)還可以得到,寫時(shí)序至少持續(xù)60 μs,包括兩個(gè)寫周期之間至少1 μs的恢復(fù)時(shí)間。 總線控制器發(fā)出讀時(shí)序時(shí),所有讀時(shí)序同樣至少持續(xù)60 μs,包括兩個(gè)讀周期期間至少1 μs的恢復(fù)時(shí)間。讀時(shí)序圖如圖6(b)所示,讀時(shí)序開始之前必須將DQ數(shù)據(jù)從高電平拉到低點(diǎn)平然后釋放總線,如圖6(b)所示。在總線控制器發(fā)出讀時(shí)序后,如DQ總線為高電平,則讀入的數(shù)據(jù)為1,反之讀入的數(shù)據(jù)為0。 根據(jù)DS18B20的讀寫時(shí)序圖,畫出DS18B20讀寫程序算法流程圖,編寫程序,流程圖和程序如圖7所示。 (a) (b) 圖7 DS18B20 讀、寫程序流程圖 當(dāng)溫度傳感器均掛與單線總線上時(shí), 對(duì)單線總線上的DS18B20正確尋址是其正常地測量溫度先決條件,而識(shí)別ROM編碼是對(duì)單線總線上的DS18B20正確尋址唯一方法。所以對(duì)單線總線上的DS18B20 ROM編碼搜索與識(shí)別是必須的。系統(tǒng)64位ROM碼包括8位系列碼(最低8位),默認(rèn)值為28H;接著48位是一個(gè)唯一的序列號(hào),最高8位是以上56位的CRC 校驗(yàn)碼。系統(tǒng)對(duì)總線上器件的數(shù)量和每個(gè)器件的ROM碼的識(shí)別與搜索是通過軟件算法與ROM 搜索命令配合來實(shí)現(xiàn)的。ROM碼的每一位搜索過程可總結(jié)為讀一位,讀該位補(bǔ)碼,寫一位,即“兩讀一寫”。上位機(jī)對(duì)ROM碼的識(shí)別是從最低位開始,每一位的識(shí)別都要進(jìn)行“兩讀一寫”操作,直到搜索完所有DS18B20的ROM碼。 表2 “兩讀”數(shù)據(jù)功能 主機(jī)寫1位的目的就是為了排除和定位,具體寫入一位數(shù)值由讀到的“兩位”數(shù)值決定,如“兩讀”數(shù)據(jù)為“11”,說明沒有檢測到DS18B20傳感器,因此結(jié)束搜索,無需再寫入數(shù)據(jù);若讀到為“01”或者“10”,表明存在DS18B20,則應(yīng)對(duì)寫入“0”或者“1”,繼續(xù)讀下一位;若讀到“00”,表明總線上的DS18B20器件的ROM碼在該位上數(shù)據(jù)發(fā)生沖突,此時(shí),寫入1位數(shù)據(jù)具有“排除”的作用。如果器件ROM碼在該位上的數(shù)據(jù)與寫入的數(shù)據(jù)相同,則繼續(xù)保持與總線的聯(lián)系,如果不同則此器件在本次搜索中從總線上“刪除”,不在響應(yīng)主機(jī)發(fā)布的命令,直到主機(jī)進(jìn)行下一次復(fù)位。根據(jù)上述ROM的搜索原理,可得到如圖8所示的樹形搜索策略圖,因此得出ROM編碼的搜索與識(shí)別功能函數(shù)流程圖如圖8所示。 CRC碼是一種線性分組碼,編碼簡單但具有很強(qiáng)的檢錯(cuò)糾錯(cuò)能力。DS18B20采用CRC8糾錯(cuò)[17],其糾錯(cuò)公式如示。 圖8 ROM碼樹形搜索策略圖 圖9 DS18B20 ROM編碼的搜索與識(shí)別功能函數(shù)流程圖 CRC=x8+x5+x4+1 在DS18B20中,CRC字節(jié)作為DS18B20 64位ROM的一部分存在存儲(chǔ)器中,CRC碼由ROM的前56位計(jì)算得到,當(dāng)ROM中的數(shù)據(jù)發(fā)生變化時(shí),CRC值也隨之改變。為校正數(shù)據(jù)是否被正確讀取,總線控制器必須用接受到的數(shù)據(jù)計(jì)算出一個(gè)CRC值和存儲(chǔ)在ROM中的8位CRC碼進(jìn)行比較,如果兩者相吻合,說明數(shù)據(jù)被無錯(cuò)誤的傳輸,當(dāng)在DS18B20中存儲(chǔ)的和由計(jì)算到的CRC值不相符,說明數(shù)據(jù)發(fā)生錯(cuò)誤,重新接收數(shù)據(jù)。 CRC校驗(yàn)與CRC編碼方法相同,都是采用移位和異或進(jìn)行的。如果在編程中直接采用這種算法,則降低程序的運(yùn)算速度,因此提出了查表法計(jì)算,該算法核心思想是先取一個(gè)字節(jié)數(shù)據(jù)進(jìn)行暫存,然后對(duì)暫存單元內(nèi)的值進(jìn)行左循環(huán)移位運(yùn)算,一個(gè)字節(jié)左循環(huán)移位運(yùn)算后如果其最低位為1,說明數(shù)據(jù)有誤,進(jìn)行CRC糾錯(cuò),將CRC單元值(初始化為0)與18H做異或運(yùn)算且左移,否則CRC單元值只進(jìn)行左移運(yùn)算。最后將CRC單元值與下一字節(jié)做同樣運(yùn)算,直到完成最后256個(gè)單元值的運(yùn)算,形成256個(gè)CRC糾錯(cuò)碼,其C程序代碼如CrcTable數(shù)組。算法流程如圖10所示。 將電路在英國Labcenter公司的EDA平臺(tái)—Proteus環(huán)境中進(jìn)行原理圖設(shè)計(jì)并進(jìn)行了虛擬仿真,實(shí)現(xiàn)了4個(gè)DS18B20傳感的溫度數(shù)據(jù)采集、顯示和報(bào)警等功能。在實(shí)際應(yīng)用中系統(tǒng)采集精度高、運(yùn)行穩(wěn)定。 圖10 CRC糾錯(cuò)算法流程圖 [1] 涂川川,朱鳳武,李鐵.BP神經(jīng)網(wǎng)絡(luò)PID控制器在溫室溫度控制中的研究[J].中國農(nóng)機(jī)化,2012(2): 151-154, 144. TU Chuan-chuan,ZHU Feng-wu,LI Tie. Study and simulation of BP neural network PID controller [J].Chinese Agricultural Mechanization, 2012(2): 151~154, 144. [2] 彭 波,文 方.CAN總線網(wǎng)絡(luò)在溫室溫度檢測控制系統(tǒng)中的應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2013,26(2):1-3. PENG bo,WEN Fang.Application of CAN Bus in Greenhouse Temperature Monitoring and Control System[J]. Industrial Control Computer, 2013,26(2):1-3. [3] 李永博,孫國祥,樓恩平,等.基于CFD模型的溫度溫室對(duì)指標(biāo)GA優(yōu)化控制[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2013,44(3):187-191. LI Yong-bo,SUN Guo-xiang, LOU En-ping,etal. Multi-index GA Optimal Control of Greenhouse Temperature Based on CFD Model[J]. Transactions of the Chinese Society for Agricultural Machinery, 2013,44(3):187-191. [4] 黃 霞.基于FPGA的智能溫度控制系統(tǒng)的設(shè)計(jì)[D].武漢:武漢理工大學(xué),2012. HUANG Xia. Design of Intelligent Tempetature Control System Based on FPGA[D].Wuhan University of Technology,2012. [5] 張李偉.基于Zigbee的溫室溫度檢測系統(tǒng)[J].信號(hào)與系統(tǒng),2012(8):31-33. ZHANG Li-wei. Temperature test system of Greenhouse based on Zigbee[J].Signal Process and System, 2012(8):31-33. [6] 楊 樂,舒建文,盛立冉.基于現(xiàn)場控制系統(tǒng)的煙葉溫室溫度控制模型[J].實(shí)驗(yàn)室研究與探索,2013,32(6):16-17,70. YANG Le,SHU Jian-wen,SHENG Li-ran. Greenhouse Temperature Control Model for Tobacco Based on FCS[J]. Research and Exploration in Laboratory, 2013,32(6):16-17,70. [7] 張 軍,張侃諭.溫室溫度控制系統(tǒng)不確定性與干擾的灰色預(yù)測補(bǔ)償算法[J].農(nóng)業(yè)工程學(xué)報(bào),2013,29(10):225-233. Zhang Jun, Zhang Kan-yu. Grey prediction compensation algorithm for the uncertainty and interference of greenhouse temperature control system[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2013, 29(10): 225-233. [8] 劉德全.Proteus 8—電子線路設(shè)計(jì)與仿真[M].北京:清華大學(xué)出版社,2014. [9] 徐愛軍.單片機(jī)原理實(shí)用教程—基于Proteus虛擬仿真[M].2版.北京:電子工業(yè)出版社,2012. [10] 周景潤,張麗娜.基于Proteus的電路及單片機(jī)系統(tǒng)設(shè)計(jì)與仿真[M].北京:北京航空航天大學(xué)出版社,2005. [11] 趙健領(lǐng),薛圓圓.51單片機(jī)開發(fā)與應(yīng)用技術(shù)詳解[M].北京:電子工業(yè)出版社,2010. [12] DAllAS SEMICONDUCTOR.DS18B20 Programmable Resoultion 1-Wire Digital Thermometer. [13] 王麗娟,王 艷.基于DS18B20的多通道溫度測試儀[J].制造業(yè)自動(dòng)化,2013,35(1):123-127. WANG Li-juan, WANG Yan. The multi-channel temperature tester based on DS18B20[J]. Manufacturing Automation. 2013,35(1):123-127. [14] 程玉娟,劉東波,汪春梅,等.基于以太網(wǎng)的分布式煤礦溫度遠(yuǎn)程監(jiān)控系統(tǒng)[J].制造業(yè)自動(dòng)化, 2014,36(1):31-33. CHEN Yu-juan, LIU Dong-bo, WANG Chun-mei,etal. Remote temperature monitoring and control system design based on the ethernet for coal mine[J]. Manufacturing Automation. 2014,36(1):31-33. [15] 張家偉,劉成忠.基于STC89C52RC的養(yǎng)殖區(qū)溫控系統(tǒng)設(shè)計(jì)[J].甘肅農(nóng)業(yè)大學(xué)學(xué)報(bào),2014,49(1):161-165. ZHANG Jia-wei,LIU Cheng-zhong. Design on temperature control system of culture zone based on STC89C52[J].Journal of Gansu Agricultural University, 2014,49(1):161-165. [16] 岳云峰,李懷盛,馬春光,等.單總線數(shù)字溫度傳感器DS18B20數(shù)據(jù)校驗(yàn)與糾錯(cuò)[J].傳感技術(shù),2002,21(7):52-55. YUE Yun-feng, LI Huai-sheng, Ma Chun-guang,etal. Proofreading and correction for the 1-wire digital thermometer DS18B20' s data[J]. Journal of Transducer Technology, 2002,21(7):52-55.2 算法實(shí)現(xiàn)
2.1 DS18B20時(shí)序
2.2 DS18B20 64位ROM編碼的搜索算法
2.3 CRC發(fā)生器
3 結(jié) 語