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