朱安陽,徐秀林
(上海理工大學(xué) 醫(yī)療器械與食品學(xué)院,上海 200093)
基于STM32的表面肌電采集系統(tǒng)的實現(xiàn)
朱安陽,徐秀林
(上海理工大學(xué) 醫(yī)療器械與食品學(xué)院,上海 200093)
針對康復(fù)訓(xùn)練治療效果的評估的需要,設(shè)計了一種基于STM32的表面肌電采集系統(tǒng)。系統(tǒng)采取由主機(jī)控制和顯示的主從型結(jié)構(gòu),硬件以STM32為核心,配合表面肌電信號采集模塊以實現(xiàn)對原始的表面肌電信號的采集,再利用均方根值提取模塊提取其肌電均方根值并通過USB接口傳送至上位機(jī),最終由上位機(jī)軟件分析處理傳送上來的肌電數(shù)據(jù)并顯示。實驗結(jié)果表明,系統(tǒng)所采集的肌電信號的準(zhǔn)確性較高,能夠滿足評估康復(fù)訓(xùn)練治療效果的需要。
STM32;數(shù)據(jù)采集;肌電均方根值;積分肌電值
表面肌電信號是一種伴隨著肌肉活動在皮膚表面?zhèn)鬟f的生物電[1]。表面肌電信號是來源于人體自身的電信號,因此它具有直接自然的特點,其中蘊(yùn)含了多種肌肉運動信息,被廣泛的運用于肌肉運動、肌肉損傷診斷、康復(fù)醫(yī)學(xué)以及運動體育等方面的研究。
隨著電子新技術(shù)和計算機(jī)技術(shù)的發(fā)展以及神經(jīng)肌肉生理學(xué)研究,人們可以對肌電信號和神經(jīng)肌肉功能進(jìn)行更加精準(zhǔn)的研究[2]。南京大學(xué)的周兵等人研制的便攜式表面肌電信號采集儀以ARM7微處理器AT91SARM7SE512為核心,采用μC/OSⅡ操作系統(tǒng),通過觸摸屏控制肌電信號的采集,操作簡便且性能穩(wěn)定,但選用的芯片成本較高,而且由于缺少上位機(jī)的配合,不便于肌電數(shù)據(jù)的管理[3];哈爾濱理工大學(xué)的尤波等人搭建的肌電信號采集平臺采用了北京阿爾泰科技發(fā)展有限公司研發(fā)的PCI8622數(shù)據(jù)采集卡,其采樣通道多達(dá)32路,轉(zhuǎn)換精度達(dá)16bit,可同時采集多路肌電信號且精度較高,但也使得數(shù)據(jù)采集變得復(fù)雜,不利于臨床使用。
針對上述情況,本文設(shè)計了一種基于STM32的低成本、低功耗、雙通道的表面肌電采集系統(tǒng)。該系統(tǒng)包括上、下位機(jī)兩部分,由上位機(jī)控制下位機(jī)的肌電數(shù)據(jù)的采集與傳送,同時上位機(jī)還負(fù)責(zé)對采集的肌電數(shù)據(jù)進(jìn)行保存、分析和顯示,上位機(jī)與下位機(jī)之間通過USB接口進(jìn)行數(shù)據(jù)通訊。
基于STM32的肌電采集系統(tǒng)設(shè)計由硬件設(shè)計與軟件設(shè)計兩部分組成。硬件包括原始肌電信號采集模塊、肌電均方根值提取模塊、STM32芯片、UART轉(zhuǎn)USB模塊和電源模塊;軟件分為下位機(jī)的STM32控制程序設(shè)計和上位機(jī)的肌電信號分析界面設(shè)計兩部分。其中,下位機(jī)的STM32控制程序包括對上位機(jī)下傳的命令數(shù)據(jù)的處理響應(yīng)模塊和肌電均方根值數(shù)據(jù)的上傳模塊;上位機(jī)的肌電信號分析界面包括病人信息管理模塊、肌電數(shù)據(jù)分析顯示模塊和數(shù)據(jù)通訊模塊。系統(tǒng)整體結(jié)構(gòu)框圖如圖1所示。
1.1 硬件設(shè)計
表面肌電采集系統(tǒng)的硬件部分由原始肌電信號采集模塊、肌電均方根值提取模塊、STM32芯片、UART轉(zhuǎn)USB模塊和電源模塊組成,其具體工作流程為:原始肌電信號采集模塊通過對信號進(jìn)行放大濾波處理以提取原始表面肌電信號,而獲得的原始肌電信號再經(jīng)過均方根值提取模塊的處理以提取肌電信號的均方根值,再由STM32芯片將采集到的肌電均方根值數(shù)據(jù)通過UART轉(zhuǎn)USB模塊傳送給上位機(jī)。硬件系統(tǒng)的設(shè)計指標(biāo)如表1所示。
表1 硬件設(shè)計指標(biāo)
圖1 肌電采集系統(tǒng)整體框圖
1.1.1 電源模塊
本系統(tǒng)通過電源適配器將220V市電轉(zhuǎn)化為直流+9V供電。為確保STM32芯片的正常工作,選用1117-3.3輸出+3.3V電壓作為STM32芯片的工作電源;采用MAX660輸出-5V電壓以及LM2576-5輸出的+5V電壓作為肌電采集模塊中各芯片的供電電源。
1.1.2 原始肌電信號采集模塊
表面肌電信號是一種微弱的電信號,一般只有微伏級,其幅值范圍一般在0-5000μV,下肢癱瘓者的肌電信號則更加微弱,一般在200μV以下。因此本系統(tǒng)采用前、中、后三級放大電路,并設(shè)計了增益調(diào)節(jié)電路,可選擇性調(diào)節(jié)增益倍數(shù)。前級放大電路選用AD8220差分放大芯片用于提高輸入阻抗,降低共模干擾,放大倍數(shù)為200倍;中級放大結(jié)合濾波電路實現(xiàn),放大倍數(shù)為25倍;后級放大電路采用同相放大器,放大10倍;增益調(diào)節(jié)電路以CD4052芯片為核心,由STM32芯片控制其第9和第10引腳的高低電平的輸入以選擇采集信號的放大倍數(shù)。根據(jù)兩輸入引腳的高低電平的組合,共有四種放大倍數(shù)可供選擇:1、2、5、10倍。
采集表面肌電信號時會同時采集到各種噪聲,包括人體內(nèi)部組織的各種生物電信號、采集系統(tǒng)設(shè)備本身噪聲以及周圍環(huán)境噪聲等,為保留有用的肌電信號,在設(shè)計肌電信號采集模塊時還需要濾除噪聲,為此需要結(jié)合噪聲與肌電信號的頻率特征來設(shè)計相應(yīng)的濾波電路。人體表面肌電信號的頻譜范圍為0~1000Hz,其主要能量集中在200Hz以下(占80%以上),而作為肌電采集的主要干擾的心電信號的頻率范圍在0.05~100Hz,其頻譜能量集中于0.25~20Hz的范圍。因此,硬件系統(tǒng)選取20~500Hz頻段的肌電信號作為采集目標(biāo),分別設(shè)計了截止頻率為20Hz的一階高通濾波器與截止頻率為500Hz的二階低通濾波器。此外,由于硬件系統(tǒng)采用市電電壓供電,在肌電采集時不可避免的受到50Hz工頻干擾,需采用50Hz陷波電路濾除。表面肌電信號處理流程如圖2所示。
圖2 肌電信號處理流程
1.1.3 肌電均方根值提取模塊
肌電信號的時域分析主要包括原始肌電信號、積分肌電值和均方根值。其中,肌電均方根值體現(xiàn)了肌肉負(fù)荷性因素和肌肉本身生理生化過程之間的內(nèi)在聯(lián)系,直觀的反映了肌電信號的幅值特征,被廣泛的的應(yīng)用于運動醫(yī)學(xué)和人機(jī)工程學(xué)領(lǐng)域的肌肉功能評估。因此,本系統(tǒng)選擇肌電均方根值作為STM32芯片最終采集與上傳的肌電數(shù)據(jù),設(shè)計了肌電均方根值提取模塊。它能夠很好的將肌電信號波形進(jìn)行整流濾波,并提取肌電信號的均方根值作為有效值,這既有利于肌電信號的觀測,也便于后續(xù)的肌電信號處理。肌電均方根值提取模塊如圖3所示。
圖3 均方根值提取模塊
該模塊以AD536A真有效值提取芯片為核心,該芯片可以直接計算輸入的任何復(fù)雜波形的真有效值。其1引腳為電壓信號輸入端,連接肌電信號采集模塊的輸出端,以導(dǎo)入原始肌電信號;根據(jù)輸入的肌電信號的特征,在提取其有效值時,需要在4引腳與14引腳之間外接一個濾波電容,在這種連接中,由于濾波電容的作用,當(dāng)輸入的交流電壓信號頻率較低時,會出現(xiàn)微小誤差,而當(dāng)輸入高頻信號時,則可獲得高精度的直流輸出;8引腳輸出的有效值再經(jīng)過緩沖處理,最終由緩沖輸出端6引腳導(dǎo)出肌電有效值。
1.1.4 STM32芯片
硬件系統(tǒng)所用的核心芯片型號為STM32F103RC,使用高性能的32位的ARM Correx-M3內(nèi)核,最高工作頻率可達(dá)72MHz,內(nèi)置高速存儲器(高達(dá)256k字節(jié)的閃存和32k字節(jié)的SRAM)。作為一款低功耗高速單片機(jī),它的外設(shè)資源豐富,包括2個12位的ADC、3個通用16位定時器和一個PWM高級定時器,還包含標(biāo)準(zhǔn)和先進(jìn)的通信接口:5個USART和1個CAN。它涵蓋了本肌電采集系統(tǒng)所需要的所有外設(shè),并且在存儲容量和運算速度方面很好的滿足了肌電采集系統(tǒng)的要求。
在本系統(tǒng)中,STM32芯片作為肌電均方根值提取模塊與上位機(jī)之間的中樞紐帶,一方面它要接受上位機(jī)的控制如肌電采集的開斷、肌電采集通道的選擇、采集信號的放大倍數(shù)的選擇等,另一方面它將采集到的肌電均方根數(shù)據(jù)傳遞給上位機(jī)。
1.1.5 UART轉(zhuǎn)USB模塊
本肌電采集系統(tǒng)包含上下位機(jī)兩部分,兩者之間存在數(shù)據(jù)通訊:一方面上位機(jī)以向下發(fā)送命令數(shù)據(jù)的方式控制下位機(jī)的肌電采集,另一方面下位機(jī)需要將采集到的肌電數(shù)據(jù)上傳給上位機(jī)以便后者分析處理肌電數(shù)據(jù)。USB接口是PC與外部設(shè)備進(jìn)行數(shù)據(jù)交互時廣泛使用的通訊接口,因此為了方便上下位機(jī)的數(shù)據(jù)通訊,本系統(tǒng)采用USB接口方式連接硬件采集系統(tǒng)與PC端,而STM32芯片自身并未配備USB通信接口,需要外接UART轉(zhuǎn)USB模塊。
UART轉(zhuǎn)USB模塊采用CP2102芯片,它是一種高度集成的UART轉(zhuǎn)USB橋接器。該芯片包含一個USB 2.0全速功能控制器、USB收發(fā)器、振蕩器和帶有全部的調(diào)制解調(diào)器控制信號的異步串行數(shù)據(jù)總線(UART)。本設(shè)計添加退耦電容,電源指示等外圍元件,將UART升級為USB接口,其通訊速率可達(dá)1Mbps。
1.2 軟件設(shè)計
1.2.1 上下位機(jī)數(shù)據(jù)通訊協(xié)議
上下位機(jī)數(shù)據(jù)通訊協(xié)議規(guī)定了上下位機(jī)通訊時每幀數(shù)據(jù)的傳輸格式,為上下位機(jī)的串口通訊編程提供了必要依據(jù)。該數(shù)據(jù)通訊協(xié)議包括幀頭、設(shè)備號、采集通道號、數(shù)據(jù)類型、長度、命令(數(shù)據(jù))序列、效驗。其中,幀頭標(biāo)識一幀數(shù)據(jù)的開始,用于判別當(dāng)前幀數(shù)據(jù)是否是有效,而只有在數(shù)據(jù)有效時才會進(jìn)一步的解析當(dāng)前幀數(shù)據(jù),提取有用信息;本肌電采集系統(tǒng)為雙通道,通過通道號來選擇當(dāng)前肌電采集的通道;上下位機(jī)數(shù)據(jù)通訊是雙向的,因此其傳遞的數(shù)據(jù)也分為兩種即肌電均方根數(shù)據(jù)和命令數(shù)據(jù),由通訊協(xié)議中的數(shù)據(jù)類型來標(biāo)識。數(shù)據(jù)通訊協(xié)議格式如表2所示。
1.2.2 STM32控制程序
STM32控制程序的編寫采用C語言,通過庫函數(shù)開發(fā)方式編程即利用由ST公司針對STM32單片機(jī)提供的函數(shù)庫來配置STM32各種外設(shè)的寄存器,從而擺脫最底層的寄存器操作,便于程序的開發(fā)與后期維護(hù)。
STM32控制程序包括對上位機(jī)下傳的命令數(shù)據(jù)的處理響應(yīng)模塊和肌電均方根數(shù)據(jù)的上傳模塊。STM32控制程序流程圖如圖4所示。
命令數(shù)據(jù)的處理響應(yīng)模塊采用串口中斷的方式接收,解析上位機(jī)下傳的數(shù)據(jù)并響應(yīng)。當(dāng)上位機(jī)下傳命令數(shù)據(jù)時,將觸發(fā)串口中斷而執(zhí)行中斷函數(shù)。中斷函數(shù)將根據(jù)事先制定的數(shù)據(jù)通訊協(xié)議執(zhí)行對一幀命令數(shù)據(jù)的判別與解析,首先是對幀頭的校對,如果符合協(xié)議設(shè)置的幀頭,則證明所接收的數(shù)據(jù)為命令數(shù)據(jù),繼而進(jìn)一步解析命令并響應(yīng)。
表2 通訊協(xié)議格式
圖4 STM32控制程序流程圖
肌電均方根值數(shù)據(jù)的上傳模塊負(fù)責(zé)采集與上傳肌電均方根數(shù)據(jù)。該模塊采用AD-DMA的方式將模數(shù)轉(zhuǎn)換后的肌電均方根數(shù)據(jù)直接導(dǎo)入到STM32內(nèi)存緩沖區(qū),每次采集4kB的肌電均方根數(shù)據(jù),采集周期約為1S,定時器TIM1配置為PWM輸出模式,用于控制AD1的采樣頻率(2000Hz);肌電均方根數(shù)據(jù)的上傳采用UART-DMA方式將STM32內(nèi)存緩沖區(qū)中的4k數(shù)據(jù)傳遞至UART,再通過UART轉(zhuǎn)USB模塊上傳至上位機(jī)。
1.2.3 肌電信號分析界面
上位機(jī)軟件采用C++,通過MFC軟件設(shè)計肌電信號分析界面,實現(xiàn)了上位機(jī)對下位機(jī)肌電采集的控制以及肌電均方根數(shù)據(jù)的分析和顯示。該界面包括病人信息管理模塊、數(shù)據(jù)通訊模塊和肌電數(shù)據(jù)分析模塊。
在病人信息管理模塊中可以進(jìn)行患者編號、姓名、性別和年齡等基本信息的創(chuàng)建與修改,這部分信息將獨立顯示并自動保存,而采集到的病人的肌電數(shù)據(jù)也將相應(yīng)的保存在以病患信息命名的目錄的文件夾下,以便于管理。
上位機(jī)的串口通訊模塊采用基于Windows API的串口編程方法,編寫適合本肌電采集系統(tǒng)的串口類,將串口操作的一般步驟都封裝在串口類中,通過創(chuàng)建串口類對象的方式完成打開與配置串口、讀寫串口、開啟與關(guān)閉串口等基本操作。此外,上位機(jī)的串口通訊模塊還利用Windows系統(tǒng)的消息響應(yīng)機(jī)制,自定義了WM_COMM_RXCHAR消息并按照上下位機(jī)通信協(xié)議編寫其消息響應(yīng)函數(shù)。由于串口被設(shè)置為一次僅傳遞一個字節(jié)數(shù)據(jù)而一個肌電均方根數(shù)據(jù)卻有12位,因此一個完整的肌電均方根數(shù)據(jù)需要拆分為兩個字節(jié)分兩次傳送,而上位機(jī)在接收到數(shù)據(jù)時會向系統(tǒng)發(fā)送WM_COMM_RXCHAR消息,進(jìn)而執(zhí)行其消息響應(yīng)函數(shù),完成肌電均方根數(shù)據(jù)的重組、顯示和保存。
肌電數(shù)據(jù)分析模塊一方面控制下位機(jī)的肌電采集,另一方面負(fù)責(zé)顯示與保存上傳的肌電均方根數(shù)據(jù),并進(jìn)一步提取和顯示肌電積分值及其最大最小值。肌電信號分析顯示界面如圖5所示。
圖5 肌電信號分析顯示界面
本界面主要包括五個功能性按鍵,兩個顯示控件和兩個編輯框控件。兩個顯示控件中,上方的控件只用于顯示肌電均方根圖,下方的控件除了顯示積分肌電圖外,還可用于回放肌電均方根圖。此外,上位機(jī)的軟件事先通過編程設(shè)定了各按鍵的邏輯順序,以防止誤操作,最初只有“開始”鍵與“波形回放”鍵處于使能可用狀態(tài),隨著一個采集周期的結(jié)束,其他按鍵將先后使能可用。肌電信號分析界面的一個工作周期如下:
初次點擊“開始”按鍵后,它將自動失能變灰,避免重復(fù)點擊,此時上位機(jī)將向下位機(jī)傳送開始指令,啟動定時器以開啟一個周期(150s)的肌電采集并動態(tài)顯示,此時 “停止”按鍵使能可用,點擊可終止數(shù)據(jù)采集與顯示并重新使能“開始”鍵,回復(fù)初始狀態(tài)。此外,最初狀態(tài)下處于使能狀態(tài)的還有“波形回放”按鍵,用于回放保存的肌電均方根數(shù)據(jù)。
當(dāng)一個周期的肌電采集正常結(jié)束時,“積分肌電值”按鍵將使能可用,點擊后將對本周期所采集的肌電均方根數(shù)據(jù)進(jìn)行運算處理,提取其積分肌電值并以積分肌電圖的形式顯示。
在點擊過“積分肌電值”按鍵后,“保存”按鍵將使能可用而“積分肌電值”按鍵將重新失能變灰。點擊“保存”按鍵可截取當(dāng)前的積分肌電圖并以“.jpg”圖片格式保存,之后“保存”按鍵將失能變灰,“開始”鍵恢復(fù)最初使能狀態(tài),其他按鍵也將恢復(fù)初始狀態(tài),等待下一個采集周期的開始。
為了驗證系統(tǒng)所采集的肌電信號的準(zhǔn)確性,本文對有效頻段(20Hz~500Hz)內(nèi)的肌電信號的信噪比(S/N)進(jìn)行了定量分析。從頻域角度來看,某一時刻的肌電信號值是該時刻下各種頻率的肌電信號的總和,因此設(shè)計如下實驗方法:利用信號發(fā)生器產(chǎn)生恒定的正弦波信號作為輸入信號,實驗過程中不斷地調(diào)節(jié)輸入信號的頻率,分別記錄輸入端接信號和輸入端空載時的輸出電壓的有效值,前者作為信號值,后者作為噪聲值,根據(jù)信噪比的定義求得各頻率下的信噪比,并對測得的數(shù)據(jù)進(jìn)行分析,得到的結(jié)果如圖6所示。在整個測試過程中,系統(tǒng)的各項功能都正常運行,工作穩(wěn)定,未出現(xiàn)異常。
圖6 信噪比頻譜圖
上圖直觀的反映了整個有效頻段內(nèi)信噪比隨頻率變化的趨勢。由圖可知,在肌電信號的有效頻段內(nèi),除了50Hz頻率處由于陷波器的作用而急劇衰減外,系統(tǒng)的信噪比整體上保持在20~30dB范圍內(nèi)。根據(jù)信噪比計算公式:S/N =101g(PS/PN),其中PS和PN分別代表信號和噪聲的有效功率,對該范圍換算可得信號與噪聲的有效功率之比(PS/PN)的范圍為100~1000倍,因此噪聲對肌電信號的干擾十分微弱,系統(tǒng)所采集的肌電信號具有高準(zhǔn)確性,能夠滿足評估康復(fù)訓(xùn)練治療效果的需要。
本文針對電刺激治療效果的評估的需要,設(shè)計了一種基于STM32的主從型表面肌電采集系統(tǒng)。該系統(tǒng)實現(xiàn)了對原始表面肌電信號的采集并提取其均方根值傳送給上位機(jī),由上位機(jī)軟件對上傳的肌電均方根數(shù)據(jù)進(jìn)行顯示與保存,在此基礎(chǔ)上進(jìn)一步提取與顯示積分肌電值,并提供肌電均方根數(shù)據(jù)的回放與積分肌電圖保存的功能。經(jīng)測試該系統(tǒng)達(dá)到了設(shè)計要求,并能夠穩(wěn)定可靠的工作,為評估電刺激治療效果以及確定下一步的治療方案提供了依據(jù),提升了康復(fù)治療效率。在下一步的研究中,將在當(dāng)前系統(tǒng)的基礎(chǔ)上利用頻域方法進(jìn)一步的分析肌電信號,更全面的反映肌電信號的特征,進(jìn)一步的提高本系統(tǒng)的康復(fù)訓(xùn)練評估能力。
[1] 胡巍,趙章琰,路知遠(yuǎn),等.無線多通道表面肌電信號采集系統(tǒng)設(shè)計[J].電子測量與儀器學(xué)報,2009,23(11):30-35.
[2] 周兵,紀(jì)曉亮,張榮,等.基于嵌入式技術(shù)的表面肌電信號采集儀設(shè)計[J].現(xiàn)代電子技術(shù),2010,33(6):55-57.
[3] 尤波,周麗娜,黃玲.實時肌電信號采集系統(tǒng)設(shè)計與探究[J].黑龍江大學(xué)工程學(xué)報,2011,02(1):72-76.
[4] 韓曉新.表面肌電信號采集電路的設(shè)計[J].計算機(jī)測量與控制,2011,19(7):1778-1780.
[5] 王建輝,張傳鑫,白冰,等.上肢康復(fù)機(jī)器人實驗平臺肌電信號采集系統(tǒng)的設(shè)計[J].電子世界,2012(11):28-30.
[6] 朱仕勇.手持式肌電信號采集系統(tǒng)設(shè)計與應(yīng)用研究[D].武漢市:武漢理工大學(xué),2013.
[7] Fang Y F, Zhu X Y, Liu H H. Development of a Surface EMG Acquisition System with Novel Electrodes Configuration and Signal Representation[A].International Conference,Icira[C].2013:405-414.
[8] 林錦榮,譚北海,謝勝利,等.基于ADS1294的表面肌電信號采集系統(tǒng)的設(shè)計[J].醫(yī)療衛(wèi)生裝備,2015,36(1):5-7.
[9] 李成凱,席旭剛,王俊偉,等.表面肌電信號采集系統(tǒng)設(shè)計[J].杭州電子科技大學(xué)學(xué)報,2015(2):34-37.
[10] Correa-Figueroa J L, Morales-Sánchez E, Huerta-Ruelas J A, et al.SEMG signal acquisition system for muscle fatigue detection[J].Revista Mexicana De Ingenieria Biomedica,2016,37(1).
Implementation of surface EMG acquisition system based on STM32
ZHU An-yang, XU Xiu-lin
TH772
:B
1009-0134(2017)07-0119-05
2017-03-06
上海市科委智能化下肢綜合評估訓(xùn)練系統(tǒng)的臨床應(yīng)用研究項目(14441905100);上海市科委俯臥式多態(tài)脊柱康復(fù)訓(xùn)練與評估系統(tǒng)的開發(fā)與關(guān)鍵技術(shù)研究項目(15441906200)
朱安陽(1989 -),男,浙江溫州人,碩士研究生,研究方向為精密醫(yī)療器械設(shè)計與檢測。