馬殷元 呂鳳玉 趙 睿
(蘭州交通大學機電技術研究所,甘肅 蘭州 730070)
為掌握某生化反應的熱場變化過程,需要長時間、高速、同步地測量反應器皿底部多點的溫度,目前尚無合適的溫度測量儀器儀表能夠滿足以上需求。熱電偶、熱電阻測量方式接線多、不易擴展,而先進的熱成像等方式則成本較高。基于數(shù)字溫度傳感器DS18B20和AT89S52單片機設計了多點測溫系統(tǒng)。該系統(tǒng)中一個點的溫度獲取時間在800 ms左右,單點測溫誤差在±0.5 K以內(nèi)[1],但系統(tǒng)測量精度和速度達不到要求。當不采用DS18B20慣用的一線制總線結構,而是利用51單片機的并行口同步快速讀取8支DS18B20的溫度時,可實現(xiàn)在多點溫度測量系統(tǒng)中對多個傳感器的快速精確識別和處理。系統(tǒng)測量速度較好,但可擴展性和精度方面還需提高[2]。
在溫度場的測量中,可采用標準熱電偶配以現(xiàn)成的多通道數(shù)據(jù)采集卡構成多點測量系統(tǒng),但系統(tǒng)在測點相當多的情況下成本較高[3]。
生化反應的溫度在0~100℃范圍內(nèi)變化。對測量系統(tǒng)的要求是誤差小于0.5 K,速度為1次/s,且要求多點同步測量,并保存連續(xù)長時間測量數(shù)據(jù)。生化反應器皿底部為直徑9 cm的圓形,要求每平方厘米布置一個測點。基于單片機開發(fā)溫度采樣模塊,通過通信接口和監(jiān)控計算機構成測量系統(tǒng)[4],可使系統(tǒng)具有較好的性價比。本系統(tǒng)是一個由溫度采集設備和監(jiān)控計算機構成的分布式系統(tǒng)。下面將從溫度采集設備、監(jiān)控計算機軟件和通信3個方面詳細介紹系統(tǒng)的具體設計過程。
選擇DS18B20作為前端傳感器,可滿足測量精度基本要求,使系統(tǒng)具有線路簡單和性價比高的優(yōu)點[1-2,5-8]。本系統(tǒng)選用 SOIC 封裝形式 DS18B20 芯片,在印刷電路板上按照8排8列分布,構成采集設備的64個測點。
為實現(xiàn)對多個DS18B20的并行控制,要求微處理器有較多的輸入輸出接口,本系統(tǒng)選用有86個口線的ATmega1280微處理器作為數(shù)據(jù)采集微處理器。該微處理器有10個8位雙向輸入輸出接口。
DS18B20是具有一線(1-Wire)制總線接口的數(shù)字溫度計,它可以在750 ms內(nèi)把溫度轉換為12位數(shù)字量。多個DS18B20可通過一線制總線組建簡單且經(jīng)濟的傳感器網(wǎng)絡。在典型應用中,多個芯片連接成總線形式與微處理器進行通信。DS18B20的優(yōu)點是節(jié)約了微處理器的接口引腳資源,線路簡單;缺點是測量多點時速度慢,測量的同步性無法保障。究其原因,主要有以下幾點:①在一線制總線接口方式下,微處理器通過查詢DS18B20的64位ROM序列號,才能得到對應溫度計的溫度值,這會消耗一定時間;②微處理器對總線上的多個DS18B20的控制和讀寫通信必須依次串行進行操作,無法保障各點測量的同步性;③多點測量時間是單點測量時間的累加,如在總線上存在8個DS18B20器件,完成所有器件的查詢需要8×750 ms,一旦時間過長,就無法滿足實時性要求。
為此,本系統(tǒng)采集設備采用微處理器與DS18B20并行接口的測量方式。DS18B20的數(shù)據(jù)手冊要求微處理器對一線制總線的操作須遵循嚴格的時序條件,每個DS18B20的控制和讀寫操作的時序誤差要小于1 μs。這也說明,不同DS18B20器件在接口交互時序細節(jié)上的一致性非常好,所以,可使用微處理器的并行端口對多個DS18B20進行讀寫操作,同時獲得多個DS18B20的數(shù)據(jù)。
本設計采用在微處理器并行端口各個引腳上分別掛接一個DS18B20的硬件設計,在該接線方式下,在每個一線制總線上僅有一個DS18B20器件,所以可使用skip ROM命令來跳過64位ROM序列號的匹配操作,這樣既縮短了數(shù)據(jù)采集的操作時間,又節(jié)約了存儲ROM序列號的空間。需要注意的是,在并行操作方式下,數(shù)據(jù)采集軟件中使用字節(jié)指令操作并行端口,采集獲得的數(shù)據(jù)不是直接的溫度數(shù)據(jù),而是經(jīng)過二次處理得到的數(shù)據(jù)。上述硬件與軟件的改進,使得多點并行操作的測量時間與單點測量時間幾乎相同,獲取64個傳感器的數(shù)據(jù)的總時間小于751 ms,測量速度能夠滿足需求。對多組并行端口進行統(tǒng)一操作,也滿足了對溫度場的同步測量要求。微處理器與多DS18B20的接口電路如圖1所示。
圖1 微處理器與多DS18B20接口電路圖Fig.1 Interface circuit between MCU and DS18B20
為保障溫度測量的同步性,使用監(jiān)控計算機通過通信命令統(tǒng)一調度多個溫度采集設備。溫度采集設備根據(jù)監(jiān)控計算機發(fā)來的指令開始或停止測溫。微處理器采集一次溫度需要經(jīng)過從“復位DS18B20”模塊到“二次數(shù)據(jù)處理”共11個步驟。由于微處理器對DS18B20的讀寫操作需遵守嚴格的時序要求,因此微處理器對監(jiān)控計算機的通信指令處理采用查詢方式,而采用中斷處理方式會干擾微處理器對DS18B20的操作時序。對微處理器進行DS18B20的操作時序分析可知,從發(fā)指令開始轉換到DS18B20完成溫度轉換需要約500~750 ms。微處理器在這段時間處于等待溫度轉換狀態(tài),軟件上可以利用這段時間實現(xiàn)多任務并行操作。據(jù)此,系統(tǒng)溫度采集軟件利用空隙時間進行通信操作,以提高系統(tǒng)實時性。微處理器并行采集多個DS18B20的測溫數(shù)據(jù),采集溫度流程圖如圖2所示。
圖2 采集溫度流程圖Fig.2 Flowchart of temperature acquisition
在并行操作方式下,微處理器操作8位寬度的輸入輸出口與8個DS18B20同時通信,可獲得8個16 B的數(shù)據(jù),并存放在數(shù)組DataA[0~15]中。實際的溫度數(shù)據(jù)通過二次數(shù)據(jù)處理得到,并行采集數(shù)據(jù)存儲如圖3所示,DataF[0~7]為實際數(shù)據(jù)。
圖3 并行采集數(shù)據(jù)存儲圖Fig.3 Storage of the data collected in parallel
ATmega1280與DS18B20構成了一個溫度測量系統(tǒng)的前端儀表,為實現(xiàn)前端儀表的擴展性和標準化,需要在前端儀表中使用標準總線通信協(xié)議。Modbus是一種較常用的儀表總線協(xié)議。由于ATmega1280與DS18B20的通信操作必須遵循嚴格的時序,一些操作的時延誤差須小于1 μs,這就要求 ATmega1280在與DS18B20通信時必須關閉中斷。采集DS18B20數(shù)據(jù)的多個步驟的操作時間都大于1 ms。在最常用的9 600 bit/s速率下,超過1 ms的關中斷將會造成通信過程中字符的丟失。因此,系統(tǒng)設計增加ATmega64作為通信微處理器。ATmega64有2個UART,其中一個與控制多個DS18B20的ATmega1280通信,另外一個與監(jiān)控計算機通信。系統(tǒng)在ATmega64上實現(xiàn)了Modbus從機協(xié)議。
監(jiān)控計算機發(fā)出地址為0的廣播指令,控制多個溫度采集設備同步采集溫度,然后,輪詢各個采集設備得到各個設備測點的溫度。監(jiān)控計算機發(fā)出的廣播指令中數(shù)據(jù)域為0表示停止采集,為1表示開始采集,為3表示復位診斷。
同步測量控制功能使用Modbus協(xié)議中的寫單寄存器指令實現(xiàn)。通信微處理器把Modbus幀分解成一個字節(jié)的信息發(fā)送給數(shù)據(jù)采集微處理器,這樣,數(shù)據(jù)采集微處理器只需處理一個字節(jié)的通信消息,避免了關中斷操作可能造成的字符丟失通信錯誤。數(shù)據(jù)采集微處理器在串行通信緩沖區(qū)值為1的情況下定時采集測量數(shù)據(jù),采集完成后直接發(fā)送給通信微處理器。通信微處理器再把測量數(shù)據(jù)打包成Modbus格式,收到輪詢指令時把測量數(shù)據(jù)發(fā)送給監(jiān)控計算機。
由于微處理器的存儲能力有限,不能保存長時間測量的數(shù)據(jù),為此,系統(tǒng)設計監(jiān)控計算機用以保存長時間測量的數(shù)據(jù)。熱場溫度測量系統(tǒng)中,監(jiān)控軟件功能模塊如圖4所示。
圖4 監(jiān)控軟件功能模塊圖Fig.4 Functional modules of the supervisory control software
在系統(tǒng)調試初期,使用均勻溫度熱場對系統(tǒng)進行試驗,發(fā)現(xiàn)測量的熱場中的各點數(shù)據(jù)一致性較差,不能滿足反映熱場溫度分布情況的需求,系統(tǒng)中各個測點之間的測量誤差過大。在使用熱電阻和模數(shù)轉換器的測量裝置中,可使用模數(shù)轉換器的自動標定功能,減小測量誤差[6],上述功能在測量裝置中實現(xiàn)。本系統(tǒng)也可采用自動標定方法以減小誤差,自動標定功能在監(jiān)控計算機中通過軟件實現(xiàn)。
DS18B20數(shù)據(jù)手冊標明單個器件的測量誤差為0.5 K,測量數(shù)據(jù)的分辨率為12位,最低位對應的分辨率為0.062 5 K。試驗表明,單個DS18B20測量溫度數(shù)據(jù)有較好的重復性和線性度。因此,可以通過對DS18B20測量數(shù)據(jù)的二次處理減小誤差。
二次處理過程中,首先通過試驗獲得每個DS18B20從0~90℃之間每隔10 K的10個標準溫度點,其中正向測量和反向測量數(shù)據(jù)各5個。然后,計算出每10個標定點數(shù)據(jù)的平均值,將這些平均值作為每個DS18B20的誤差修正數(shù)據(jù)表保存在監(jiān)控計算機中。連續(xù)自動測量中,監(jiān)控機按照線性插值法對DS18B20測量數(shù)據(jù)進行修正。試驗表明,修正后每個DS18B20的溫度測量誤差小于0.2 K,滿足了反映熱場溫度分布和變化的測量需求。
此外,監(jiān)控計算機監(jiān)控軟件中的誤差修正表生成模塊可自動完成誤差修正數(shù)據(jù)的計算。
本系統(tǒng)實現(xiàn)了對熱場溫度多點高度同步測量,測量精度滿足要求。由于采集設備中通信微處理器和Modbus協(xié)議的設計實現(xiàn),使系統(tǒng)可擴展多個數(shù)據(jù)采集設備,構成測量點數(shù)更多的分布式測量系統(tǒng);也可與控制設備聯(lián)網(wǎng),構成分布式測控系統(tǒng)。系統(tǒng)通過溫度采集設備的雙微處理器等設計解決了大量測點情況下溫度采集的實時性和同步性問題;同時,設計了監(jiān)控計算機軟件,通過對數(shù)據(jù)的二次處理減小了測量誤差,實現(xiàn)了對熱場的長時間自動測量和記錄,提高了生化試驗測量效率。
[1]丁幼春,熊麗榮,黃劍.基于AT89S52和DS18B20的多點溫度檢測報警系統(tǒng)[J].農(nóng)機化研究,2007(5):121 -123.
[2]潘勇,孟慶斌.基于DS18B20的多點溫度測量系統(tǒng)設計[J].電子測量技術,2008,31(9):91 -93.
[3]孟浩.封閉空間消防滅火實驗中的溫度場測量系統(tǒng)[J].測控技術,2005,24(10):76 -78.
[4]張偉,齊鉑金,張瑾.導管感應釬焊溫度場分布多點同步測溫系統(tǒng)[J].儀表技術與傳感器,2007(3):29-31.
[5]包敬海,陸安山,龔文鋒.快速多點體溫檢測系統(tǒng)的研究[J].自動化儀表,2010,31(6):67 -72.
[6]熊瑞昌,周澤魁,王強.具有自動標定功能的發(fā)酵罐多點溫度采集系統(tǒng)[J].自動化儀表,2005,26(6):38 -43.
[7]董煒,王俊杰,楊士元.單總線測溫系統(tǒng)[J].自動化儀表,2005,26(6):27 -30.
[8]侯波.礦用電纜連接處溫度智能監(jiān)測儀的研制[J].自動化儀表,2010,31(2):69 -71.