国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于DS18B20的多點(diǎn)溫度檢測系統(tǒng)

2015-05-13 07:33:55趙彩霞

趙彩霞

摘 要:該文提出了采用單總線數(shù)字式溫度傳感器DS18B20和單片機(jī)組成的新型智能多點(diǎn)溫度檢測系統(tǒng)。在文中,首先介紹了DS18B20的基本特性,然后給出了相應(yīng)的硬件接口電路、軟件流程及主要程序代碼。DS18B20具有直接輸出數(shù)字信號(hào)、單總線接口、成本低等優(yōu)點(diǎn)。經(jīng)試驗(yàn),基于單總線器件DS18B20的多點(diǎn)溫度檢測系統(tǒng)測量溫度準(zhǔn)確、測溫范圍寬、體積小、控制方便。

關(guān)鍵詞:單總線 DS18B20 多點(diǎn)測溫

中圖分類號(hào):TP21 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2015)01(c)-0100-03

Abstract:In this paper,a new multi-spot temperature survey system composed of 1-wire temperature sensor DS18B20 and MCU is designed.This article introduces the basic characteristics of DS18B20,and this article also gives the corresponding hardware interface circuit,software flow diagram and the primary code.DS18B20 has a series of characteristics such as digital output,1-wire interface and low cost.Test show that the multi-spot temperature survey system has the advantages of accurate measurement,wide temperature range,small volume and convenient controlling.

Key Words:1-wire;DS18B20;Multi-spot measuring temperature

在中央空調(diào)系統(tǒng)、冷庫系統(tǒng)、反季節(jié)大棚等多種系統(tǒng)中都需要多點(diǎn)的溫度檢測。因此,多點(diǎn)溫度檢測系統(tǒng)的高效率和低成本對實(shí)際生活生產(chǎn)具有重要意義。傳統(tǒng)的溫度檢測系統(tǒng)大都以熱電阻、熱電偶為傳感器,將被檢測的模擬信號(hào)放大、調(diào)理及A/D轉(zhuǎn)換,然后將所得的數(shù)字信號(hào)送入CPU處理,其可靠性相對較差,且處理電路復(fù)雜、成本高,對CPU的資源占用較多。而Dallas公司推出的DS18B20是單總線數(shù)字溫度傳感器,它可以將輸入的溫度模擬信號(hào)直接轉(zhuǎn)換為數(shù)字信號(hào),轉(zhuǎn)換給CPU,電路簡單。系統(tǒng)設(shè)計(jì)中可以用總線拓?fù)?,在一根I/O線上掛接多個(gè)傳感器,非常適合溫度的多點(diǎn)測量。

1 DS18B20簡介

DS18B20是美國Dallas半導(dǎo)體公司生產(chǎn)的單總線數(shù)字溫度傳感器,它將半導(dǎo)體溫敏元件、A/D轉(zhuǎn)換器、存儲(chǔ)器等做在一個(gè)很小的集成電路芯片上,傳感器直接輸出的是溫度信號(hào)數(shù)字值。它具有微型化、低功率、高性能、抗干擾能力強(qiáng)、電壓范圍寬、易于與單片機(jī)接口等優(yōu)點(diǎn),適合于各種溫度測控系統(tǒng)。[]DS18B20內(nèi)部的64位激光ROM用于存儲(chǔ)由生產(chǎn)廠家光刻的全球唯一的、且不可更改的64位序列號(hào)。CPU通過ROM指令讀取總線上掛接的各個(gè)傳感器ROM識(shí)別碼以選擇單總線上的某一個(gè)從器件,未被選中的從器件則忽略CPU的后續(xù)指令。即以該序列號(hào)為傳感器節(jié)點(diǎn)的地址。

2 系統(tǒng)的硬件基礎(chǔ)

測溫系統(tǒng)的主要組成部分有溫度傳感器DS18B20、EEPROM、人機(jī)界面(鍵盤、LCD顯示器)和STC15單片機(jī),結(jié)構(gòu)框圖如圖1所示。

系統(tǒng)以單總線的形式掛接多個(gè)傳感器于MCU的某一I/O端口。MCU通過單總線完成于傳感器節(jié)點(diǎn)的通訊,主要工作包括:節(jié)點(diǎn)地址的讀取及識(shí)別,對選定節(jié)點(diǎn)讀取或傳輸數(shù)據(jù)。EEPROM可以用于對各個(gè)傳感器64位序列號(hào)的存儲(chǔ)和簡單的溫度記錄。顯示模塊選用字符型液晶顯示器LCD1602,對測量結(jié)果進(jìn)行顯示。

本設(shè)計(jì)中的EEPROM可以存儲(chǔ)各個(gè)傳感器的64位序列號(hào)并進(jìn)行簡單的溫度記錄。此處選用的是ATMEL公司基于I2C總線接口的24C64。對于24C64,要在I2C總線上連續(xù)發(fā)送兩個(gè)器件子地址,其尋址范圍可達(dá)16KB。

