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