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