臧俊斌,高慧芳,郝凱軒
(1.中北大學儀器科學與動態測試教育部重點實驗室,山西太原 030051;2.山西工學院,山西朔州 036000)
近年來,居民生活水平得到提高,我國呈現出人口老齡化現象,老年人心血管疾病頻發,心臟病患者人數持續上漲[1-3]。通過技術手段檢測并分析患者的心音信號,對心臟病的診斷有著重要的臨床參考價值。因此,設計一個簡單、方便、易用的心音信號采集系統,實現心音信號的采集、存儲與波形實時顯示等功能,便于對心臟病變發展情況及過程做出準確的評估和掌控,也能輔助醫師和學生加強對心臟病的深刻理解與認識;同時,對于降低患者的醫療成本,減輕其心理負擔,促進心臟病的早期控制和有效治療意義重大。
心音指的是在一個完整的心動周期內,因心肌舒張與收縮以及心臟瓣膜啟閉等多種因素而引發的心臟機械式振動經心臟附近組織傳遞至胸壁,可以由耳朵或聽診器貼緊胸壁聽到的聲音[4-6]。心電圖作為檢測人體心電活動最精確的手段之一,是醫務人員對心血管類疾病患者診斷的有效依據。心電圖指記錄心電信號并間接反映人的心臟功能和活動的波形圖。通常情況下,心電信號的一個完整周期如圖1 所示,其由P 波、PR 波段、QRS 波群、ST 波段、T 波組成[7-8]。

圖1 心電信號特征波形圖
研究表明,心臟在一個周期內生成四個心音:第一心音(S1)在心室收縮時產生,在心電圖的QRS 波群之后;第二心音(S2)在心室舒張開始時產生,在心電圖中T 波的終端;第三心音(S3)則在第二心音(S2)之后產生;第四心音(S4)在心房收縮期產生,在心電圖的P 波之后。通常情況下,只可能聽到第一心音(S1)和第二心音(S2)。因此,在一個周期內,心音信號通常分為第一心音(S1)、收縮期、第二心音(S2)、舒張期四個時間段[9],如圖2 所示。其中,S2 振幅較弱于S1,持續時間相對較短。

圖2 心音信號的時域特征圖
基于心音與心電的產生機理與表現形式,該文設計了便攜式心音信號采集系統,其主要由心音信號采集模塊、心音信號處理模塊以及心音信號波形顯示模塊三部分組成。
其中,心音信號采集模塊主要使用PVDF 心音傳感器來完成對人體內心音信號的采集工作。PVDF 心音傳感器將位于胸腔內心跳發出的微弱聲音信號放大并且轉換成處理模塊可以識別的電信號[10]。由于心音信號的頻帶范圍為20~800 Hz,依據奈奎斯特采樣定理、硬件處理能力、STM32 轉化精度和采樣頻率,通常將采樣頻率設置為48 kbps,量化精度設置為12位,編碼方式設置為WAV 格式[11-12]。
心音信號處理模塊主要采用STM32 處理器對接收到的電信號進行處理。該模塊由放大電路、高通/低通濾波電路以及數據轉換處理部件四部分組成,以完成對所采集心音信號的處理[13-14]。
心音信號波形分析顯示與通信傳輸主要采用2-ANO_TC 地面站的v4.34 版本與2-XCOM 的V2.0版本。通過STM32 對心音信號進行處理,再經過串口通信傳輸到PC端,在PC 端使用2-XCOM 對串口進行調試,最后使用2-ANO_TC 地面站完成心音信號輸出波形的顯示。詳細的系統結構圖如圖3所示。

