摘 要:采用先進(jìn)的傳感器設(shè)計(jì)了一種低成本的農(nóng)業(yè)栽培溫室微機(jī)控制系統(tǒng),并給出了軟硬件設(shè)計(jì)方法。由于該系統(tǒng)采用了單總線技術(shù),模擬信號(hào)在測(cè)量現(xiàn)場(chǎng)被轉(zhuǎn)換為數(shù)字信號(hào),能夠遠(yuǎn)距離測(cè)量,具有很高的測(cè)量精度和應(yīng)用價(jià)值。
關(guān)鍵詞:溫室;單總線;控制系統(tǒng)
0 引言
在溫室控制系統(tǒng)中,空氣溫度、空氣濕度、光照、土壤濕度、土壤溫度等環(huán)境因子從不同的方面對(duì)生物的生長(zhǎng)繁育產(chǎn)生影響,在不同的條件下起著不同的作用,因此對(duì)于這些參數(shù)的測(cè)量顯得尤為重要。傳統(tǒng)的采集方式,一個(gè)信號(hào)一路,由于溫室中需要采集的參數(shù)和點(diǎn)數(shù)多,信號(hào)線多,模擬信號(hào)需要遠(yuǎn)距離傳輸,所以很易引起數(shù)據(jù)失真。在本系統(tǒng)中采用單總線數(shù)字溫度傳感器芯片DS18B20實(shí)現(xiàn)遠(yuǎn)距離多點(diǎn)空氣溫度和土壤溫度的測(cè)量,而空氣濕度、光照、土壤濕度等傳感器的模擬信號(hào)通過(guò)單總線A/D芯片轉(zhuǎn)換成數(shù)字信號(hào),從而通過(guò)單總線驅(qū)動(dòng)器DS2480B輸送給微處理器,系統(tǒng)具有一定智能化。
1 單總線器件及其工作原理
系統(tǒng)主要用到了溫度傳感器DS18B20、A/D轉(zhuǎn)換器DS2450和單總線驅(qū)動(dòng)器DS2480B。
溫度傳感器DS18B20、A/D轉(zhuǎn)換器DS2450等單總線器件內(nèi)部ROM中都有光刻的64位序列號(hào),它是該器件的地址序列碼;64位光刻ROM的排列是:開(kāi)始8位(DS18B20為28H,DS2450為20H)是產(chǎn)品類(lèi)型標(biāo)號(hào),也就是所謂的家族碼,接下來(lái)的48位是該自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)單總線器件的地址都各不相同,都是唯一的,以便實(shí)現(xiàn)一根總線上掛接多個(gè)單總線器件。
單總線驅(qū)動(dòng)器DS2480B完成到單總線的轉(zhuǎn)換,提高了單總線的驅(qū)動(dòng)能力。微處理器可以通過(guò)控制DS2480B驅(qū)動(dòng)在線所有的單總線器件。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 數(shù)字溫度傳感器DS18B20
DS18B20是美國(guó)Dallas Semiconductor公司推出的數(shù)字式溫度傳感器,遵循單線協(xié)議,其工作原理是利用溫度敏感振蕩器的頻率隨溫度變化的關(guān)系,通過(guò)對(duì)振蕩周期計(jì)數(shù)來(lái)實(shí)現(xiàn)溫度測(cè)量。其支持3V~5.5V的電壓范圍,可以與處理器進(jìn)行雙向數(shù)字通信,測(cè)溫度范圍寬(-55℃~+125℃),工作溫度范圍寬(-10℃~+85℃),分辨率高(當(dāng)設(shè)定為12位轉(zhuǎn)換模式可以達(dá)到0.0625℃)。現(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸。
DS18b20內(nèi)部有2個(gè)字節(jié)RAM單元用來(lái)存放轉(zhuǎn)換后的溫度值,后1個(gè)字節(jié)為溫度值低8位的補(bǔ)碼(稱(chēng)作A),前1個(gè)字節(jié)為符號(hào)位和溫度值的補(bǔ)碼高3位(稱(chēng)作B)。
數(shù)據(jù)格式是:

溫度算法:①SSSSS=11111B,D=-1;SSSSS=00000B,D=1;最小分辨率為0.0625℃。
?、诋?dāng)D=1時(shí),溫度值:T=[(B and 7)* 256 + A]* 0.0625
?、郛?dāng)D=-1時(shí),溫度值:T=D* [(B and 7)* 256 + A]* 0.0625
2.2 單總線A/D轉(zhuǎn)換器(DS2450)
DS2450是DALLAS公司生產(chǎn)的單總線式4通道逐次逼近式A/D轉(zhuǎn)換器,即A、B、C和D模擬電壓輸入通道,其輸入電壓范圍、轉(zhuǎn)換精度位數(shù)、報(bào)警門(mén)限電壓可編程;每個(gè)通道都有各自的存儲(chǔ)器以存儲(chǔ)電壓范圍設(shè)置、轉(zhuǎn)換結(jié)果、門(mén)限電壓等參數(shù)。
DS2450內(nèi)部有24個(gè)地址毗連的8位存儲(chǔ)器,可將其分成3頁(yè),每頁(yè)8字節(jié)。
第0頁(yè)為A/D轉(zhuǎn)換結(jié)果存儲(chǔ)器。每個(gè)通道占2個(gè)字節(jié)16位,芯片上電復(fù)位時(shí)該頁(yè)清0;其中00H、01H存儲(chǔ)A通道轉(zhuǎn)換結(jié)果,02H、03H存儲(chǔ)B通道轉(zhuǎn)換結(jié)果,04H、05H存儲(chǔ)C通道轉(zhuǎn)換結(jié)果,06H、07H存儲(chǔ)D通道轉(zhuǎn)換結(jié)果。
第1頁(yè)為A/D轉(zhuǎn)換控制與狀態(tài)存儲(chǔ)器。08H、09H對(duì)應(yīng)于A通道,其余通道依次類(lèi)推。
第2頁(yè)為各通道輸入高/低限報(bào)警值存儲(chǔ)器。10H存放A通道低門(mén)限8位報(bào)警值、11H存放A通道高門(mén)限8位報(bào)警值,其余通道依次類(lèi)推。
DS2450的通道選擇字和預(yù)置控制字用于選擇參與A/D轉(zhuǎn)換的通道及轉(zhuǎn)換前轉(zhuǎn)換結(jié)果存儲(chǔ)器的初始化。
值得的注意是:如果DS2450由VCC供電,那么必須在上電完畢后向地址1CH寫(xiě)入40H使模擬電路永久地保持在工作狀態(tài)。限于篇幅,詳細(xì)資料讀者可查看參考文獻(xiàn)[1]。
2.3單總線驅(qū)動(dòng)器DS2480B
DS2480B是從串行接口到1-Wire網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換的橋接器。只要主機(jī)具有普通的串行通信UART,就可以通過(guò)該橋接器產(chǎn)生嚴(yán)格定時(shí)和電壓擺率控制的1-Wire波形。DS2480B接受所要發(fā)送的指令和數(shù)據(jù),執(zhí)行1-Wire操作,并將結(jié)果返回至主機(jī)(詳細(xì)資料間參考文獻(xiàn)[2])。
2.4 系統(tǒng)原理圖
考慮到單總線的驅(qū)動(dòng)能力,采用星型結(jié)構(gòu),就是在若干個(gè)單總線上分別掛若干個(gè)單總線器件。
硬件以AT89C55WD為核心,系統(tǒng)原理圖1所示。主要包括按鍵模塊、顯示模塊、信號(hào)輸入、控制輸出、時(shí)鐘、串口擴(kuò)展和存儲(chǔ)等電路。LED用來(lái)循環(huán)顯示個(gè)測(cè)量點(diǎn)的參數(shù),按鍵用來(lái)設(shè)置給定參數(shù),AT24C256用來(lái)存儲(chǔ)各個(gè)測(cè)量點(diǎn)單總線器件的序列號(hào)(測(cè)量點(diǎn)的器件地址)及一些重要的參數(shù)。GM用來(lái)擴(kuò)展串口,擴(kuò)展后的三個(gè)串口分別用于轉(zhuǎn)換為1-Wire網(wǎng)絡(luò)協(xié)議、LED顯示和與上位機(jī)通信。
[align=center]

