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