沈增貴,鄧紅玉
生物化學分析儀(簡稱“生化儀”)是常見的臨床檢驗設(shè)備之一,廣泛應(yīng)用于肝功能、腎功能、心肌酶譜、糖類、血脂、電解質(zhì)等測試。根據(jù)自動化程度高低,生化儀分為半自動生化儀與全自動生化儀[1]。全自動生化儀具有測量速度快、準確性高、消耗試劑量小等優(yōu)勢,被廣泛應(yīng)用于醫(yī)院、研究機構(gòu)、動植物檢測所等機構(gòu)。
在全自動生化儀研發(fā)實踐中,溫度控制是重要的一環(huán)。溫度控制包括冷卻模塊與加熱模塊。一般而言,生化儀使用的試劑需要保存在4℃左右,而全自動生化儀中使用的試劑都是保存在試劑盤中,因此,常見的做法是設(shè)計一個冷卻模塊(帕爾貼)包裹著試劑盤,并利用儀器的不間斷供電將試劑盤置于某個冷卻的環(huán)境中,達到保存試劑的目的。而在測試過程中,試劑被吸取到反應(yīng)杯中,在常溫下參與反應(yīng)。因為試劑一直處于較低溫度,如果這時直接加入到反應(yīng)杯,很容易在管路或者杯壁起霧,影響測試結(jié)果。因此,需要設(shè)計一個加熱模塊,在抽取試劑時對試劑進行預(yù)加熱。本文論述的就是利用DS18B20作為溫度傳感器、加熱膜作為加熱部件設(shè)計出來的全自動生化儀加熱模塊。
DS18B20是達拉斯公司生產(chǎn)的一款數(shù)字溫度傳感器,支持9~12位不同精度的溫度讀數(shù)。DS18B20的一個特點就是使用單總線通信,也就是只要一根信號線即可實現(xiàn)主機與從機間的信息交互[2]。另外一個特點就是使用“寄生電源”,當連接線處于高電平狀態(tài)時,就可以對DS18B20內(nèi)部的電容充電;當連接處于低電平時,可利用該電容的電能工作。這2種特性可以使DS18B20占用的微控制單元(micro controlunit,MCU)資源少,非常適合復(fù)雜儀器中連續(xù)監(jiān)控溫度值時使用[3-4]。
DS18B20單總線的通信方式意味著主-從雙方對管腳上信號的時序要求更加嚴格??偩€上的時序包括復(fù)位時序、讀時序、寫時序3種[5]。
任何跟DS18B20通信的時序必須以復(fù)位時序開始[6]。復(fù)位時序由主機(MCU)發(fā)起,MCU將連接管腳設(shè)置為輸出管腳,拉低電平至少需要480μs。然后釋放管腳,并設(shè)置類型為輸入管腳。因為管腳是接上拉電阻,所以輸出為高電平。如果從機(DS18B20)正常響應(yīng),拉低電平需要60~240μs。因此,如果在這段時間內(nèi)MCU采樣到低電平,就可以確認DS18B20正常工作,可以繼續(xù)讀時序或者寫時序。整個復(fù)位時序如圖1所示。
圖1 DS18B20復(fù)位時序
寫時序主要是MCU配置DS18B20里面的寄存器,包括寫0與寫1 2種。在復(fù)位時序后,DS18B20釋放管腳,管腳為高電平。進入寫時序前,MCU先拉低總線,DS18B20會在15~60μs之間采樣總線。如果采樣是高電平,則認為是寫1時序;如果采樣是低電平,則認為是寫0時序。因此,如果MCU需要寫0,應(yīng)當保持60μs的低電平;如果需要寫1,應(yīng)在拉低15μs后釋放管腳,使管腳被拉高為高電平。寫時序如圖2所示。
圖2 DS18B20寫時序
在讀取DS18B20里面的溫度值時,需要使用到讀時序。與寫時序類似,讀時序也包括讀0與讀1 2種。發(fā)起讀時序時,MCU拉低管腳至少1μs,然后釋放管腳,并設(shè)置為輸入管腳。如果DS18B20輸出0,則在15μs內(nèi)管腳都被拉低;如果DS18B20需要輸出1,則在15μs內(nèi)管腳被拉高。值得注意的是,輸出值在15μs內(nèi)有效,因此,MCU必須及時地在這段時間內(nèi)采樣管腳。因為讀時序至少要60μs,2次讀之間要1μs的恢復(fù)時間,所以采樣管腳電平后,MCU最多要等待16μs后才能繼續(xù)下一位的讀操作。讀時序如圖3所示。
圖3 DS18B20讀時序
在整機結(jié)構(gòu)中,上層模塊作為一個控制邏輯,主要完成用戶輸入、結(jié)果顯示、算法實現(xiàn)等功能。以80C51作為MCU的主控板,負責外設(shè)的驅(qū)動控制。加熱模塊硬件由主控板、加熱膜以及溫度傳感器組成。控制板使用80C51單片機作為MCU,通過串口接收上層模塊傳下來的溫控命令,并通過DS18B20讀取當前溫度,根據(jù)控制需要打開或者關(guān)閉加熱膜,從而達到控制溫度的效果。溫控命令包括溫度查詢、溫度設(shè)置、加熱膜狀態(tài)查詢3種。整個加熱模塊的結(jié)構(gòu)如圖4所示。
圖4 加熱模塊設(shè)計框圖
在加熱膜控制實現(xiàn)上,80C51通過通用IO口控制加熱開關(guān)的連接與斷開,以實現(xiàn)加熱功能。加熱膜的功率是16W,為了提高驅(qū)動能力,一般設(shè)計獨立的驅(qū)動電路。另外,也會在加熱膜前加過熱保護電路與熔斷絲,確保加熱膜工作在可控范圍。
溫度傳感器同樣由80C51通過通用IO口控制。根據(jù)傳感器的時序要求,用IO口控制高、低電平,實現(xiàn)對傳感器的配置、溫度值的讀取。硬件連接上,直接將控制管腳接入到IO口即可。
在設(shè)計中使用2個溫度傳感器,一個用于工作室溫度探測,另外一個用于環(huán)境溫度檢測。使用2個溫度傳感器除了出于加熱算法的考慮外,還考慮到容錯性設(shè)計。
軟件架構(gòu)如圖5所示。
圖5 軟件架構(gòu)圖
加熱膜控制軟件主要是溫度傳感器讀寫驅(qū)動、加熱膜控制以及邏輯控制,運行在主控板MCU上。上層接收控制命令,完成控制后返回執(zhí)行結(jié)果。在實現(xiàn)上,IO口輸出高、低電平,實現(xiàn)對加熱膜的啟動與斷開;而IO口的高、低電平持續(xù)時間滿足溫度傳感器時序要求后,可完成對溫度的讀取等操作。
MCU上電后,先完成軟硬件初始化,包括片內(nèi)外設(shè)、片外外設(shè)、系統(tǒng)全局參數(shù),然后進入主循環(huán)中。主循環(huán)內(nèi)負責接收并響應(yīng)上層的溫控命令,同時對加熱膜、DS18S20進行控制。
按照DS18B20的數(shù)據(jù)手冊,在讀取溫度值前,先給DS18B20發(fā)送復(fù)位信號,然后向單總線發(fā)送0xCC、0x44 2個命令字,通知DS18B20開始溫度轉(zhuǎn)換。轉(zhuǎn)換完成后,發(fā)送OxCC與OxBE通知DS18B20執(zhí)行讀溫度,并依次讀入9個字節(jié)的溫度數(shù)據(jù),最后發(fā)送復(fù)位信號到DS18B20??刂品独a如下:
3.3.1 協(xié)議定義
溫控加熱模塊作為下位機,通過串口與上位機通信,接收上位機的命令,同時返回執(zhí)行結(jié)果。通信雙方按照預(yù)定協(xié)議去解讀控制字節(jié)流。從上位機發(fā)送到下位機的稱為下行協(xié)議,從下位機發(fā)送到上位機的稱為上行協(xié)議。整個全自動生化儀有13個下位機模塊,所以,為了管理方便,所有上下行協(xié)議都是定長的。為了保證執(zhí)行時序,下位機收到命令后立刻返回響應(yīng)消息。此外,正常情況下,下位機只有在收到下行命令后才能發(fā)送上行響應(yīng),只有在檢測到異常后才能主動發(fā)送異常通知。
加熱模塊的控制命令字包括溫度設(shè)置、溫度查詢、加熱狀態(tài)查詢。下行協(xié)議操作碼與參數(shù)的含義見表1,上行協(xié)議操作碼與參數(shù)含義見表2。
表1 下行協(xié)議溫控操作碼與參數(shù)對照表
表2 上行協(xié)議溫控操作碼與參數(shù)對照表
3.3.2 溫控命令響應(yīng)
當加熱模塊收到“設(shè)置溫度”命令字時,先把目標溫度賦值給全局變量,并讀取DS18B20上的當前溫度值。如果當前溫度低于目標溫度,則軟件上設(shè)置加熱標志位。在軟件的主循環(huán)中,如果檢測到加熱標志位有效,則給加熱膜輸出高電平,從而實現(xiàn)加熱功能。如果當前溫度比目標溫度高,則清除加熱標志位,關(guān)閉加熱膜,通過自然散熱來降溫。
當加熱模塊收到“溫度查詢”命令字時,讀取DS18B20上的當前溫度值,然后按照上行協(xié)議的格式發(fā)送給上層軟件;當加熱模塊收到“加熱狀態(tài)查詢”命令字時,將加熱標志位按照上行協(xié)議格式發(fā)送給上層軟件。
3.3.3 溫度控制算法優(yōu)化
在實驗中發(fā)現(xiàn),如果簡單地通過目標溫度與當前溫度的比較來啟動、關(guān)閉加熱膜,會有溫度過沖現(xiàn)象。原因是加熱膜包裹的工作室空間比較小,散熱效果不好,如果工作室溫度高于目標溫度時才關(guān)閉加熱膜,此時加熱膜還是輸出熱量,只是比工作狀態(tài)輸出的熱量小,而散去的熱量抵消不掉加熱膜的余熱,溫度持續(xù)升高,最高能過沖3~4℃[7]。
這種溫度過沖的現(xiàn)象可以通過優(yōu)化算法來改善。在常溫環(huán)境下,如果目標溫度高于當前溫度4℃以上,則同時打開2個加熱膜,加快升溫過程;如果二者相差小于4℃,則只用其中一個加熱膜工作;如果二者相差小于0.5℃,則不對加熱膜做任何操作。這種優(yōu)化臨界值是通過實驗得出的經(jīng)驗值,實踐時應(yīng)該根據(jù)加熱膜的功率、加熱膜體積大小、工作室通風情況、模塊的工作環(huán)境溫度來修正。
因為加熱膜是直接附著在液路管壁上,如果發(fā)生故障導(dǎo)致異常加熱,可能會影響測試結(jié)果,或者導(dǎo)致管路高溫變形、破裂,甚至燒毀其他部件等嚴重后果,所以,容錯性考慮是必不可少的。此外,加熱膜不工作、溫度傳感器讀數(shù)異常都是容錯性考慮的一部分[8]。
如果控制軟件跑飛、誤入死循環(huán),或者其他硬件異常導(dǎo)致MCU一直給加熱膜輸出高電平,則引起持續(xù)加熱異常。由這種異常導(dǎo)致的后果比較嚴重,一般做法是在加熱膜上增加熔斷器,用硬件的辦法來處理。在軟件上,當啟動加熱時,會同時啟動一個定時器,在固定周期采集工作室的溫度讀數(shù),如果溫度讀數(shù)超過合理的范圍,則停止加熱。另外一種方法是熔斷器前接上拉電阻,作為一個IO中斷源,或者直接接到復(fù)位信號上。
如果某種原因?qū)е录訜峋€路短路或者加熱膜不工作,則整個加熱模塊失去其設(shè)計功能。檢測加熱膜是否工作有2種方法:(1)加熱后啟動連續(xù)讀取工作室溫度,如果溫度變化小于某個閾值,則認為加熱失效;(2)加熱后比較工作室溫度與環(huán)境溫度。2種方法通常聯(lián)合使用。在常溫環(huán)境下,一般使用方法(1)來判斷;在高溫環(huán)境下使用方法(1),而在低溫環(huán)境下則使用方法(2)。
檢測到加熱膜不工作時,通過MCU向上層發(fā)送異常碼,最終顯示到用戶界面上。
由于DS18B20使用的是單總線通信,讀取的溫度值是靠總線上的高低電平確定,如果某一位檢測錯誤,讀出來的溫度值將有很大的誤差,因此,對總線時序要求非常嚴格。如果MCU工作主頻不高,或者對循環(huán)讀取傳感器的代碼時間控制不準,存在積累誤差,就很容易導(dǎo)致讀數(shù)異常。
在實際測試中我們發(fā)現(xiàn),如果每1 s讀取1次溫度,連續(xù)工作8 h,發(fā)現(xiàn)大約每50次就有1個異常值。從加熱算法得知,如果測得的溫度值比目標溫度值低,就打開加熱膜加熱。假設(shè)本次測得的溫度值是個異常值,并且比目標溫度值低,這時MCU輸出一個高電平到加熱膜;當下一次測得的值是個正常值,比目標溫度值高,這時候MCU就輸出一個低電平到加熱膜。這樣,就會因為讀取到異常值,導(dǎo)致加熱膜收到一個高頻脈沖。時間長了,這種頻繁的開關(guān)動作就可能損壞加熱膜。
解決這種異常,方法之一是優(yōu)化單總線通信時序,但這種方法在實踐中很難完全杜絕讀數(shù)異常。另外一種方法是使用讀數(shù)平滑方法,算法如圖6所示。
一般認為,在間隔不長的時間段內(nèi)連續(xù)讀取溫度,溫度變化不會很大。當需要讀取當前溫度時,先預(yù)測一個溫度值,如果讀出來的值跟預(yù)測的溫度相差超過某個閾值,即可判斷該值是異常值,直接忽略讀出來的溫度值,而用預(yù)測值替代本次溫度值。這個預(yù)測值實際上就是前4次溫度值的平均值。
圖6 溫度平滑算法示意圖
通過實驗發(fā)現(xiàn),如果每1 s讀溫度1次,把平滑窗口設(shè)置為前4次,把閾值設(shè)置為3℃,能有效去掉異常值。當讀溫度頻率更高時,可以通過增加平滑窗口有效濾除異常值。
為了驗證加熱效果,將模塊按照正常的工作狀態(tài)安裝在全自動生化儀上,在10℃溫差(環(huán)境溫度為27.2℃,目標溫度為37℃)、一般通風的情況下,啟動加熱模塊,并且每1 s讀取1次溫度值,測試結(jié)果如圖7所示。
圖7 加熱效果圖
由圖7可知,約在20 s的時間內(nèi),工作室的溫度即可達到預(yù)設(shè)的目標值,并且在目標溫度范圍小幅波動。根據(jù)生化試劑的一般要求,這種波動幅度是完全可以接受的,證明該模塊是可行的[9-10]。
本文主要闡述了全自動生化儀加熱模塊的設(shè)計,雖然硬件設(shè)計上比較簡單,但在加熱方法、容錯性設(shè)計等方面,都是針對實際產(chǎn)品經(jīng)常出現(xiàn)的故障,并做大量實驗取得的經(jīng)驗參數(shù)而得出的處理方法,對其他研發(fā)人員有一定的提示意義。本設(shè)計方案作為一個整體模塊,在血細胞分析儀、特定反應(yīng)蛋白分析儀、酶標儀等體外檢驗臨床設(shè)備上使用,也取得了很好的效果,事實證明其可行、有效。
[1] 李魯寧,唐正香.自動生物化學分析儀的原理、應(yīng)用和發(fā)展[J].醫(yī)療裝備,2007,20(4):16-17.
[2] 李鋼,趙彥峰.1-Wire總線數(shù)字溫度傳感器DS18B20原理及應(yīng)用[J].現(xiàn)代電子技術(shù),2005(21):77-79.
[3] 周月霞,孫傳友.DS18B20硬件連接及軟件編程[J].傳感器世界,2001(12):25-29.
[4] 王江紅,朱麗君,孫學用.基于DS18B20恒溫監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].湖北農(nóng)業(yè)科學,2013,52(8):1 946-1 949.
[5] 李萍.基于DS18B20的多路溫度監(jiān)測系統(tǒng)設(shè)計與仿真[J].現(xiàn)代電子技術(shù),2013,36(10):122-127.
[6] 郁翔,趙學增.數(shù)字溫度傳感器DS18B20在溫度場測試中的應(yīng)用[J].導(dǎo)彈與航天運載技術(shù),2004,272(5):53-56.
[7] 李蘭英,楊晨.嵌入式溫度采集系統(tǒng)設(shè)計與實現(xiàn)[J].電腦學習,2007(1):6-8.
[8] 徐振,時維鐸,王健,等.糧倉遠程多通道測溫系統(tǒng)的設(shè)計[J].湖北農(nóng)業(yè)科學,2013,52(7):1 666-1 682.
[9] 周興輝.雅培C8000自動生化分析儀在臨床標本分析中的應(yīng)用評價[J].實用預(yù)防醫(yī)學,2008(3):267-269.
[10] 汪宏良,陳麗峰,胡芳.生物化學分析儀檢測結(jié)果的臨床評價[J].檢驗醫(yī)學與臨床,2007(6):558-559.