圖1 系統(tǒng)原理圖[/align]
3 軟件設(shè)計(jì)
3.1總線結(jié)構(gòu)軟件設(shè)計(jì)
在該系統(tǒng)中,多個(gè)單總線器件掛于一單總線上,欲想操作任何一個(gè)單總線器件,必須首先獲得該器件的地址,即序列號(hào)。獲得器件的地址的方法一般有兩種方法,第一種方法是:調(diào)試程序時(shí),編寫(xiě)一單獨(dú)程序依次讀出每個(gè)測(cè)控點(diǎn)器件的地址并存于單片機(jī)程序表格中[3],但當(dāng)該測(cè)控點(diǎn)的某個(gè)器件損壞時(shí),需要讀新的單總線器件地址,替換壞器件,并要修改主程 微計(jì)算機(jī)序,重新固化主程序;第二種方法是:通過(guò)二叉樹(shù)算法完成在線所有的單總線器件地址,但系統(tǒng)無(wú)法具體確定每個(gè)測(cè)量點(diǎn)的單總線器件地址。
該系統(tǒng)采用依次上電的方法,通過(guò)二叉樹(shù)算法(見(jiàn)參考文獻(xiàn)[4])完成每個(gè)測(cè)量點(diǎn)的在線單總線器件地址,維護(hù)方便,方法如下:
?。?)打開(kāi)測(cè)控點(diǎn)1單總線器件電源,關(guān)閉其它測(cè)控點(diǎn)電源,通過(guò)“Search”鍵啟動(dòng)在線搜索地址操作,LED顯示“1”,表示正在搜索測(cè)控點(diǎn)1單總線器件的地址。存儲(chǔ)測(cè)控點(diǎn)1單總線器件地址于AT24C256。
(2)測(cè)量點(diǎn)1搜索完畢后,LED顯示“2”,打開(kāi)測(cè)控點(diǎn)2單總線器件電源,系統(tǒng)根據(jù)二叉樹(shù)算法在線搜索測(cè)控點(diǎn)2單總線器件的地址,存儲(chǔ)測(cè)控點(diǎn)2單總線器件地址于AT24C256。
?。?)測(cè)量點(diǎn)2搜索完畢后,LED顯示“3”,如有測(cè)控點(diǎn)3,打開(kāi)測(cè)控點(diǎn)單總線器件電源,搜索測(cè)控點(diǎn)3的器件地址,依次類(lèi)推;如沒(méi)有,按“OK”按鍵。
3.2抗干擾軟件設(shè)計(jì)
系統(tǒng)采用三種抗干擾方法:
?。?)應(yīng)用AT89C55WD片上看門(mén)狗;
(2)應(yīng)用軟件陷阱;
?。?)采用CRC容錯(cuò)技術(shù)。
4 結(jié)論
本文作者的創(chuàng)新點(diǎn)(軟硬件):
?。?)硬件均為可裁剪結(jié)構(gòu),組態(tài)靈活,各模塊可以不依賴(lài)其他模塊獨(dú)立運(yùn)行,運(yùn)行方式既可以自動(dòng)又可以手動(dòng),該系統(tǒng)可以利用485異步串行通信總線聯(lián)網(wǎng),以適應(yīng)各類(lèi)不同檔次用戶(hù)的不同需要,根據(jù)不同組態(tài),系統(tǒng)既可以適應(yīng)高自動(dòng)化程度的具有集散特征的大規(guī)模用戶(hù),又可適應(yīng)各類(lèi)中小散戶(hù)應(yīng)用。
?。?)現(xiàn)場(chǎng)的單總線結(jié)構(gòu),所有的信號(hào)采集都可以掛在只有兩條導(dǎo)線組成的單總線上,由于農(nóng)業(yè)溫室各類(lèi)參數(shù)變化均較緩慢,故可以采用串行分時(shí)復(fù)用的方式解決大量現(xiàn)場(chǎng)信息的傳輸問(wèn)題,這就使得現(xiàn)場(chǎng)前向通道電路結(jié)構(gòu)大大簡(jiǎn)化。
?。?)采用模糊解耦算法處理現(xiàn)場(chǎng)參數(shù)間的強(qiáng)耦合問(wèn)題,將矩陣解耦結(jié)果轉(zhuǎn)化為相關(guān)結(jié)果鏈表,以指針變量定位解耦輸出結(jié)果。
參考文獻(xiàn)
[1]Dallas Semiconductor Data Books.Dallas Semiconductor Corporation 1995
[2] 李華驛,汪道輝.應(yīng)用DS2480實(shí)現(xiàn)RS—232與單總線的串行接口[J], 微計(jì)算機(jī)信息,2002.12:45-46
[3] 文哲雄,羅中良.單總線多點(diǎn)分布式溫度監(jiān)控系統(tǒng)的設(shè)計(jì)[J],微計(jì)算機(jī)信息,2005.06s:63-65
[4] 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)庫(kù)結(jié)構(gòu)[M].清華大學(xué)出版社,1998