何英杰,劉娟秀,梁飛
(成都工業(yè)學(xué)院電子工程學(xué)院,四川成都 611730)
我國(guó)心血管疾病患者已達(dá)3.3 億人,心血管疾病已經(jīng)是我國(guó)所有疾病發(fā)病率、死亡率的首位[1]。傳統(tǒng)的短時(shí)心電圖由于心電采集時(shí)間不長(zhǎng),在實(shí)際的診斷過(guò)程中很難診斷出心率異常。而動(dòng)態(tài)心電圖(又叫長(zhǎng)程心電圖)的采集時(shí)間很長(zhǎng),采集時(shí)患者的生活環(huán)境也更為多樣。為發(fā)現(xiàn)在常規(guī)體表心電圖檢查時(shí)不易發(fā)現(xiàn)的心律失常和心肌缺血等癥狀,為臨床診斷、治療及判斷療效提供重要的客觀依據(jù)[2]。本文設(shè)計(jì)了一款可實(shí)時(shí)遠(yuǎn)程監(jiān)控的移動(dòng)便捷式心電采集系統(tǒng)。
本系統(tǒng)采用德州儀器的ECG 專(zhuān)用模擬前端ADS1292 對(duì)人體進(jìn)行心電信號(hào)和呼吸信號(hào)進(jìn)行采集。通過(guò)樂(lè)鑫的ESP32 對(duì)采集后的數(shù)據(jù)進(jìn)行處理,并發(fā)送到服務(wù)器。系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)總體框圖
德州儀器的ADS1292 有兩個(gè)低噪聲可編程增益放大器(PGA)和兩個(gè)高分辨率模數(shù)轉(zhuǎn)換器(ADC),內(nèi)置右腿驅(qū)動(dòng)放大器、持續(xù)斷線檢測(cè)還完全集成型呼吸阻抗測(cè)量,方便設(shè)備小型化。功耗低(每個(gè)通道335μW),使得充一次電可以長(zhǎng)時(shí)間使用。樂(lè)鑫的ESP32自帶通訊,只需外加些許電路即可完成無(wú)線通訊,無(wú)需外加其他模塊,可以簡(jiǎn)化電路設(shè)計(jì)和縮小體積。
本設(shè)計(jì)采用電池或USB供電。ADS1292對(duì)電源要求較高,而ESP32有射頻功能電流波動(dòng)較大,對(duì)電源的負(fù)載調(diào)整率有較高要求。且ESP32的最大電流在500mA左右,因此本設(shè)計(jì)采用雙LDO 隔離供電。電源抑制比較高的AP211 2 芯片給ADS1292 供電,輸出最大電流較大的AMS1117 給ESP32 供電,同時(shí)ADS1292電源輸入采用了磁珠隔離,可以降低ADS1292的電源紋波。
圖2 雙LDO隔離供電電路
ADS1292采集部分對(duì)電源,呼吸檢測(cè)和右腿驅(qū)動(dòng)進(jìn)行了濾波,電路如圖3所示。
圖3 ADS1292采集部分主要電路圖
采集信號(hào)通過(guò)主控芯片的通信模塊傳輸?shù)缴衔粰C(jī)及服務(wù)器上,如圖4所示。Type-c接口主要用于直接與電腦通訊和下載程序,其需要配一個(gè)串口通訊芯片,這里選址的是CH340K。CH340K配合兩個(gè)NPN三極管可以自動(dòng)下載電路。ESP32使用的是安信可的ESP32最小板,所以不需要做過(guò)多處理。
圖4 主控芯片及外圍電路
心電信號(hào)非常微弱,采集的典型值在1mV 左右,其幅值范圍為0.05-4mV,一般而言,心電信號(hào)頻率較低,其頻率范圍為0.05-100Hz,并且能量主要集中在0.05-40Hz,易于耦合工頻等共模干擾。心電信號(hào)很容易受到外界干擾,導(dǎo)致信號(hào)畸變,特征值很難被提取。干擾主要來(lái)自?xún)蓚€(gè)方面[3]。
(1)人體的干擾。人體的干擾主要由人體的呼吸、皮膚、運(yùn)動(dòng)等因素造成的。
(2)技術(shù)上的干擾。首先電極貼與人體表面的接觸不能保持始終不變,這就會(huì)造成連接點(diǎn)阻抗的變化。其次是環(huán)境的干擾,在儀器使用環(huán)境中會(huì)有大量的50Hz的工頻干擾,會(huì)耦合到心電信號(hào)。此外采集電路以及電路與人的連線中也存在干擾。采集電路會(huì)因?yàn)殡娫吹募y波和寄生參數(shù)而引入干擾。上述干擾情況表現(xiàn)在采集的心電信號(hào)上為基線漂移、50Hz 干擾和高頻干擾。
心電信號(hào)的基線漂移是指心電信號(hào)的基線在某個(gè)數(shù)值附近緩慢上下飄動(dòng)。漂移的頻率一般在0~0.2HZ。基線漂移會(huì)導(dǎo)致波形識(shí)別和特征提取的誤差增加。處理方法主要分為小波變換法、曲線擬合和傳統(tǒng)高通濾波三種。小波變換繼承和發(fā)展了短時(shí)傅立葉變換局部化的思想是時(shí)間頻率的局部化分析,能自適應(yīng)時(shí)頻信號(hào)分析的要求[4]。
小波變換雖然可以很好地消除基線漂移,但是計(jì)算量太大。曲線擬合法是使用曲線擬合出心電信號(hào)的基線,然后讓心電信號(hào)減去基線,就可以得到去基線的心電信號(hào)。采用曲線擬合的方法雖然可以在穩(wěn)定的基線漂移中效果較好,但對(duì)于基線變化明顯時(shí)效果不佳。
基線漂移的頻率很低在0~0.2Hz,心電信號(hào)的集中在0.05-40Hz,可以較好地區(qū)分傳統(tǒng)的高通濾波器,可以很好地改善低心電信號(hào)的基線漂移問(wèn)題,傳統(tǒng)的高通濾波已經(jīng)足夠。所以本系統(tǒng)采用傳統(tǒng)高通濾波法抑制基線漂移。使用MATLAB 的Filter Designer 工具設(shè)計(jì)了一個(gè)切比雪夫Ⅰ型一階0.2Hz截止頻率的IIR濾波器,如圖5。
圖5 高通濾波器抑制基線漂移
在實(shí)際的應(yīng)用中50Hz的工頻干擾可能會(huì)很明顯,甚至?xí)⑿碾娦盘?hào)淹沒(méi)。而高頻干擾在對(duì)心電圖進(jìn)行分析時(shí)會(huì)有干擾,雖然在硬件上做了濾波處理但在軟件上可以進(jìn)一步進(jìn)行低通處理,但難以調(diào)試,對(duì)環(huán)境敏感,同時(shí)也會(huì)增大系統(tǒng)體積。同樣地使用MATLAB 的Filter Designer 工具進(jìn)行設(shè)計(jì)。為了更好地保留心電信號(hào)的特征,本系統(tǒng)采用FIR 濾波器。如圖6 使用Filter Designer工具設(shè)計(jì)了一個(gè)128階帶阻漢明窗。
圖6 128階帶阻漢明窗抑制工頻干擾
在測(cè)試時(shí)使用了麻省理工的噪聲應(yīng)力測(cè)試數(shù)據(jù)庫(kù)中的數(shù)據(jù)(MIT-BIT Noise Stress Test atabase),該數(shù)據(jù)在MATLAB 上的濾波測(cè)試效果如圖7。對(duì)于基線漂移,可以很明顯地看見(jiàn)在一段時(shí)間后基線回零,上下漂移幅度減小,效果不錯(cuò)。再加上工頻和高頻抑制后,可以明顯看出心電圖的特征體現(xiàn)明顯,線條光滑,特征易辨識(shí)。輸入總體信號(hào)有時(shí)延大概為120個(gè)點(diǎn),但對(duì)于本系統(tǒng)而言無(wú)影響。
圖7 濾波測(cè)試效果
本系統(tǒng)使用的是樂(lè)鑫的ESP32 作為主控,其主頻為240MHz、160MHz 和80MHz 可選,為降低功耗這里選用的是80Mhz的主頻,80MHz的主頻也足夠勝任。本系統(tǒng)的軟件設(shè)計(jì)使用了FreeRTOS 操作系統(tǒng),使得系統(tǒng)軟件設(shè)計(jì)和擴(kuò)展更為方便。軟件總框圖如圖8所示。
圖8 采集端軟件設(shè)計(jì)流程圖
ESP32與ADS1292通過(guò)1MHz的SPI通信,在初始化后設(shè)置ADS1292 為連續(xù)讀取模式。通過(guò)ADS1292 的DRDY 信號(hào)產(chǎn)生ESP32 外部中斷,在外部中斷中讀取ADS1292 轉(zhuǎn)換后的數(shù)據(jù)。然后對(duì)數(shù)據(jù)進(jìn)行抑制基線漂移、抑制工頻干擾和抑制高頻干擾處理后,對(duì)其進(jìn)行特征提出處理,提取出心率,放入發(fā)送隊(duì)列中。最后通過(guò)TCP協(xié)議發(fā)送至服務(wù)器。
使用Apache Echarts v5,MDUI 與Golang Iris 框架組成前端呈現(xiàn)的主要技術(shù)棧。在初始化的時(shí)候會(huì)優(yōu)先查詢(xún)網(wǎng)關(guān)是否有設(shè)備鏈接通信功能,如果有則會(huì)詢(xún)問(wèn)網(wǎng)關(guān)心電設(shè)備信息。當(dāng)網(wǎng)關(guān)無(wú)此功能或者網(wǎng)關(guān)長(zhǎng)時(shí)間不回應(yīng)時(shí),會(huì)開(kāi)始遍歷當(dāng)前網(wǎng)段下的所有鏈接設(shè)備,當(dāng)查詢(xún)到所有設(shè)備之后使用并發(fā)技術(shù)詢(xún)問(wèn)所有設(shè)備的特征碼并且以此分類(lèi)。
用戶(hù)在進(jìn)入客戶(hù)端之時(shí)可以選擇當(dāng)前網(wǎng)段之下的任意一個(gè)設(shè)備進(jìn)行查看,在此之前后端服務(wù)器會(huì)持續(xù)緩存心電設(shè)備的信息,當(dāng)前端查詢(xún)心電信息之時(shí)后端服務(wù)器會(huì)詢(xún)問(wèn)數(shù)據(jù)庫(kù)調(diào)取心電數(shù)據(jù);當(dāng)前端判定心電圖數(shù)據(jù)沒(méi)有長(zhǎng)達(dá)40 秒時(shí)會(huì)對(duì)空位進(jìn)行填0標(biāo)記處理,當(dāng)心電圖數(shù)據(jù)足夠40秒之時(shí)會(huì)剔除最老的數(shù)據(jù)并且在末尾追加最新數(shù)據(jù)并且重新畫(huà)圖。
得益于Apache Echarts v5 的臟矩形繪制,前端刷新速度能在現(xiàn)代瀏覽器的加持之下?lián)碛袩o(wú)與倫比的性能,就算在低性能設(shè)備上也能做到非常迅速地繪圖。
由于設(shè)計(jì)架構(gòu)上的前后端分離,因此能輕松地做到搭建中心服務(wù)器與搭建開(kāi)放API 服務(wù)。同樣的,由于可選的開(kāi)放API功能,開(kāi)發(fā)者能非常輕松地重新設(shè)計(jì)前端。
本文使用心電發(fā)生器和人體來(lái)驗(yàn)證系統(tǒng)。圖9 是使用標(biāo)準(zhǔn)心電信號(hào)發(fā)生器采集端的實(shí)物圖,為方便測(cè)試,直接使用了USB供電,也可使用3.7V鋰電供電。在系統(tǒng)完成初始化和連接服務(wù)器后,打開(kāi)心電信號(hào)發(fā)生器。在服務(wù)器端即可實(shí)時(shí)監(jiān)測(cè)到由采集端發(fā)送的心電圖和心率信息,心率信息與標(biāo)準(zhǔn)平均誤差小于1 次/分鐘。經(jīng)測(cè)試在網(wǎng)絡(luò)條件較好的情況下延時(shí)小于100ms。連接標(biāo)準(zhǔn)心電發(fā)生器的服務(wù)器端顯示結(jié)果如圖10 所示,連接人體的服務(wù)器端顯示結(jié)果如圖11所示。
圖9 使用標(biāo)準(zhǔn)心電發(fā)生器采集端實(shí)物圖
圖10 標(biāo)準(zhǔn)心電信號(hào)的測(cè)試結(jié)果
圖11 人體心電信號(hào)的測(cè)試結(jié)果
本文使用了ADS1292模擬前端采集心電數(shù),使用ESP32芯片進(jìn)行心電數(shù)據(jù)處理和發(fā)送處理后的數(shù)據(jù)到服務(wù)器,該方案的實(shí)時(shí)性強(qiáng),可拓展性好。通過(guò)實(shí)際測(cè)試驗(yàn)證了方案的可行性,為心電檢測(cè)設(shè)備的小型化,智能化和便攜化提供了一套解決方案。