李昊霖 徐凌樺
科學技術(shù)發(fā)展水平日新月異,醫(yī)療水平逐漸提高,人們越來越關(guān)注自己和家人的健康狀況。在眾多生理信號中,心電信號的監(jiān)測一直都是各國研究者們深入研究和學習的重點,由于傳統(tǒng)的ECG 儀器相對較大并且依賴于PC 和顯示器顯示器,而從國內(nèi)外心電圖儀的發(fā)展趨勢來看,新型心電監(jiān)測設備越來越便攜化,智能化,遠程化。因此,便攜性和易操作是目前家用心電監(jiān)護儀設備亟待解決的問題[1]。在這樣的背景下,本文設計了一款使用STM32F103ZET6 作為主控芯片,AD8232 芯片作為前端采樣,ADC 配合DMA快速采集傳輸心電信號,再對所采集心電信號進行處理,最后根據(jù)使用者需求選擇顯示方式,從而實現(xiàn)一款輕便小巧、操作簡單、低成本的心電監(jiān)測設備的設計。
本文設計的心電監(jiān)測系統(tǒng)由STM32F103ZET6 最小系統(tǒng)、AD8232 模擬前端、OLED顯示模塊、HC-05 藍牙模塊組成,醫(yī)用AgCl 采樣電極通過單導聯(lián)的方式將感知的心電信號傳輸?shù)紸D8232 模塊,進行初步信號調(diào)理及放大后,由STM32 單片機的ADC 采集并進行數(shù)據(jù)處理,最后將采集的心電信息通過OLED 模塊或者上位機顯示出來。
選用STM32F03ZET6 芯片作為主控單元,該芯片采用的CPU 是 ARM 的 32 位 Cortex-M3,擁有片上 128K 的閃存,還有20K 的RAM,同時內(nèi)置了3 個12 位精度的片上AD/DA 轉(zhuǎn)換器以及串行端口外設。并支持各種外設,如定時器,ADC,SPI,USB,IIC 和UART。使得它在簡單的電路上就能執(zhí)行信號采集和數(shù)據(jù)濾波。
綜合考慮性能和成本性能方面,選擇AD8232 作為本次設計的模擬前端。AD8232 采用雙極點高通濾波器來消除運動偽像和電極半電池電位[2]。AD8232 模塊的默認的外圍電路連接配置為0.5Hz 的雙極點高通濾波器,以及雙極性40Hz 低通濾波器。同時通過驅(qū)動第三電極來實現(xiàn)最佳共模抑制。除了40Hz 濾波功能外,運算放大器的增益也配置為11,因此系統(tǒng)總增益為1 100[3]。選擇AD8232 的原因是因為單芯片模擬信號鏈前端芯片大大方便了系統(tǒng)設計。
顯示屏的選擇方面主要考慮價格,因為各種屏幕都能實現(xiàn)功能,所以根據(jù)經(jīng)費情況,選擇性價比最高的0.96 的128*64 OLED 顯示屏模塊作為心電監(jiān)測的屏幕。
在與主機的數(shù)據(jù)通信中,選擇最經(jīng)典的HC-05 藍牙模塊,數(shù)據(jù)通過串口傳輸?shù)街鳈C。在本設計中,它可以通過TX 和RX接口連接到STM32F103ZET6。該模塊非常靈活,使用方便。
為了實現(xiàn)更好的人機交互,本設計通過三個按鈕來實現(xiàn)硬件側(cè)的模式選擇和相關(guān)的功能切換。物理按鈕可用于使操作方便可靠,用戶可以通過簡單地顯示和指導了解如何操作硬件。按鍵1 選擇本地模式,按鈕2 選擇上位機模式。在本地模式中,按鈕3 用于在本地模式下顯示心電圖之后顯示心率。
系統(tǒng)軟件流程設計為上電后,需要通過按鈕選擇系統(tǒng)的工作模式,有上位機模式和本地模式兩種工作模式,本地模式下又可選擇顯示心電圖或者顯示心率。選擇本地模式后,系統(tǒng)可以與上位機分開工作,實現(xiàn)心率波形的測量顯示和心率計算。在本地模式下,測量的開始和結(jié)束以及測量后的顯示數(shù)據(jù)可以分別由兩個按鈕控制;當選擇上位機模式時,系統(tǒng)通過藍牙將所有采集的數(shù)據(jù)傳輸?shù)桨沧恐鳈C,上位機負責數(shù)據(jù)處理。
本次設計應用ADC 的定時器觸發(fā)ADC 轉(zhuǎn)換功能,再通過DMA 傳輸數(shù)據(jù)。通過設置好的時間間隔觸發(fā)ADC 轉(zhuǎn)換,就能夠做到ADC 的定時采樣轉(zhuǎn)換的功能,之后可以在程序的死循環(huán)中不斷檢測DMA 的轉(zhuǎn)換完成狀態(tài)標志位,轉(zhuǎn)換完成之后的數(shù)據(jù)才可被讀取。DMA 配置為雙緩沖機制,類似于乒乓操作模式,建立2 個緩沖區(qū)緩沖區(qū)。當緩沖區(qū)1 存滿時,接收的數(shù)據(jù)自動傳送到緩沖區(qū)2,并對緩沖區(qū)1 中的數(shù)據(jù)進行濾波處理,因此交替采樣濾波可以大大提高系統(tǒng)的工作速度,同時也保證數(shù)據(jù)接收不受暫停影響,非常高效實用。
本設計的工頻陷波和高通濾波均采用IIR 濾波器來設計。IIR 濾波器的設計借助MATLAB 的FDATOOL 工具包可以直接生成相關(guān)參數(shù)。再通過工具箱提供的將其參數(shù)翻譯成C 語言形式的功能,復制到STM32 的程序中可直接應用該濾波器。
在分別完成心電采集系統(tǒng)的硬件及軟件部分后,得到了下圖1 的顯示效果,存在較大誤差,在綜合分析了多種可能情況后出的結(jié)論為:(1)測試電路搭建太簡陋使用了較多杜邦線(2)AD8232 模塊與導聯(lián)線接觸不良。在檢查了原因后我對測試電路做出了改進。在通過硬件改進以及數(shù)字濾波器的使用后,得到下圖2 心電信號顯示效果,可以看到顯示效果有了明顯的改善。
圖1 改進前
圖2 改進后
本文設計了一款基于STM32 單片機的心電監(jiān)測系統(tǒng),可以實現(xiàn)心電信號的監(jiān)測,以及通過本地OLED 屏幕顯示或者將數(shù)據(jù)發(fā)送到上位機來顯示心電圖及心率。顯示效果良好,可以很好地完成心電信號的監(jiān)測,實現(xiàn)心電監(jiān)測設備的小型化、便攜化、遠程化。