基于單總線器件DS18B20的溫度測(cè)量?jī)x
1 引言
本文引用地址:http://www.ex-cimer.com/article/87493.htm許多情況下需要測(cè)量溫度參數(shù)。通常測(cè)溫系統(tǒng)的主要器件是熱敏電阻,由于它體積小、重復(fù)性好、測(cè)量方法簡(jiǎn)單,所以在測(cè)溫系統(tǒng)中廣泛應(yīng)用。但采用熱敏電阻的測(cè)溫系統(tǒng)需要A/D轉(zhuǎn)換,而且測(cè)量精度不高。本文采用Dallas公司生產(chǎn)的一種新型溫度傳感器DS18B20,它集溫度測(cè)量、A/D轉(zhuǎn)換于一體,其測(cè)量范圍寬(-55℃~+125℃),精度高(0.0625℃),DS18B20是一款具有單總線結(jié)構(gòu)的器件。
由DS18B20組建的溫度測(cè)量單元體積小,便于攜帶、安裝。同時(shí),DS18B20的輸出為數(shù)字量,可以直接與單片機(jī)連接,無需后級(jí)A/D轉(zhuǎn)換,控制簡(jiǎn)單。由于DS18B20具有單總線特性,便于擴(kuò)展,可在一根總線上掛接多個(gè)DS18B20來組建溫度測(cè)量網(wǎng)絡(luò)。
2 硬件電路設(shè)計(jì)
本系統(tǒng)設(shè)計(jì)采用 Mega8單片機(jī)控制DS18B20,由顯示電路顯示當(dāng)前溫度。其系統(tǒng)硬件電路如圖1所示。Atmel的Mega8單片機(jī)采用RTSC(精簡(jiǎn)指令集),指令執(zhí)行速度快,內(nèi)嵌8 KB Flash程序存儲(chǔ)器,支持ISP(在系統(tǒng)編程),片內(nèi)含有大容量的RAM區(qū),具有SPT總線、I2C總線、ADC功能。Mega8單片機(jī)體積小,功能強(qiáng),具有PDIP-28封裝及TQFP封裝。
DS18B20采用單總線方式和Mega8單片機(jī)相連,即DS18B20的1引腳和3引腳接地,2引腳通過一只240 Ω的電阻接至Mega8的PB7引腳,同時(shí)將PB7引腳采用一只4.7 kΩ的電阻上拉至VCC。
單總線即只用一根信號(hào)線,既供電,又傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,單總線具有"線與"功能,連接方便,便于擴(kuò)展。
由于DS18B20采用 CMOS技術(shù),耗電量很小,從總線上"偷"一點(diǎn)電保存到DS18B20內(nèi)的電容中就可供給器件工作。串聯(lián)240 Ω電阻的目的是防止有缺陷的程序損壞DS18B20,如果沒有正確地采用OC(集電極開路)或OD(漏極開路)結(jié)構(gòu)驅(qū)動(dòng)DS18B20,而是選擇推挽方式,DS18B20可能被燒壞。 2.1 DS18B20的控制時(shí)序
由于DS18B20是采用一根I/O總線讀寫數(shù)據(jù),因此,DS18B20對(duì)讀寫數(shù)據(jù)位有嚴(yán)格的時(shí)序要求。DS18B20遵循相應(yīng)的通信協(xié)議從而保證數(shù)據(jù)傳輸?shù)恼_性和完整性。該通信協(xié)議定義了多種信號(hào)時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將單片機(jī)作為主機(jī),DS18B20作為從機(jī)。每一次命令和數(shù)據(jù)傳輸都是從主機(jī)啟動(dòng)寫時(shí)序開始,如果要求從機(jī)回送數(shù)據(jù),在寫命令后,主機(jī)需啟動(dòng)讀時(shí)序接收數(shù)據(jù)。所有的讀、寫時(shí)序至少需要60μs,且每?jī)蓚€(gè)獨(dú)立的時(shí)序之間至少需要1μs的恢復(fù)時(shí)間。數(shù)據(jù)和命令的傳輸都足低位優(yōu)先。
DS18B20的復(fù)位時(shí)序包括主機(jī)發(fā)出的復(fù)位脈沖和從機(jī)發(fā)出的應(yīng)答脈沖。上機(jī)通過拉低單總線并保持至少480μs產(chǎn)十復(fù)位脈沖,然后由主機(jī)釋放總線,進(jìn)入接收模式。主機(jī)釋放總線時(shí),會(huì)產(chǎn)生一個(gè)由低電半跳變?yōu)楦唠娖降纳仙兀珼S18B20檢測(cè)到該上升沿后,延時(shí)15μs~60μs,接著DS18B20通過拉低總線60μs~240μs產(chǎn)生應(yīng)答脈沖。主機(jī)接收到DB18B20的應(yīng)答脈沖后就開始對(duì)DS18B20進(jìn)行ROM命令和功能命令操作。DS18B20的復(fù)位時(shí)序如圖2所示。
DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序。DS18B20的讀時(shí)序是主機(jī)將單總線拉為低電平,在15μs之內(nèi)釋放單總線,以便使DS18B20將數(shù)據(jù)傳輸?shù)絾慰偩€上。若DS18B20發(fā)送1,總線保持高電平,若發(fā)送0,則總線為低電平。由于DS18B20發(fā)送數(shù)據(jù)后保持15μs有效時(shí)間,因此,主機(jī)在讀時(shí)序時(shí)必須釋放總線,且保持15μs的采樣總線狀態(tài),以便接收DS18B20發(fā)送數(shù)據(jù)。DS18B20的讀時(shí)序如圖3所示。
DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序。但DS18B20寫0時(shí)序和寫1時(shí)序的要求不同。DS18B20寫0時(shí)序時(shí),單總線需要被拉低至少60μs,保證DS18B20能夠在15μs~45μs能夠正確地采樣I/O總線上的"0"電平;DS18B20寫1時(shí)序時(shí),單總線被拉低,并在15μs內(nèi)釋放單總線。DS18B20的寫時(shí)序如圖4所示。
DS18B20具有下面控制命令,如表1所示。
2.2 DS18B20的控制命令
單片機(jī)向DS18B20發(fā)送這些控制命令,完成相應(yīng)操作。例如,向DS18B20發(fā)送0x44命令,則DS18B20開始啟動(dòng)溫度轉(zhuǎn)換。
3 軟件設(shè)計(jì)
Mega8單片機(jī)對(duì)DS18B20的控制嚴(yán)格遵循單總線的復(fù)位及讀、寫時(shí)序要求,同時(shí),需要寫入必要的控制字控制DS18B20完成相應(yīng)工作。當(dāng)寫入0x44控制字啟動(dòng)DS18B20溫度轉(zhuǎn)換后,需要等待至少800 ms,在這個(gè)時(shí)間段內(nèi)DS18B20完成溫度的采集和A/D轉(zhuǎn)換,此時(shí)讀取的數(shù)據(jù)才是正確的。軟件程序流程圖如圖5所示。
主程序如下所示:
4 結(jié)束語
DS18B20集溫度測(cè)量、A/D轉(zhuǎn)換于一體,具有體積小、動(dòng)態(tài)范圍寬、測(cè)量精度高、單總線結(jié)構(gòu)等特點(diǎn)。經(jīng)試驗(yàn),基于Mega8單片機(jī)和DS18B20的溫度測(cè)量?jī)x,設(shè)計(jì)簡(jiǎn)單,控制方便,測(cè)量準(zhǔn)確,測(cè)溫范圍寬,完全可以取代水銀溫度計(jì)和熱敏電阻測(cè)量。利用單總線具有很強(qiáng)的擴(kuò)展性,還可以組建多點(diǎn)的溫度檢測(cè)網(wǎng)絡(luò)。因此,基于Mega8單片機(jī)和DS18B20的溫度測(cè)量?jī)x,具有廣泛的應(yīng)用前景。
評(píng)論