王鋒,宮玉琳,胡命嘉
(長春理工大學 電子信息工程學院,長春 130022)
sEMG是肌肉多個運動單元產(chǎn)生的動作電位在皮膚表面綜合疊加的結(jié)果。表面肌電信號的微弱到只有1mV左右大小,并且有用的信號頻率在20~500Hz之間,檢測難度非常大。但是肌電信號的幅值與肌肉收縮的力度成正比,并且一般比肢體運動提前約30~150ms產(chǎn)生,sEMG在眾多領域都有很高的研究價值。在醫(yī)學方面,可以利用sEMG對病人病情做出準確判斷或者是制定康復醫(yī)療計劃;在體育科學,可以實現(xiàn)對運動員身體狀況或者肌肉發(fā)力方式做出評估;在人工智能領域,利用肌電信號可以實現(xiàn)更好的人機交互。
現(xiàn)在肌電信號的檢測還處于開始階段,但是通過查閱相關文獻和資料發(fā)現(xiàn)無論是在國內(nèi)還是國外,都有越來越多的學者在研究如何對肌電信號進行精確的檢測和如何對檢測到的肌電信號進行有效的算法分析、特征提取。隨著科學技術(shù)的不斷發(fā)展,在表面肌電信號檢測方向會有更高的技術(shù)突破以及更廣的應用領域。
sEMG采集系統(tǒng)硬件結(jié)構(gòu)如圖1所示,主要由肌電電極、信號差分放大電路、Arduino開發(fā)板和藍牙模塊四部分組成。利用這套采集系統(tǒng)可以把微弱的1mV表面肌電信號放大到便于檢測的0~3.3V,濾掉工頻50Hz和20~500Hz之外無用的頻譜成分,把模擬信號轉(zhuǎn)換成數(shù)字信號,然后用藍牙把數(shù)據(jù)傳到上位機進行處理分析[2]。
圖1 sEMG采集系統(tǒng)硬件設計框圖
電極和信號差分放大部分
電極是肌電信號檢測最開始也是最重要的部分,電極性能的好壞將直接影響到整套采集系統(tǒng)的采集精度。與傳統(tǒng)的針電極肌電檢測不同,采用了放在皮膚表面的貼片式電極,具有對皮膚損傷小、穿戴方便的特點。實驗表明采用Ag/AgCl作為表面電極能夠得到穩(wěn)定的肌電信號,并且在測量腦電、心電圖的醫(yī)學儀器上也都使用了這種材料制作成的電極,因此采用了Ag/AgCl作為表面電極[3]。
一般肌電信號的電極都是由三片構(gòu)成,為了最大限度的降低皮膚表面噪聲信號的干擾,采用了如圖2所示的差分放大電路,將電極1與電極2做差分處理,電極3作為參考電極,這樣就會得到比較純凈的sEMG信號。經(jīng)過測試,將電阻R1電容C1的值分別設定為100Ω和100μf,AD8220能將肌電信號放大1000倍左右,正好在AD采集的合理范圍之內(nèi)。
圖2 差分放大電路
將模擬信號轉(zhuǎn)換成數(shù)字信號是每個采集系統(tǒng)的必要部分,使用了Arduino開發(fā)板作為信號采集卡。Arduino是一個方便、快捷的開源電子平臺,使用Arduino IDE軟件作為開發(fā)平臺,與傳統(tǒng)的STM32系列單片機相比,Arduino價格便宜、編程方便、更容易上手。Arduino的接口數(shù)量以及內(nèi)部提供的10位精度的A/D轉(zhuǎn)換器完全滿足本系統(tǒng)的需求。
經(jīng)過前端的差分放大處理后得到的表面肌電信號并不是直接可用的,還需要對其進行濾波處理,濾除50Hz的工頻干擾以及20~500Hz之外的無用信號,使用模擬電路進行濾波,但發(fā)現(xiàn)效果并不是特別理想,尤其是50Hz的工頻干擾,很難做到根本性濾除。結(jié)合數(shù)字濾波后,對比發(fā)現(xiàn)得到的肌電信號幅度變化與肌肉動作規(guī)律具有很高的一致性,成功濾除了無用的頻譜成分。
Arduino開發(fā)板內(nèi)部集成了RS232串口芯片,采集到的數(shù)據(jù)可以通過RS232串口數(shù)據(jù)線傳送到PC端,為提高采集設備的便攜性,采用了無線藍牙代替串口線的解決方案。使用的藍牙模塊型號為HC-05,HC-05模塊采用了藍牙4.0標準,最高傳輸速率為24Mbit/s,傳輸距離能達到10m。將Arduino端的串口RX、TX引腳分別與藍牙的TX、RX引腳相連,在PC端添加一個USB轉(zhuǎn)TTL的電平轉(zhuǎn)換模塊,再連接一個藍牙模塊作為信號的接收端就可以正常工作,使用藍牙模塊進行無線傳輸不需要額外編程,只需要配置好發(fā)送端與接收端兩個藍牙模塊的連接參數(shù)即可。經(jīng)過測試,采用藍牙進行數(shù)據(jù)傳輸與普通的串口數(shù)據(jù)線相比,并不存在數(shù)據(jù)丟失的現(xiàn)象。
圖3 HC-05藍牙模塊
LabVIEW是美國國家儀器公司研制一種程序開發(fā)平臺,與其他軟件開發(fā)平臺不同,LabVIEW主要由前面板的顯示界面和后面板的程序框圖組成,后面板采用圖形化的編程方法,前面板主要用作數(shù)據(jù)輸入和顯示,本系統(tǒng)上位機的功能框圖如圖4所示[4]。
圖4 上位機功能框圖
串口接收部分主要是調(diào)用LabVIEW的VISA函數(shù)編寫的,VISA函數(shù)可以把RS232串口協(xié)議的通信數(shù)據(jù)解析出來轉(zhuǎn)換成對應的字符串,在VISA函數(shù)中配置好串口協(xié)議所需要的串口號、波特率、奇偶位、停止位等參數(shù)就可以與下位機實現(xiàn)串口通信,如圖5所示。
圖5 串口部分程序圖
將串口接收的ASCII碼轉(zhuǎn)換成十進制數(shù)字后,利用波形顯示控件可以將數(shù)據(jù)以波形的形式顯示出來,如圖6所示,通過波形圖可以直觀地看出肌肉的運動狀態(tài)。圖6的左上角是串口參數(shù)配置部分,左下角是四個功能按鍵。下位機和串口都配置好后,點擊第一個按鍵“開始采集”,系統(tǒng)開始采集sEMG信號并通過波形圖實時顯示出來,點擊“保存數(shù)據(jù)”系統(tǒng)會新建一個Excel文件并將采集的數(shù)據(jù)以數(shù)組的形式保存到Excel文件中。第三個按鍵是對Excel文件中的數(shù)據(jù)進行算法分析,接下來的按鍵是結(jié)束程序運行。圖7是LabVIEW波形與數(shù)據(jù)保存部分程序圖,最左邊是一個比較函數(shù),當輸入字節(jié)數(shù)大于零時,函數(shù)輸出為1,即開始運行條件框圖內(nèi)的程序。圖中標注的字符串轉(zhuǎn)數(shù)值函數(shù)可以將串口中的字符串轉(zhuǎn)換成十進制數(shù)值,這樣后面再連接一個波形圖控件就可以實現(xiàn)數(shù)據(jù)波形的實時顯示。數(shù)組插入部分是將接收到的每一個十進制數(shù)值以數(shù)組元素的形式插入到數(shù)組中,這樣所有的數(shù)據(jù)就形成了一個大的一位數(shù)組,方便了后續(xù)的保存、處理。圖7最右邊是數(shù)據(jù)保存部分,用到的是將數(shù)據(jù)保存到電子表格函數(shù),從圖中可以看到數(shù)據(jù)被保存到了電腦D盤名為semg的電子表格中。
圖6 上位機界面
圖7 波形與數(shù)據(jù)保存部分程序圖
Arduino的AD采樣頻率為500Hz,這就意味著下位機在1秒的時間內(nèi)會上傳500個數(shù)據(jù),面對成千上萬個數(shù)據(jù),很難利用LabVIEW進行有效的數(shù)據(jù)分析。但LabVIEW內(nèi)置MATLAB Script節(jié)點,在MATLAB中編寫的數(shù)據(jù)分析程序運行無誤后,將程序代碼復制到LabVIEW的MATLAB Script節(jié)點中,就可以實現(xiàn)LabVIEW與MATLAB混合編程,方便高效,圖8是MATLAB Script節(jié)點程序圖,鼠標點擊前面板的數(shù)據(jù)分析按鈕,便開始執(zhí)行MATLAB Script節(jié)點中的程序。
圖8 MATLAB Script節(jié)點程序圖
采集到的sEMG總會有夾雜著電路中的一些噪音成分,為了能夠準確地判別出每次動作的起止點,采取了移動平均法和閾值法相結(jié)合的方法對動作起止點進行檢測,從而得出動作的有效數(shù)據(jù)段。首先對原始sEMG信號進行滑動求和,滑動長度N=50,計算公式如下:
式中,sEMGn為原始的信號,sEMGs是每一個原始信號與之后的49個數(shù)據(jù)之和,公式(2)中sEMGan是50個數(shù)據(jù)的平均值,設定10為閾值,如果sEMGan大于10,則判定第n+24(取中間值)個數(shù)據(jù)為肌肉收縮產(chǎn)生的數(shù)據(jù)。這種處理方法忽略了前24和后50個數(shù)據(jù),由于系統(tǒng)的采樣頻率很高,造成的影響可以忽略不計。
圖9是采集到的原始數(shù)據(jù)的圖像,圖10是經(jīng)過算法分析得到肌肉每次運動的起止點后畫出的數(shù)據(jù)圖像,比原始數(shù)據(jù)更加直觀明了。
圖9 原始數(shù)據(jù)圖像
圖10 處理后的數(shù)據(jù)圖像
圖11列出了每一次肌肉做收縮運動的起止點、總能量和平均能量信息,可以分析出肌肉力度以及肌肉健康度、疲勞度等信息,其計算方法為:
式中,ei、si代表肌肉每次動作的起止點,sEMGsumi代表每次動作的總能量,公式4中sEMGai代表每次動作的平均能量信息。
在時域分析中,sEMG的均方根能夠反映肌肉之間肢體運動的一個分布情況以及肢體運動過程中各肌群肌力的大?。?]。其計算公式為:
式中,N為采樣點,sEMGn代表第n個采樣點信息。
圖11 每次動作數(shù)據(jù)分析
上文主要介紹了sEMG采集系統(tǒng)的硬件設計和上位機軟件編寫過程,本節(jié)主要做了一些測試工作。首先是進行數(shù)據(jù)校準,把貼片電極放在肌肉上,使肌肉放松,這時會檢測到一組幅度變化不大的肌電信號數(shù)據(jù),通過修改Arduino開發(fā)板內(nèi)部程序使這組數(shù)據(jù)變成零,即把肌肉在放松狀態(tài)時的輸出的數(shù)據(jù)調(diào)為零,這樣隨后檢測到的數(shù)據(jù)就是肌肉在運動時的電信號變化[6]。
圖12 無線sEMG采集系統(tǒng)實物圖
把貼片電極分別放在手臂和臉部的側(cè)咬肌上經(jīng)過大量的測試發(fā)現(xiàn),握拳時使用不同的力度,手臂上的肌電信號就會有不同的幅度值;牙齒的咬合力度不同,也會采集到不同的幅度值,并且兩者都是成正比關系[7],圖12是無線sEMG采集系統(tǒng)的整體實物圖。
本采集系統(tǒng)成功地檢測到了皮膚表面微弱的交流信號的幅度變化,并且通過LabVIEW上位機實現(xiàn)了肌肉力度與信號強度的建模分析。但肌電信號的應用不僅如此,由于時間、精力有限,文中只提到了一路sEMG數(shù)據(jù)分析,后續(xù)會設計一種多通道的sEMG采集系統(tǒng)放在手臂上,根據(jù)手臂多通道sEMG變化做出手勢動作識別[8]。將多個傳感器放在病人的肌肉病變部位,就能準確檢測到病人的肌肉病變情況,這些都是以后要重要的研究內(nèi)容。