劉 云,柳 浩
(廣州應(yīng)用科技學(xué)院, 廣州 511300)
體溫、心率是人體健康的兩項重要指標(biāo),隨著我國人口老齡化程度增加,醫(yī)療電子市場發(fā)展空間更為廣闊,數(shù)字化、便攜性、低成本是電子產(chǎn)品追求的目標(biāo),又加之現(xiàn)今新冠肺炎病毒在全球快速肆虐蔓延,非接觸式體溫心率測量儀供不應(yīng)求,如何快速有效地測量人體體溫和心跳脈搏數(shù)對臨床新冠肺炎的診斷具有重要意義。傳統(tǒng)的檢測儀只有個別功能,如體溫測量儀、心率檢測儀只能單獨測量一個檢測量,功能單一。王彰云[1]設(shè)計了一款基于STM32的人體紅外測溫系統(tǒng)設(shè)計與實現(xiàn),只能測量體溫;徐涵[2]設(shè)計了光電脈搏波的心率檢測系統(tǒng),只能測量心率這一個檢測量。疫情時期,大家需要更加關(guān)注體溫和心率這兩項人體健康指標(biāo),并需隨時測量體溫、心率。考慮到國外醫(yī)療電子產(chǎn)品價格昂貴,國內(nèi)的便攜式醫(yī)療電子前景更加廣闊,因此,低價格的電子醫(yī)療產(chǎn)品受到了國內(nèi)消費者的青睞。
本文采用低功耗的32位單片機(jī)STM32F103C8T6作為系統(tǒng)的主控制器,控制器的主頻率為72 MHz,與之同等價位的16位AVR 系列單片機(jī)相比,主頻速度和程序存儲空間大很多,而與ARM9、ARM11 為主控制器的芯片相比,STM32 價格更為低廉。因此本文將以STM32F103C8T6芯片為主控制器,利用STM32 價格低廉、性價比高、外設(shè)資源豐富、處理器響應(yīng)速度快、固件庫函數(shù)進(jìn)行開發(fā)能縮短開發(fā)周期等優(yōu)點[3],同時配合各種傳感器實現(xiàn)心率體溫兩項參數(shù)的測量并經(jīng)LCD1602 液晶屏進(jìn)行顯示。該測試系統(tǒng)操作簡便,成本低廉,適用于疫情下快速有效地測量人體體溫和心率,通過該測試系統(tǒng)可以讓大家全面地了解自己當(dāng)前的身體狀況,從而也能為新冠肺炎診斷提供參考價值。
本文設(shè)計的系統(tǒng)整體框架如圖1所示,系統(tǒng)由STM32 控制器模塊、脈搏心率和人體體溫傳感器采集模塊、LCD 顯示模塊、按鍵控制模塊及報警模塊組成。其中控制器模塊以STM32F103RCT6 單片機(jī)為核心,經(jīng)Pulsesensor 脈搏心率傳感器采集脈搏信號,采集的信號通過信號處理系統(tǒng)進(jìn)行濾波、放大、整形得到符合要求的脈搏電信號,傳給單片機(jī)進(jìn)行處理,通過DS18B20 溫度傳感器檢測待測人的體溫,最后將采集的脈搏數(shù)和溫度值經(jīng)LCD1602 液晶顯示模塊顯示每分鐘的脈搏次數(shù)和體溫??筛鶕?jù)按鍵模塊設(shè)置溫度和心率脈博的上限值和下限值,超過預(yù)設(shè)值,報警模塊會啟動蜂鳴器予以報警。
圖1 系統(tǒng)總體框圖
基于STM32 擁有豐富的片上外設(shè)資源, 本文選用STM32F103C8T6 作為心率體溫檢測系統(tǒng)的微處理器,該處理器采用基于ARM Cortex-M3 內(nèi)核架構(gòu),指令精簡,性價比高, 處 理 器 響 應(yīng) 速 度 快, 有 待 機(jī) 模 式, 功 耗 低[4]。 以STM32F103 作為主控制,脈搏和體溫信號通過放大或濾波電路直接輸入STM32F103 的12 位AD 轉(zhuǎn)換器接口,并利用芯片內(nèi)部AD 轉(zhuǎn)換器進(jìn)行模數(shù)轉(zhuǎn)換,免去了需要51 單片機(jī)需要加外加ADC進(jìn)行轉(zhuǎn)換,非常方便。
現(xiàn)階段比較常見的脈搏心率采集方式有光電式脈搏傳感器、壓電晶體壓力脈搏傳感器、應(yīng)變式壓力脈搏傳感器等[5-6]。考慮到心率測量的便捷性,本設(shè)計采用了Pulsesensor 光電式脈搏心率傳感器。脈搏心率傳感器是一款用于脈搏心率測量的光電反射式模擬傳感器,實質(zhì)上是一款集成了放大電路和噪聲消除電路的光學(xué)心率傳感器,是用來測試心跳速率和脈搏波形的傳感器。在實際測量時,只需要待測者的手指輕輕地按在光電傳感器上面,通過紅外發(fā)光二極管產(chǎn)生的紅外線照射到人體的手指部位,并經(jīng)手指組織的反射和衰減,由裝在該部位旁邊的光敏三管來接收其透射光并轉(zhuǎn)換成電信號,當(dāng)人體脈搏跳動的時候,由于手指動脈血在血液循環(huán)過程中呈周期性的脈動變化,其對光的反射和衰減也呈周期性脈動變化,導(dǎo)致紅外接收三極管接收的信號強弱不一樣,故只要把此電信號進(jìn)行放大,傳輸給STM32單片機(jī)的IO 口,轉(zhuǎn)換成脈沖并進(jìn)行整形、對其計數(shù),最終通過公式轉(zhuǎn)換成1 min脈搏的跳動次數(shù)顯示在LCD1602上,即可實時測出脈搏的次數(shù)。Pulsesensor 脈搏心率傳感器接口電路圖如圖2 所示,其中,1腳外接電壓VCC為5 V,2腳 接 入STM32F103 的12 位AD 轉(zhuǎn)換器接口,在硬件電路圖上,使用STM32 的PB1 口 連 接U13 的2引腳。
圖2 Pulsesensor 脈搏心率傳感器接口電路
本次設(shè)計采用DS18B20 溫度傳感器檢測人體溫度,DS18B20是由DALLAS半導(dǎo)體公司推出的一種“一線總線” 接口的溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,其輸出的是數(shù)字信號,可以直接傳給單片機(jī),顯示在LCD1602 液晶屏上。其體積較小,適用電壓寬,與微處理器接口簡單,測量溫度范圍為-55~+125 ℃,精度為± 0.5 ℃。可以根據(jù)實際要求,通過簡單地編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方式,抗干擾能力方面比較強,硬件開銷比較低、價格便宜,輸出信號為數(shù)字信號,不需要外接AD轉(zhuǎn)換電路等特點,使其應(yīng)用廣泛。對應(yīng)的硬件電路連接如圖3 所示,R11 加10 kΩ 上 拉 電 阻, 能 夠 使DS18B20 在無數(shù)據(jù)傳輸時返回高電平狀態(tài),能提高數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
圖3 溫度傳感器檢測電路
在系統(tǒng)中設(shè)計增加了3 個獨立按鍵,分別用來設(shè)置溫度和心率脈搏的上下限減少按鍵、上下限增加按鍵及模式切換按鍵。其中,模式切換按鍵用來進(jìn)行模式之間的切換,模式包括上限溫度值設(shè)置模式、下限溫度值設(shè)置模式、上限心率脈博值設(shè)置模式及下限心率脈搏值設(shè)置模式。顯示模塊在本設(shè)計中只需要顯示測試時間和測試的脈搏數(shù)、溫度值,這些都是數(shù)字量, 所以對顯示部分采用LCD1602 液晶顯示。LCD1602 是目前應(yīng)用較為廣泛的液晶屏幕,采用點陣型液晶,驅(qū)動方便,顯示質(zhì)量較高。報警模塊采用有源蜂鳴器進(jìn)行報警,單片機(jī)上電后引腳默認(rèn)是低電平,需要讓蜂鳴器進(jìn)行報警的時候,給三極管一個高電平,就實現(xiàn)了蜂鳴器報警。
系統(tǒng)主程序控制單片機(jī)系統(tǒng)按預(yù)定的操作方式運行, 其是單片機(jī)系統(tǒng)程序的框架。系統(tǒng)上電后,對系統(tǒng)進(jìn)行初始化。初始化程序主要包括系統(tǒng)時鐘函數(shù)初始化、中斷優(yōu)先級分組設(shè)置、 使用的串口號初始化、ADC 初始化、LCD1602初始化、定時器工作方式及按鍵、蜂鳴器所使用的IO 口的工作狀態(tài)設(shè)定。系統(tǒng)初始化之后, 進(jìn)行定時器中斷、外部中斷、顯示等工作,不同的外部硬件控制不同的子程序。主程序流程如4所示,當(dāng)用手捏住溫度傳感器模塊和心率傳感器模塊后,LCD1602顯示測得的溫度值和心率值, 當(dāng)把按鍵設(shè)置值按下后,可以設(shè)置溫度、心率值的上限或者下限值,上/下限值設(shè)定后,當(dāng)系統(tǒng)采集的溫度值或心率值低于下限值或者高于上限值時,相應(yīng)的蜂鳴器會響,LED 燈會亮,以提示報警。
圖4 系統(tǒng)主程序流程
3.2.1 心率檢測原理
心率指的是1 min內(nèi)的心跳次數(shù),一種最簡單的方法就是計時1 min后統(tǒng)計有多少次脈搏值,得到的脈博值即為心率值[7-8]。但這種方法每次測心率都要等1 min才有一次結(jié)果,效率極其低下且實時性不高。另外一種比較普遍的方法是測量相鄰兩次脈搏的時間間隔,再用1 min 除以這個間隔得出心率值。此方法可以實時計算脈搏值,且效率較高。其計算公式為:
式中:BPM為心率值,即1 min 內(nèi)的心跳次數(shù);IBI為相鄰兩次脈搏的時間間隔,ms。
實際檢測脈搏信號時,尋找到 “信號上升到振幅中間位置” 的特征點,如圖5所示,則認(rèn)為檢測到一次有效脈搏。
圖5 脈搏檢測特征點示意圖
3.2.2 心率算法程序
本文采用基于閾值的波峰檢測方法來實現(xiàn)心率計算。如圖6 所示,系統(tǒng)采樣周期為20 ms,ADC 采集并經(jīng)濾波后的數(shù)據(jù)存儲在緩沖數(shù)組內(nèi),并設(shè)置了一個長度為50 大小的數(shù)組循環(huán)檢測獲取脈沖信號值。具體算法設(shè)計思路如下:(1)緩存一個波形周期內(nèi)的多次采樣值,求出該波形的最大值(波峰值)、最小值(波谷值),計算振幅中間值((波峰值-波谷值)/2)作為信號判定閾值;(2)通過把當(dāng)前采樣值和上一采樣值與閾值作比較,找出信號上升到振幅中間位置的特征點,并記錄當(dāng)前脈搏時間為t1;(3)尋找相鄰下一個信號上升到振幅中間位置的特征點,并記錄該脈搏時間為t2,算出這兩個脈搏時間差為Δt=t1-t2,其中Δt為相鄰兩次脈搏的時 間 間 隔IBI(單 位ms);(4)再由式(1)便可算出心率值BPM。
圖6 心率檢測算法流程
本設(shè)計的測試系統(tǒng)實物如圖7 所示。使用本系統(tǒng)進(jìn)行實際測量,被測人員為一名年輕健康的青年男性,用手捏住心率傳感器和溫度傳感器模塊,測量10次,同時以聽診器測出的心跳次數(shù)和電子體溫測量儀作為參考標(biāo)準(zhǔn),結(jié)果如表1 所示。表中的測試數(shù)據(jù)表明,對健康成年男性進(jìn)行心率脈搏和體溫測試,通過誤差分析,本文設(shè)計的心率體溫檢測系統(tǒng)相對誤差較小,大部分低于5%,接近標(biāo)準(zhǔn)值,所有誤差值基本達(dá)到了預(yù)期的精度范圍要求[9-12]。
圖7 系統(tǒng)實物
表1 測試結(jié)果
本設(shè)計以STM32F103C8T6 單片機(jī)為核心,以DS18B20 溫度傳感器檢測待測人體的體溫,經(jīng)Pulsesensor 脈搏心率傳感器采集脈搏信號,采集的信號通過信號處理系統(tǒng)進(jìn)行濾波、放大、整形得到符合要求的脈搏電信號,然后采用基于閾值的波峰檢測方法來實現(xiàn)心率計算,該算法實現(xiàn)了人體心率檢測目標(biāo)。測試實驗結(jié)果表明,該心率體溫檢測系統(tǒng)工作正常,可實現(xiàn)心率和體溫兩項體制參數(shù)的檢測功能,并在出現(xiàn)異常值時進(jìn)行警報提醒,可用于疫情期間心率和體溫的測量,具有廣泛的應(yīng)用價值。但是,該測試系統(tǒng)由于時間關(guān)系,設(shè)計還有一些不足之處,后續(xù)可以把心率用曲線實時顯示出來,同時可以結(jié)合GSM網(wǎng)絡(luò)把被測者異常體溫值或異常心率脈搏值發(fā)給其家庭醫(yī)生,對其進(jìn)行治療和指導(dǎo),充分發(fā)揮網(wǎng)絡(luò)作用,真正實現(xiàn)電子醫(yī)療和網(wǎng)絡(luò)的完美融合。