3 多點(diǎn)識(shí)別的實(shí)現(xiàn)與軟件設(shè)計(jì)

對DS18B20的訪問分為3個(gè)步驟。(1)初始化:單片機(jī)通過單總線,向DS18B20發(fā)送一個(gè)復(fù)位脈沖,單總線上的所有傳感器都被復(fù)位。(2)序列號(hào)訪問命令:MCU發(fā)送某一個(gè)DS18B20的序列號(hào)。單總線上所有相連的DS18B20都進(jìn)行編碼匹配,只有編碼一致的從芯片才被激活。(3)內(nèi)存訪問命令:MCU對選中的DS18B20發(fā)送內(nèi)存訪問命令。

3.1 關(guān)于DS18B20的時(shí)序

單總線(1-Wire)是美國Dallas公司推出的外圍串行擴(kuò)展總線。所有單總線的器件都掛在這跟線上,即僅通過1條連接線,便可以完成全部的控制、通信甚至是供電。與I2C、SPI等芯片間的通信協(xié)議不同,單總線協(xié)議中并沒有專門的時(shí)鐘線,所以嚴(yán)格的時(shí)序控制是通信得以實(shí)現(xiàn)的基礎(chǔ)。DS18B20的通信協(xié)議主要包括復(fù)位和應(yīng)答脈沖時(shí)序、寫時(shí)序和讀時(shí)序。

對DS18B20的每一次操作,都是由復(fù)位開始的。復(fù)位時(shí)序如圖2。

首先由單片機(jī)發(fā)送復(fù)位脈沖,然后釋放之。若總線上有正常工作的芯片,在15-60us后,傳感器芯片會(huì)發(fā)送存在脈沖——60-240us的低電平信號(hào)。此時(shí)DS18B20的復(fù)位與應(yīng)答已經(jīng)完成了,適當(dāng)延時(shí)后既可對其進(jìn)行讀寫操作。

寫時(shí)序是單片機(jī)主動(dòng)發(fā)出的,其開始是主機(jī)將單總線從高電平拉為低電平,時(shí)序如圖3。

讀時(shí)序和寫時(shí)序類似,由主機(jī)發(fā)起,不同的是主機(jī)會(huì)進(jìn)入采樣狀態(tài),接收數(shù)據(jù)。

3.2 DS18B20的序列號(hào)采集

在系統(tǒng)的實(shí)際應(yīng)用中,需要測溫節(jié)點(diǎn)的數(shù)字地址與物理位置相一致。即用戶需要知道所顯示的溫度是哪個(gè)測溫節(jié)點(diǎn)測出來的,否則一切都沒有意義。

當(dāng)新的DS18B20接入系統(tǒng)時(shí),需要讀取其64位序列號(hào),將該序列號(hào)與用戶賦予的人工編碼相對應(yīng),并存入EEPROM中。如此一來,即使系統(tǒng)掉電以后,各個(gè)傳感器芯片的序列號(hào)也能得以被保存。

傳感器芯片的64位序列號(hào)采集流程如圖4所示。當(dāng)單片機(jī)發(fā)出復(fù)位脈沖并受到芯片的應(yīng)答信號(hào),就對DS18B20發(fā)送讀ROM命令,即對總線寫#33H。此時(shí),傳感器芯片會(huì)做出發(fā)送64位ROM序列號(hào)的準(zhǔn)備,但是數(shù)據(jù)的讀時(shí)序依然是由主機(jī)發(fā)起。當(dāng)64位的ROM序列號(hào)讀取完畢后,就可以將當(dāng)前單總線器件的序列號(hào)存入EEPROM為其開辟的存儲(chǔ)空間內(nèi)。

3.3 主程序設(shè)計(jì)

模塊設(shè)計(jì)是使程序結(jié)構(gòu)化的有效方法。該測溫系統(tǒng)的主程序主要分為DS18B20初始化模塊、溫度轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊、顯示模塊以及上文提到的傳感器ROM序列號(hào)采集模塊,其中序列號(hào)采集模塊是獨(dú)立于溫度檢測之外的。

初始化模塊的主要任務(wù)是設(shè)置DS18B20的上、下限報(bào)警溫度及傳感器的分辨率,其操作對象是芯片內(nèi)部高速暫存器RAM的第2、3、4字節(jié)。DS18B20內(nèi)部的高速RAM是由9個(gè)字節(jié)的高速暫存器和非易失性電擦寫EEPROM集成的,其中EEPROM用于存儲(chǔ)TH、TL和配置存儲(chǔ)器的值。數(shù)據(jù)是先寫入RAM,經(jīng)校驗(yàn)后在傳給EEPROM,這樣就可以保證本次設(shè)置的參數(shù)在下次開機(jī)復(fù)位之后還會(huì)有效。此模塊編寫為子程序“DS18B20_INT”。

