馬殷元 呂鳳玉 趙 睿
(蘭州交通大學機電技術研究所,甘肅 蘭州 730070)
為掌握某生化反應的熱場變化過程,需要長時間、高速、同步地測量反應器皿底部多點的溫度,目前尚無合適的溫度測量儀器儀表能夠滿足以上需求。熱電偶、熱電阻測量方式接線多、不易擴展,而先進的熱成像等方式則成本較高。基于數字溫度傳感器DS18B20和AT89S52單片機設計了多點測溫系統。該系統中一個點的溫度獲取時間在800 ms左右,單點測溫誤差在±0.5 K以內[1],但系統測量精度和速度達不到要求。當不采用DS18B20慣用的一線制總線結構,而是利用51單片機的并行口同步快速讀取8支DS18B20的溫度時,可實現在多點溫度測量系統中對多個傳感器的快速精確識別和處理。系統測量速度較好,但可擴展性和精度方面還需提高[2]。
在溫度場的測量中,可采用標準熱電偶配以現成的多通道數據采集卡構成多點測量系統,但系統在測點相當多的情況下成本較高[3]。
生化反應的溫度在0~100℃范圍內變化。對測量系統的要求是誤差小于0.5 K,速度為1次/s,且要求多點同步測量,并保存連續長時間測量數據。生化反應器皿底部為直徑9 cm的圓形,要求每平方厘米布置一個測點。基于單片機開發溫度采樣模塊,通過通信接口和監控計算機構成測量系統[4],可使系統具有較好的性價比。本系統是一個由溫度采集設備和監控計算機構成的分布式系統。下面將從溫度采集設備、監控計算機軟件和通信3個方面詳細介紹系統的具體設計過程。
選擇DS18B20作為前端傳感器,可滿足測量精度基本要求,使系統具有線路簡單和性價比高的優點[1-2,5-8]。本系統選用 SOIC 封裝形式 DS18B20 芯片,在印刷電路板上按照8排8列分布,構成采集設備的64個測點。
為實現對多個DS18B20的并行控制,要求微處理器有較多的輸入輸出接口,本系統選用有86個口線的ATmega1280微處理器作為數據采集微處理器。該微處理器有10個8位雙向輸入輸出接口。
DS18B20是具有一線(1-Wire)制總線接口的數字溫度計,它可以在750 ms內把溫度轉換為12位數字量。多個DS18B20可通過一線制總線組建簡單且經濟的傳感器網絡。在典型應用中,多個芯片連接成總線形式與微處理器進行通信。DS18B20的優點是節約了微處理器的接口引腳資源,線路簡單;缺點是測量多點時速度慢,測量的同步性無法保障。究其原因,主要有以下幾點:①在一線制總線接口方式下,微處理器通過查詢DS18B20的64位ROM序列號,才能得到對應溫度計的溫度值,這會消耗一定時間;②微處理器對總線上的多個DS18B20的控制和讀寫通信必須依次串行進行操作,無法保障各點測量的同步性;③多點測量時間是單點測量時間的累加,如在總線上存在8個DS18B20器件,完成所有器件的查詢需要8×750 ms,一旦時間過長,就無法滿足實時性要求。
為此,本系統采集設備采用微處理器與DS18B20并行接口的測量方式。DS18B20的數據手冊要求微處理器對一線制總線的操作須遵循嚴格的時序條件,每個DS18B20的控制和讀寫操作的時序誤差要小于1 μs。這也說明,不同DS18B20器件在接口交互時序細節上的一致性非常好,所以,可使用微處理器的并行端口對多個DS18B20進行讀寫操作,同時獲得多個DS18B20的數據。
本設計采用在微處理器并行端口各個引腳上分別掛接一個DS18B20的硬件設計,在該接線方式下,在每個一線制總線上僅有一個DS18B20器件,所以可使用skip ROM命令來跳過64位ROM序列號的匹配操作,這樣既縮短了數據采集的操作時間,又節約了存儲ROM序列號的空間。需要注意的是,在并行操作方式下,數據采集軟件中使用字節指令操作并行端口,采集獲得的數據不是直接的溫度數據,而是經過二次處理得到的數據。上述硬件與軟件的改進,使得多點并行操作的測量時間與單點測量時間幾乎相同,獲取64個傳感器的數據的總時間小于751 ms,測量速度能夠滿足需求。對多組并行端口進行統一操作,也滿足了對溫度場的同步測量要求。微處理器與多DS18B20的接口電路如圖1所示。

圖1 微處理器與多DS18B20接口電路圖Fig.1 Interface circuit between MCU and DS18B20
為保障溫度測量的同步性,使用監控計算機通過通信命令統一調度多個溫度采集設備。溫度采集設備根據監控計算機發來的指令開始或停止測溫。微處理器采集一次溫度需要經過從“復位DS18B20”模塊到“二次數據處理”共11個步驟。由于微處理器對DS18B20的讀寫操作需遵守嚴格的時序要求,因此微處理器對監控計算機的通信指令處理采用查詢方式,而采用中斷處理方式會干擾微處理器對DS18B20的操作時序。對微處理器進行DS18B20的操作時序分析可知,從發指令開始轉換到DS18B20完成溫度轉換需要約500~750 ms。微處理器在這段時間處于等待溫度轉換狀態,軟件上可以利用這段時間實現多任務并行操作。據此,系統溫度采集軟件利用空隙時間進行通信操作,以提高系統實時性。微處理器并行采集多個DS18B20的測溫數據,采集溫度流程圖如圖2所示。

