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