在溫度轉(zhuǎn)換模塊中,采用了統(tǒng)一轉(zhuǎn)換,逐個(gè)讀取的算法。系統(tǒng)中,設(shè)置DS18B20為12位分辨率,溫度轉(zhuǎn)換的時(shí)間為750ms(實(shí)際的程序延時(shí)設(shè)置為1s)。所以,如果要等傳感器逐一進(jìn)行溫度轉(zhuǎn)換并讀取的話,會(huì)對影響系統(tǒng)的實(shí)時(shí)性:第一個(gè)傳感器和最后一個(gè)傳感器測得溫度的時(shí)間差是分鐘級(jí)的。所以在溫度轉(zhuǎn)換模塊中,我們先復(fù)位所有的DS18B20,然后發(fā)送“跳過ROM”命令(#0CCH)和“溫度轉(zhuǎn)換”命令(#44H),這就可以實(shí)現(xiàn)用一秒的時(shí)間使全部傳感器完成溫度轉(zhuǎn)換,然后再逐一讀取并保存,其中最后一步操作只需要極端的時(shí)間。此模塊編寫為子程序“TEMP_RD”,其流程見圖5。

DS18B20作為溫度傳感器,突出特點(diǎn)就是它向主機(jī)傳輸?shù)牟⒉皇请妷夯螂娏鞯饶M信號(hào),而是不易失真的數(shù)字信號(hào)。既然是數(shù)字信號(hào),其結(jié)果就有特定的格式。在DS18B20內(nèi)部,測溫結(jié)果存儲(chǔ)在暫存RAM中,其字節(jié)1的高5位是符號(hào)位,字節(jié)0的低4位是小數(shù)部分,中間7位是整數(shù)部分。

當(dāng)數(shù)據(jù)上傳到單片機(jī)之后,需要經(jīng)過數(shù)據(jù)轉(zhuǎn)換才可以存入顯示緩沖區(qū)供顯示子程序讀取。數(shù)據(jù)轉(zhuǎn)換模塊的功能是將二進(jìn)制數(shù)據(jù)通過查表的方法轉(zhuǎn)換為按十進(jìn)制位存儲(chǔ)的ASCII碼,存入顯示緩沖區(qū)。此模塊編寫為子程序“DS18B20_DIV”,具體流程見圖6。

4 結(jié)語

基于DS18B20的單總線多點(diǎn)測溫系統(tǒng)具有硬件簡單的突出優(yōu)點(diǎn),易于擴(kuò)展,成本低廉。在本課題中,由外接的EEPROM保存單總線器件的獨(dú)有序列號(hào)和物理地址,使用方便。本設(shè)計(jì)經(jīng)試驗(yàn)條件下測試,工作穩(wěn)定,使用帶屏蔽的三芯電纜,在80米內(nèi)可準(zhǔn)確傳輸數(shù)據(jù)。

參考文獻(xiàn)

[1] 梅麗風(fēng),王艷秋,汪毓鐸,等.單片機(jī)原理及接口技術(shù)[M].北京:清華大學(xué)出版社,2006.

[2] 丁向榮.單片機(jī)原理與接口技術(shù)—— 基于STC15系列單片機(jī)[M].北京:電子工業(yè)出版社,2012.

[3] DALLAS公司的DS18B20數(shù)據(jù)手冊.

[4] 楊海波,張瑋,劉曉靜,等.一種基于數(shù)字溫度傳感器DS18B20的多功能電子溫度計(jì)設(shè)計(jì)[J].中國醫(yī)學(xué)物理學(xué)雜志,2013,30(1):3890-3893.

[5] 韓雪,蔣國平,馬幼軍.數(shù)字式溫度傳感器DS18B20在溫室環(huán)境監(jiān)測中的應(yīng)用[J].儀表技術(shù)傳感器,2002(9):29-31.

[6] 秦芹.一種基于DS18B20的溫度采集新方案[J].電子技術(shù),2010(10):62-64.

沙田区| 修水县| 华蓥市| 墨脱县| 婺源县| 廊坊市| 元谋县| 邯郸县| 辽阳市| 许昌市| 洛隆县| 买车| 襄垣县| 东港市| 林口县| 通州市| 仁化县| 丰城市| 金门县| 蚌埠市| 五大连池市| 凤山县| 石门县| 蒙阴县| 大兴区| 博白县| 望奎县| 福海县| 黔江区| 宁晋县| 景德镇市| 会宁县| 潍坊市| 峨眉山市| 鲁甸县| 且末县| 梅州市| 越西县| 罗田县| 丹棱县| 沂源县|