【正文】
倉(cāng)庫(kù)溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)摘要本設(shè)計(jì)使用STC89C52單片機(jī)作為主控制模塊,利用簡(jiǎn)單的外圍電路來(lái)驅(qū)動(dòng)1Wire總線,利用1Wire總線協(xié)議,實(shí)現(xiàn)了多點(diǎn)溫度和濕度的精確測(cè)量。利用STC89C52單片機(jī)本身強(qiáng)大的功能和內(nèi)部RAM資源,可以很方便的實(shí)現(xiàn)單片機(jī)與PC機(jī)間的數(shù)據(jù)傳輸,并能利用軟件方便的邏輯判斷實(shí)現(xiàn)了1Wire總線的ROM搜索,實(shí)現(xiàn)了測(cè)溫器件18B20的枚舉,實(shí)現(xiàn)了無(wú)人干預(yù)的測(cè)溫點(diǎn)的動(dòng)態(tài)裁剪,所以本設(shè)計(jì)具有很強(qiáng)的現(xiàn)實(shí)應(yīng)用性。另外,本系統(tǒng)的濕度檢測(cè)沒(méi)有完成。本文從1Wire總線的原理入手,詳細(xì)闡述了1Wire總線的ROM搜索過(guò)程,以及硬件電路的設(shè)計(jì)、計(jì)算和軟件的算法。關(guān)鍵詞:DS18B20 ;單片機(jī) MCU;串行傳輸 Serial Data Transfer;單總線 1wire interfaceAbstractThis design as the main STC8952 of singlechip control module, using a simple external circuit to drive the 1Wire bus, the use of 1Wire bus protocol, to achieve a more accurate measurement of temperature. The use of MCS STC89C52 powerful features and its own internal RAM resources, it is easy to achieve singlechip and PC data transfer between aircraft and the use of software to facilitate the realization of the logic to determine the 1Wire bus ROM search, the realization of the temperature measurement device enumeration 18B20, no intervention to achieve a dynamic temperature measurement point cut, so the design of practical application. In addition,the system did not plete humidity testing. This article from the 1Wire bus starting with the principle, described in detail 1Wire bus ROM search process, as well as the design of hardware circuits, puting and software algorithms. Keywords :DS18B20。 Singlechip MCU 。Serial transmission Serial Data Transfer。monobus 1wire interface目 錄摘要 IAbstract II目 錄 III第1章 緒 論 1 1 2 2 2第2章 系統(tǒng)總體設(shè)計(jì) 3 3 4 DS18B20基本知識(shí) 4 DS18B20產(chǎn)品的特點(diǎn) 4 DS18B20的引腳介紹 4 5 5 DS18B20的使用 7 DS18B20的應(yīng)用電路 11 14 MAX232電平轉(zhuǎn)換芯片特點(diǎn) 18 20 20第3章 軟件設(shè)計(jì) 22 1Wire總線協(xié)議處理 22 1Wire CRC 校驗(yàn)處理 28 1Wire 器件的ROM搜索 29 ‘FIRST’操作 38 ‘NEXT’操作 38 39第4章 總結(jié) 41社會(huì)經(jīng)濟(jì)效益分析 42參考文獻(xiàn) 43致謝 45附錄A 程序清單 46附錄B PCB板圖 65 第1章 緒 論防潮、防霉、防腐、防爆是糧庫(kù)日常工作的重要內(nèi)容,是衡量糧庫(kù)管理質(zhì)量的重要指標(biāo)。它直接影響到儲(chǔ)備物資的壽命和工作可靠性。為保證日常工作的順利進(jìn)行,首要問(wèn)題是加強(qiáng)倉(cāng)庫(kù)內(nèi)溫度的監(jiān)測(cè)工作,因?yàn)闇囟鹊纳?,就意味著糧庫(kù)內(nèi)的有氧呼吸的加強(qiáng),就意味著馬上就要發(fā)生腐爛霉變。因此我們需要一種造價(jià)低廉、使用方便且測(cè)量準(zhǔn)確的溫度測(cè)量?jī)x。在我們的印象中,溫度的測(cè)量不外乎由傳感器、放大器、數(shù)碼顯示、報(bào)警器等單元組成。但是通過(guò)實(shí)際的考察,現(xiàn)實(shí)的系統(tǒng)根本不是這個(gè)樣子:由于糧食要定期的通過(guò)熏蒸來(lái)除蟲(chóng)、防鼠,熏蒸藥劑具有高毒性,高腐蝕性,人員根本不能隨意接觸到倉(cāng)內(nèi)設(shè)備,更不要說(shuō)通過(guò)數(shù)碼管的顯示和報(bào)警器來(lái)及時(shí)發(fā)現(xiàn)溫度的異常變化,同時(shí)出于防爆的要求,在倉(cāng)庫(kù)內(nèi)部的系統(tǒng),是完全密封的,并被充入低氧高氮的氣體,平時(shí)人員根本不能及時(shí)進(jìn)入。因此現(xiàn)在的監(jiān)控系統(tǒng)都是由計(jì)算機(jī)監(jiān)控,采用專用組態(tài)軟件、單片機(jī)及數(shù)字傳感器組成的,具有5001000個(gè)測(cè)溫點(diǎn)的,網(wǎng)絡(luò)化的數(shù)字式溫度檢測(cè)的系統(tǒng)。下圖展示了一種可能的結(jié)構(gòu)通過(guò)一線牽采集模塊,對(duì)糧倉(cāng)的溫度進(jìn)行測(cè)量采集,每個(gè)糧倉(cāng)約有200點(diǎn)模擬量輸入(溫度)并根據(jù)糧食的情況對(duì)現(xiàn)場(chǎng)進(jìn)行濕度檢測(cè)?,F(xiàn)場(chǎng)控制站現(xiàn)場(chǎng)控制站可用西門(mén)子PLC控制現(xiàn)場(chǎng)輸送機(jī)、提升機(jī)、電動(dòng)閘門(mén)、通風(fēng)機(jī)的啟動(dòng)運(yùn)行,以及報(bào)警等功能的反饋信號(hào),實(shí)現(xiàn)自動(dòng)化控制。上位機(jī)上位機(jī)運(yùn)行組態(tài)通用工業(yè)過(guò)程監(jiān)控軟件,對(duì)現(xiàn)場(chǎng)的設(shè)備進(jìn)行監(jiān)控、并對(duì)倉(cāng)庫(kù)溫濕度進(jìn)行巡回檢測(cè)。并生成動(dòng)態(tài)畫(huà)面、報(bào)表、報(bào)警、曲線等數(shù)據(jù)管理功能。 這就要求我們必須設(shè)計(jì)一種高可靠,高一致性,基本免維護(hù),可自由增減測(cè)溫點(diǎn),并具有和計(jì)算機(jī)聯(lián)網(wǎng)交換數(shù)據(jù)的能力的測(cè)溫組件。根據(jù)實(shí)際的需求,我們提出了測(cè)溫組件的基本功能,需要說(shuō)明的是,在這里你看不到傳統(tǒng)的溫度顯示功能,因?yàn)閷?shí)際上工作人員根本不可能到現(xiàn)場(chǎng)去記錄溫度的顯示。同時(shí)增加了組件的測(cè)溫點(diǎn)免維護(hù)自由增減功能,以適應(yīng)系統(tǒng)的規(guī)模的自由裁剪。檢測(cè)溫度測(cè)溫點(diǎn)免維護(hù)自由增減過(guò)限指示與計(jì)算機(jī)通訊 溫度檢測(cè)范圍 : 40℃+60℃測(cè)量精度: ℃報(bào)警方式:閃動(dòng)的LED指示燈通訊方式:RS232 9600,N,8,1第2章 系統(tǒng)總體設(shè)計(jì)本設(shè)計(jì)是以STC89C52為基本系統(tǒng)核心的一套檢測(cè)系統(tǒng),其中包括、單片機(jī)、復(fù)位電路、溫度檢測(cè)、過(guò)限指示、通訊接口、系統(tǒng)軟件等部分的設(shè)計(jì)。 系統(tǒng)總體框圖方案一:采用熱電阻溫度傳感器。熱電阻是利用導(dǎo)體的電阻隨溫度變化的特性制成的測(cè)溫元件?,F(xiàn)應(yīng)用較多的有鉑、銅、鎳等熱電阻。其主要的特點(diǎn)為精度高、測(cè)量范圍大、便于遠(yuǎn)距離測(cè)量。鉑的物理、化學(xué)性能極穩(wěn)定,耐氧化能力強(qiáng),易提純,復(fù)制性好,工業(yè)性好,電阻率較高,因此,鉑電阻用于工業(yè)檢測(cè)中高精密測(cè)溫和溫度標(biāo)準(zhǔn)。缺點(diǎn)是價(jià)格貴,溫度系數(shù)小,受到磁場(chǎng)影響大,在還原介質(zhì)中易被玷污變脆。按IEC標(biāo)準(zhǔn)測(cè)溫范圍200~650℃,百度電阻比W(100)=,R0為100Ω和10Ω,其允許的測(cè)量誤差A(yù)級(jí)為177。(℃+ |t|),B級(jí)為177。(℃+ |t|)。銅電阻的溫度系數(shù)比鉑電阻大,價(jià)格低,也易于提純和加工;但其電阻率小,在腐蝕性介質(zhì)中使用穩(wěn)定性差。在工業(yè)中用于50~180℃測(cè)溫。方案二:采用AD590。采用AD590,它的測(cè)溫范圍在55℃~+150℃之間,而且精度高。M檔在測(cè)溫范圍內(nèi)非線形誤差為177?!妗D590可以承受44V正向電壓和20V反向電壓,因而器件反接也不會(huì)損壞。使用可靠。它只需直流電源就能工作,而且,無(wú)需進(jìn)行線性校正,所以使用也非常方便,接口也很簡(jiǎn)單。作為電流輸出型傳感器的一個(gè)特點(diǎn)是,和電壓輸出型相比,它有很強(qiáng)的抗外界干擾能力。AD590的測(cè)量信號(hào)可遠(yuǎn)傳百余米。綜合比較方案一與方案二,方案二更為適合于本設(shè)計(jì)系統(tǒng)對(duì)于溫度傳感器的選擇。方案三:采用DS18B20。DS18B20 數(shù)字溫度傳感器,測(cè)溫范圍 -55℃~+125℃,℃。具有獨(dú)特的單線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。工作電源: 3~5V/DC。在使用中不需要任何外圍元件;測(cè)量結(jié)果以9~12位數(shù)字量方式串行傳送。綜合比較方案二與方案三,方案三更為適合于本設(shè)計(jì)系統(tǒng)對(duì)于溫度傳感器的選擇。 DS18B20基本知識(shí) DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線上可以掛很多這樣的數(shù)字溫度計(jì),十分方便。 DS18B20產(chǎn)品的特點(diǎn) (1)、只要求一個(gè)端口即可實(shí)現(xiàn)通信。 (2)、在DS18B20中的每個(gè)器件上都有獨(dú)一無(wú)二的序列號(hào)。 (3)、實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫。 (4)、測(cè)量溫度范圍在-55。C到+125。C之間。 (5)、數(shù)字溫度計(jì)的分辨率用戶可以從9位到12位選擇。 (6)、內(nèi)部有溫度上、下限告警設(shè)置。 DS18B20的引腳介紹 TO-。 DS18B20引腳(底視圖) DS18B20詳細(xì)引腳功能描述序號(hào)名稱引腳功能描述1GND地信號(hào)2DQ數(shù)據(jù)輸入/輸出引腳。開(kāi)漏單總線接口引腳。既可以用在寄生電源下,也可以向器件提供電源。3VDD可選擇的VDD引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)STC89C52單片機(jī)來(lái)說(shuō),硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來(lái)模擬單總線的協(xié)議時(shí)序來(lái)完成對(duì)DS18B20芯片的訪問(wèn)。 由于DS18B20是在一根I/O線上讀寫(xiě)數(shù)據(jù),因此,對(duì)讀寫(xiě)的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫(xiě)時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫(xiě)時(shí)序開(kāi)始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫(xiě)命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。(1)DS18B20的復(fù)位時(shí)序 DS18B20的復(fù)位時(shí)序 DS18B20的讀時(shí)序?qū)τ贒S18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。 DS18B20的讀時(shí)序是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。 DS18B20的讀時(shí)序(2)DS18B20的寫(xiě)時(shí)序 對(duì)于DS18B20的寫(xiě)時(shí)序仍然分為寫(xiě)0時(shí)序和寫(xiě)1時(shí)序兩個(gè)過(guò)程。 對(duì)于DS18B20寫(xiě)0時(shí)序和寫(xiě)1時(shí)序的要求不同,當(dāng)要寫(xiě)0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確采樣IO總線上的“0”電平,當(dāng)要寫(xiě)1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。 DS18B20的寫(xiě)時(shí)序 DS18B20的使用 DS18B20內(nèi)部結(jié)構(gòu) DS18B20內(nèi)部結(jié)構(gòu)。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給計(jì)數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器2的脈沖輸入。計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器1的預(yù)置將重新被裝入,計(jì)數(shù)器1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。,其輸出用于修正計(jì)數(shù)器1的預(yù)置值。 DS18B20的測(cè)溫原理DS18B20有4個(gè)主要的數(shù)據(jù)部件:(1)光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開(kāi)始8位(28H)是產(chǎn)品類型標(biāo)號(hào),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。(2)DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,℃/LSB形式表達(dá),其中S為符號(hào)位。 DS18B20溫度值格式這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,;如果溫度小于0,這5位為1。例如+125℃的數(shù)字輸出為07D0H,+℃的數(shù)字輸出為0191H,℃的數(shù)字輸出為FF6FH,55℃的數(shù)字輸出為FC90H。(3)DS18B20溫度傳感器的存儲(chǔ)器DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。(4)配置寄存器該字節(jié)各位的意義如下: 配置寄存器 低五位一直都是1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng)。R1和R0用來(lái)設(shè)置分辨率,如下表所示:(DS18B20出廠時(shí)被設(shè)置為12位) 溫度分辨率設(shè)置表(5)高速暫存存儲(chǔ)器高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如表5所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第0和第1個(gè)