圖2 采集溫度流程圖Fig.2 Flowchart of temperature acquisition
在并行操作方式下,微處理器操作8位寬度的輸入輸出口與8個DS18B20同時通信,可獲得8個16 B的數據,并存放在數組DataA[0~15]中。實際的溫度數據通過二次數據處理得到,并行采集數據存儲如圖3所示,DataF[0~7]為實際數據。

圖3 并行采集數據存儲圖Fig.3 Storage of the data collected in parallel
ATmega1280與DS18B20構成了一個溫度測量系統的前端儀表,為實現前端儀表的擴展性和標準化,需要在前端儀表中使用標準總線通信協議。Modbus是一種較常用的儀表總線協議。由于ATmega1280與DS18B20的通信操作必須遵循嚴格的時序,一些操作的時延誤差須小于1 μs,這就要求 ATmega1280在與DS18B20通信時必須關閉中斷。采集DS18B20數據的多個步驟的操作時間都大于1 ms。在最常用的9 600 bit/s速率下,超過1 ms的關中斷將會造成通信過程中字符的丟失。因此,系統設計增加ATmega64作為通信微處理器。ATmega64有2個UART,其中一個與控制多個DS18B20的ATmega1280通信,另外一個與監控計算機通信。系統在ATmega64上實現了Modbus從機協議。
監控計算機發出地址為0的廣播指令,控制多個溫度采集設備同步采集溫度,然后,輪詢各個采集設備得到各個設備測點的溫度。監控計算機發出的廣播指令中數據域為0表示停止采集,為1表示開始采集,為3表示復位診斷。
同步測量控制功能使用Modbus協議中的寫單寄存器指令實現。通信微處理器把Modbus幀分解成一個字節的信息發送給數據采集微處理器,這樣,數據采集微處理器只需處理一個字節的通信消息,避免了關中斷操作可能造成的字符丟失通信錯誤。數據采集微處理器在串行通信緩沖區值為1的情況下定時采集測量數據,采集完成后直接發送給通信微處理器。通信微處理器再把測量數據打包成Modbus格式,收到輪詢指令時把測量數據發送給監控計算機。
由于微處理器的存儲能力有限,不能保存長時間測量的數據,為此,系統設計監控計算機用以保存長時間測量的數據。熱場溫度測量系統中,監控軟件功能模塊如圖4所示。

圖4 監控軟件功能模塊圖Fig.4 Functional modules of the supervisory control software
在系統調試初期,使用均勻溫度熱場對系統進行試驗,發現測量的熱場中的各點數據一致性較差,不能滿足反映熱場溫度分布情況的需求,系統中各個測點之間的測量誤差過大。在使用熱電阻和模數轉換器的測量裝置中,可使用模數轉換器的自動標定功能,減小測量誤差[6],上述功能在測量裝置中實現。本系統也可采用自動標定方法以減小誤差,自動標定功能在監控計算機中通過軟件實現。
DS18B20數據手冊標明單個器件的測量誤差為0.5 K,測量數據的分辨率為12位,最低位對應的分辨率為0.062 5 K。試驗表明,單個DS18B20測量溫度數據有較好的重復性和線性度。因此,可以通過對DS18B20測量數據的二次處理減小誤差。
二次處理過程中,首先通過試驗獲得每個DS18B20從0~90℃之間每隔10 K的10個標準溫度點,其中正向測量和反向測量數據各5個。然后,計算出每10個標定點數據的平均值,將這些平均值作為每個DS18B20的誤差修正數據表保存在監控計算機中。連續自動測量中,監控機按照線性插值法對DS18B20測量數據進行修正。試驗表明,修正后每個DS18B20的溫度測量誤差小于0.2 K,滿足了反映熱場溫度分布和變化的測量需求。
此外,監控計算機監控軟件中的誤差修正表生成模塊可自動完成誤差修正數據的計算。
本系統實現了對熱場溫度多點高度同步測量,測量精度滿足要求。由于采集設備中通信微處理器和Modbus協議的設計實現,使系統可擴展多個數據采集設備,構成測量點數更多的分布式測量系統;也可與控制設備聯網,構成分布式測控系統。系統通過溫度采集設備的雙微處理器等設計解決了大量測點情況下溫度采集的實時性和同步性問題;同時,設計了監控計算機軟件,通過對數據的二次處理減小了測量誤差,實現了對熱場的長時間自動測量和記錄,提高了生化試驗測量效率。
[1]丁幼春,熊麗榮,黃劍.基于AT89S52和DS18B20的多點溫度檢測報警系統[J].農機化研究,2007(5):121 -123.
[2]潘勇,孟慶斌.基于DS18B20的多點溫度測量系統設計[J].電子測量技術,2008,31(9):91 -93.
[3]孟浩.封閉空間消防滅火實驗中的溫度場測量系統[J].測控技術,2005,24(10):76 -78.
[4]張偉,齊鉑金,張瑾.導管感應釬焊溫度場分布多點同步測溫系統[J].儀表技術與傳感器,2007(3):29-31.
[5]包敬海,陸安山,龔文鋒.快速多點體溫檢測系統的研究[J].自動化儀表,2010,31(6):67 -72.
[6]熊瑞昌,周澤魁,王強.具有自動標定功能的發酵罐多點溫度采集系統[J].自動化儀表,2005,26(6):38 -43.
[7]董煒,王俊杰,楊士元.單總線測溫系統[J].自動化儀表,2005,26(6):27 -30.
[8]侯波.礦用電纜連接處溫度智能監測儀的研制[J].自動化儀表,2010,31(2):69 -71.