圖3 系統結構圖
該研究中使用PVDF 心音傳感器作為系統中的心音信號傳感器,完成對心音信號的采集工作。PVDF 心音傳感器是一種比較常見的動態應變式傳感器,其主要材料是PVDF 高分子膜。當PVDF 高分子膜受應力影響發生彎曲或拉伸變化時,上下兩個電極表面將產生相應變化的電流信號,該電信號與高分子膜的形變程度成比例。與一般壓電材料相比,PVDF 高分子膜擁有更高的敏感程度,當大面積地對薄膜施加壓力時,它會產生更大的應力[15-17]。不僅如此,這種傳感器更薄、更輕,而且非常柔軟,經過上百萬次的形變亦不會影響它的性能。
PVDF 心音傳感器采集的心電信號經電路放大后,再傳輸到STM32 嵌入式開發板上進行信號處理。
該次設計使用的STM32 為MAX9812 1.0,其主要功能是處理來自PVDF 心音傳感器傳遞的電信號,處理后的信號將傳輸到PC 端。MAX9812 是一個同時帶有20 dB 固定輸出功率和高電源增益的音頻放大器,主要特點是采用6 引腳SC70 封裝,具有頂級水平的電源抑制比和極低的THD+N,且具有低功耗等特性。
該設計使用的兩種PC 端軟件是2-ANO_TC 地面站與2-XCOM 串口調試工具。2-XCOM 的作用是將串口連接起來,串口的端口號為COM4:USBSERIAL,波特率為460 800 bps;用2-ANO_TC 地面站進行波形輸出與顯示,串口的端口號與波特率的設置與2-XOM 的設置相同,即可將上述兩個軟件對接,從而獲取到所收集心音信號的波形。
該設計的程序主要使用了sys 函數、adc 函數、delay 函數、key 函數、usart 函數、Timer 函數、LED 函數以及main 函數。
1)sys 函數:該函數用來處理中斷的開啟、結束以及設置棧頂地址。
2)adc 函數:
①ADC 接在APB2上,將時鐘設置為72 MHz,通過分頻的方式給ADC 提供特定時鐘,其中預分頻的方式主要有二分頻、四分頻、六分頻、八分頻四種。
②設置多個通道采樣、轉換時間,其中,通道采樣時間的變化將對采樣精度產生直接影響。
③轉換時間=采樣時間+12.5 個周期,一個周期大約為1 μs。通常情況下,如果是軟件啟動,則轉換時間等于采樣周期。若通過定時器觸發啟動ADC,則還需要加上定時器的相關時間。
④確定采樣頻率:為了盡可能提高采樣精度,選取ADC 時鐘為12 MHz,即六分頻。在保證采樣率為400 kHz 的情況下,每次采樣時間為2.5 μs,同理可以求出采樣時間為17.5 個周期。因此,采樣時間必須小于17.5 個周期才能保證采樣率在400 kHz 以上。綜上,選擇13.5 個周期以保證有較高的準確度。
3)delay 函數:修正中斷過程時再次調用函數后可能出現的中斷死機、循環錯誤,為了防止延時不準確,采用do while 函數結構。并且在此基礎上,還增加了一個對ucosii 延時的自動系統支持。同時,添加了delay_osrunning、delay_ostickspersec、delay_osintnesting三個宏定義與delay_ossched-lock、delay_osschedunlock、delay_ostimedly 三個函數。
①delay_osrunning 表示當前系統是否正在工作,以決定是否使用與os 相關的函數。
②delay_ostickspersec 表示設定的一個時鐘節拍,delay_init 將根據這個參數計算出systick。
③delay_osintnesting 表示os 的中斷嵌套級別,可以通過使用delay_ms 函數決定如何運行和調度中斷。
④delay_osschedlock 自動鎖定os 的任務調度,禁止其他調度。
⑤delay_osschedunlock 自動解鎖os 的任務調度,重新打開調度。
⑥delay_ostimedly 應用于os 的延時,可以打開任務調度。
4)key 函數:主要包括節制按鈕及電源起始化。這個函數會對開機狀態與供電狀態進行檢測,對按鍵進行標記并檢查按鍵按下的標志位,判斷按鍵是否有效。
5)usart 函數:主要用于GPIO 端口的數組設置,判斷一個用戶指定數組字符串在該數組中是否真實存在,確保每一次用戶發送的數據不會超過USART3_MAX_SEND_LEN 定義的最大緩沖字節數,并對完成的標志進行接收,進而判斷所接收的字節是否有效。
6)Timer 函數:主要用來實時處理自動定時器的各種中斷控制服務,包括定時器的中斷初始化、自動重裝、清空、更新等操作。
7)LED 函數:主要控制MAX9812 上的LED燈,表示PB 端口時鐘的狀態。
8)main 函數:連接各個函數,實現預期的功能。其中包括軟件復位、藍牙發送、開啟DMA、ADC 采集等功能。
根據上述設計的系統結構圖與硬件選型,最終完成對心音傳感采集系統的整體設計與實現,然后采用開發的軟件程序與設定的通信幀格式進行信號采集功能測試,當設備通電之后,MAX9812 上的LED 燈會亮起,PB 端口時鐘打開。采集時先將該設計中的心音傳感器用綁帶固定在心臟附近,保持呼吸均勻。然后,打開2-XCOM 軟件,對串口進行設置,最后,打開2-ANO_TC 地面站并進行串口及波特率的匹配。匹配成功后,打開顯示波形按鈕,即可在2-ANO_TC 上顯示心音信號波形。
最終所測試的波形結果如圖4 所示。從圖中可以清晰看到第二個波形振幅高,持續時間久,為心音信號的S1 階段;第三個波形振幅明顯低于第二個波形,其持續時間也相對較短,為心音信號的S2 階段。且S1 與S2 為周期性波動、間隔均勻、波形清晰、無雜音,為一正常人心音波形的測試結果圖。

圖4 心音信號波形圖
該系統設計開發了集MAX9812 處理器板與心音信號傳感器為一體的信號采集處理電路,并使用Python 語言對這些元器件進行編程,設計出心音信號采集系統。再利用2-XCOM 和2-ANO_TC 等串口傳輸助手,將采集電路板上的USB 接口與PC 端連接,實現心音信號數據的通信傳輸,最終在PC 端瞬態輸出顯示所測波形。其結果表明,采集測試得到的波形準確清晰,可以輔助學生及醫師清晰地理解心音信號的組成與包含的特征信息,進而準確完成對心音信號的快速識別,同時促進了學科交叉融合的創新性和實用性。另外,該設計是在STM32 主控芯片電路的基礎上實現了心音信號的便攜采集,未完成高效去噪、濾波等工作。因此,設計并不夠完善,后續的研究可以重點從此方面展開深入研究。