田野
摘 要:本文提出了一種基于FPGA的單總線多點(diǎn)測(cè)溫的應(yīng)用設(shè)計(jì)方案,只需3根線就能完成幾十個(gè)甚至上百個(gè)溫度點(diǎn)的測(cè)量,與通常單線單點(diǎn)測(cè)溫相比,具有線路簡(jiǎn)單、占用資源少、擴(kuò)展維護(hù)方便等特點(diǎn)。通過(guò)實(shí)驗(yàn)樣機(jī)驗(yàn)證:基于FPGA的1-wire多點(diǎn)測(cè)溫設(shè)計(jì)方案是可行的,已成功實(shí)現(xiàn)單總線8個(gè)溫度點(diǎn)的實(shí)時(shí)測(cè)量,并試驗(yàn)樣機(jī)工作穩(wěn)定可靠,此設(shè)計(jì)方案可應(yīng)用在工業(yè)生產(chǎn)、民用生產(chǎn)、軍工設(shè)備等設(shè)施的多點(diǎn)溫度檢測(cè)與控制等領(lǐng)域。
關(guān)鍵詞:?jiǎn)慰偩€ DS18B2 0FPGA 單點(diǎn)測(cè)溫 多點(diǎn)測(cè)溫
中圖分類(lèi)號(hào):TP271.5 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2018)04(b)-0006-02
1-wire單總線技術(shù),即一根線既傳輸時(shí)鐘又傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,在微功耗的運(yùn)用下還能做寄生供電的電源使用,是目前結(jié)構(gòu)最簡(jiǎn)單、成本低廉且便于擴(kuò)展維護(hù)的一種數(shù)據(jù)傳輸方式。這種技術(shù)具有線路簡(jiǎn)單、硬件開(kāi)銷(xiāo)少等顯著優(yōu)點(diǎn),廣泛用于工業(yè)生產(chǎn)、民用生產(chǎn)、軍工設(shè)備等設(shè)施的溫度檢測(cè)與控制[1]。
單總線技術(shù)是MAXIM全資子公司DALLAS的一項(xiàng)專(zhuān)有技術(shù),與目前多種串行數(shù)據(jù)通訊方式(SPI/IIC)不同,它采用單根信號(hào)線。目前常用的單總線器件很多,涉及到溫度傳感器、EEPROM、實(shí)時(shí)時(shí)鐘等很多種類(lèi),市場(chǎng)上運(yùn)用最為廣泛的芯片之一就溫度傳感器DS18B20。
1 單總線溫度測(cè)量原理
在日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要用到溫度的檢測(cè)及控制,傳統(tǒng)的測(cè)溫元器件有熱電偶、熱電阻、而它們測(cè)出的信號(hào)一般都是電壓信號(hào),需要外部硬件電路支持,把模擬量信號(hào)轉(zhuǎn)換成數(shù)字量信號(hào)便于顯示和控制。本文為了低成本和工程化設(shè)計(jì),采用溫度傳感器DS18B20通過(guò)FPGA的IO口直接獲取溫度數(shù)字量信號(hào),這種單總線數(shù)字信號(hào)傳輸技術(shù),具有抗干擾性高、可靠度高、傳輸距離遠(yuǎn)等優(yōu)勢(shì)。
DS18B20是美國(guó)DALLAS公司生產(chǎn)的單總線數(shù)字溫度傳感器芯片,采用3引腳TO-92小體積封裝和8腳SOIC封裝,測(cè)量溫度范圍-55℃~125℃,具有9~12位AD轉(zhuǎn)換精度,最小溫度分辨率可達(dá)0.0625℃,以16位補(bǔ)碼方式串行輸出所測(cè)量的溫度值。
2 方案設(shè)計(jì)
DS18B20供電方式分為:內(nèi)部寄生電源和外部電源兩種形式,在連接方式上分為單片連接和多片連接,前者形成單點(diǎn)測(cè)溫系統(tǒng),后者構(gòu)成多點(diǎn)測(cè)溫系統(tǒng)[2]。
2.1 單點(diǎn)測(cè)溫硬件設(shè)計(jì)
DS18B20工作在寄生電源模式下時(shí),從信號(hào)線DQ上汲取能量,DQ高電平時(shí)DS18B20吸收能量至內(nèi)部電容,DQ低電平時(shí)利用內(nèi)部電容的能量工作,從而實(shí)現(xiàn)在不需要本地電源的情況下遠(yuǎn)程測(cè)溫;其電路連接如圖1所示。
2.2 多點(diǎn)測(cè)溫硬件設(shè)計(jì)
DS18B20工作在外供電源模式下,多個(gè)DS18B20可以并聯(lián)到3根線上,此時(shí)FPGA只需一根端口線就可以實(shí)現(xiàn)與多個(gè)DS18B20傳感器的通訊,這樣只占用微處理器的一個(gè)IO端口,就可實(shí)現(xiàn)多點(diǎn)測(cè)溫系統(tǒng)[3]。
DS18B20有一個(gè)存儲(chǔ)于ROM中激光刻制的64位序列號(hào),是該DS18B20地址序列碼,每個(gè)DS18B20序列碼均不相同。64位長(zhǎng)的唯一ROM碼中,開(kāi)始8位(28H)是產(chǎn)品類(lèi)型
標(biāo)識(shí)號(hào),作為單總線器件識(shí)別碼,接下來(lái)48位是器件唯一序列號(hào),最后八位是前56位的CRC校驗(yàn)碼。ROM中序列碼的作用是使每一個(gè)DS18B20都各不相同,這樣就可實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20。當(dāng)有許多單總線器件連接在同一總線上時(shí),系統(tǒng)可通過(guò)序列號(hào)將需要訪問(wèn)的器件挑出來(lái),一旦知道每個(gè)器件的地址,就可以利用該地址選擇相應(yīng)器件進(jìn)行通訊。三線制電路連接如圖2所示。
2.3 軟件設(shè)計(jì)
軟件基于FPGA采用Verilog編寫(xiě),主要完成DS18B20初始化、寫(xiě)時(shí)序操作、讀時(shí)序操作、數(shù)據(jù)發(fā)送等功能。
2.3.1 復(fù)位時(shí)序
DS18B20工作時(shí),首先FPGA控制總線DQ將DS18B20復(fù)位,然后才能執(zhí)行其他命令。復(fù)位時(shí),F(xiàn)PGA將總線拉為低電平并保持616μs,然后釋放總線;DS18B20檢測(cè)到復(fù)位低電平后,立即響應(yīng)復(fù)位命令,控制總線并拉高75μs;至此,完成復(fù)位操作。
2.3.2 寫(xiě)時(shí)序
FPGA控制DS18B20總線,執(zhí)行寫(xiě)數(shù)據(jù)時(shí)序時(shí),先將總線DQ置為低電平,保持時(shí)間5μs;DS18B20在數(shù)據(jù)線變成低電平后15~60μs內(nèi)對(duì)數(shù)據(jù)線進(jìn)行采樣。因此,F(xiàn)PGA根據(jù)寫(xiě)數(shù)據(jù)的內(nèi)容“1”或者“0”將總線DQ相應(yīng)拉低5μs或拉低75μs,然后釋放總線,完成一個(gè)比特位寫(xiě)時(shí)序的操作;依次類(lèi)似完成其他比特位寫(xiě)時(shí)序的操作。
2.3.3 讀時(shí)序
FPGA讀取DS18B20溫度數(shù)據(jù)時(shí),先將數(shù)據(jù)總線DQ置為低電平,保持時(shí)間8μs,然后釋放數(shù)據(jù)總線;DS18B20控制總線,在數(shù)據(jù)線從高電平變?yōu)榈碗娖降?2μs內(nèi)將一個(gè)比特位數(shù)據(jù)送到總線DQ上;因此,F(xiàn)PGA根據(jù)時(shí)序在釋放總線4μs后讀取總線數(shù)據(jù),完成第一個(gè)比特位的采樣;
2.3.4 溫度數(shù)據(jù)格式
DS18B20中有兩個(gè)高速暫存器,存放16位二進(jìn)制溫度數(shù)據(jù),高5位是符號(hào)位,其余11位是數(shù)據(jù)位;如果溫度大于0℃,符號(hào)位為0,取得暫存器里面數(shù)值乘以0.0625,即實(shí)際溫度值;如果溫度小于0℃,符號(hào)位為1,取得暫存器里面數(shù)值取反加1,再乘以0.0625即實(shí)際溫度值,如表1所示。
2.3.5 程序流程
FPGA對(duì)DS18B20的操作流程:先對(duì)DS18B20初始化,然后發(fā)操作指令,最后對(duì)高速暫存器操作。單總線模式下DS18B20每一步操作都需遵循嚴(yán)格的時(shí)序和通訊協(xié)議。程序流程如圖3所示。
3 結(jié)語(yǔ)
通過(guò)樣機(jī)驗(yàn)證:基于FPGA的1-wire多點(diǎn)測(cè)溫設(shè)計(jì),實(shí)現(xiàn)8個(gè)溫度點(diǎn)的實(shí)時(shí)測(cè)量,樣機(jī)工作穩(wěn)定可靠,測(cè)量分辨率達(dá)0.062℃,并在所內(nèi)多個(gè)慣導(dǎo)及導(dǎo)航型號(hào)產(chǎn)品中得到驗(yàn)證。
整個(gè)系統(tǒng)設(shè)計(jì)采用3根并聯(lián)在一起,占用資源少,擴(kuò)展維護(hù)方便,支持多達(dá)上百個(gè)多點(diǎn)溫度測(cè)量,具有抗干擾性高、可靠度高、傳輸距離遠(yuǎn)等優(yōu)勢(shì),適用于工業(yè)生產(chǎn)、民用生產(chǎn)、軍工設(shè)備等設(shè)施的多點(diǎn)溫度測(cè)量。
參考文獻(xiàn)
[1] 余瑾,姚燕.基于DS18B20測(cè)溫的單片機(jī)溫度控制系統(tǒng)[J].微計(jì)算機(jī)信息,2009(8):105-106.
[2] 陳勇,許亮,許海闊,等.基于單片機(jī)的溫度控制系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2016,24(2):77-79.
[3] 王劍飛,程耀瑜,王鵬,等.基于FPGA和DSP的多路信號(hào)采集系統(tǒng)的設(shè)計(jì)[J].電視技術(shù),2013,37(23):57-60.