高君龍 陳玉軒 宋天宇 劉宇 李道全
摘要:人們?cè)诮∩磉^程中由于動(dòng)作不規(guī)范,往往會(huì)造成效果不理想的狀況,跟有甚者會(huì)因此而受傷,給身體造成不必要的損害。為了改善這種狀況,研制了一種用于檢測(cè)健身的肌肉發(fā)力情況的裝置。該裝置通過傳感器接收肌肉電位的變化,經(jīng)過嵌入式處理器分析后,將肌肉發(fā)力情況以數(shù)值的形式顯示在LED顯示屏上,使用者可以根據(jù)顯示的數(shù)值來判斷先前的肌肉發(fā)力情況,以此來推斷之前的動(dòng)作發(fā)力是否正確,從而改善動(dòng)作,最終達(dá)到最佳的健身效果。
關(guān)鍵詞:健身;肌肉發(fā)力;檢測(cè);肌肉電信號(hào)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)25-0270-03
隨著國內(nèi)健身的普及,人們愈發(fā)注重自身身體健康,對(duì)于形體要求更高,因此也需要更加科學(xué)、規(guī)范的鍛煉方式及方法。很多健身初學(xué)者一開始無法把動(dòng)作做規(guī)范,就會(huì)造成出力但達(dá)不到理想效果的情況,為了改善這一情況,我們研制了一種肌肉發(fā)力感應(yīng)裝置。通過這個(gè)裝置,使用者可以隨時(shí)檢測(cè)自己肌肉的受刺激狀況,以此來改善自己的動(dòng)作,以達(dá)到理想的訓(xùn)練效果。
1 裝置綜述
1.1 裝置框架和原理
本裝置的原理框架如圖1所示[1]。一對(duì)電極置于人體肌肉上,肌肉在發(fā)力時(shí)產(chǎn)生的信息經(jīng)肌電傳感器感知后上傳給數(shù)據(jù)處理模塊,最后通過顯示器顯示出最終結(jié)果。
根據(jù)醫(yī)學(xué)知識(shí),得到肌肉電信號(hào)IEMG和肌力成正比關(guān)系,如圖2所示[2]。
可以看出,本裝置分為兩部分:硬件收集數(shù)據(jù)、數(shù)據(jù)處理分析。其詳細(xì)實(shí)現(xiàn)過程為:利用硬件傳感器接受數(shù)據(jù);把數(shù)據(jù)從電流信號(hào)轉(zhuǎn)化為數(shù)字信號(hào);通過顯示器顯示最后的數(shù)據(jù)以圖形化形式表示;通過多數(shù)據(jù)測(cè)量,獲取一個(gè)成功發(fā)力的數(shù)值區(qū)間。
1.2 硬件實(shí)現(xiàn)模塊
本系統(tǒng)用到的硬件主要有Arduino UNO[3],Myoware,0.96寸OLED顯示屏。下面對(duì)以上設(shè)備作一簡(jiǎn)要介紹。
Arduino Uno開發(fā)板——以ATmega328 MCU控制器為基礎(chǔ)——具備14路數(shù)字輸入/輸出引腳(其中6路可用于PWM輸出)、6路模擬輸入、一個(gè)16MHz陶瓷諧振器、一個(gè)USB接口、一個(gè)電源插座、一個(gè)ICSP接頭和一個(gè)復(fù)位按鈕。它采用Atmega16U2芯片進(jìn)行USB到串行數(shù)據(jù)的轉(zhuǎn)換。Uno PCB的最大長度和寬度分別為2.7和2.1英寸,USB連接器和電源插座超出了以前的尺寸。4個(gè)螺絲孔讓電路板能夠附著在表面或外殼上。數(shù)字引腳7和8之間的距離是160密耳(0.16"),不是其他引腳間距(100密耳)的偶數(shù)倍。它包含了組成微控制器的所有結(jié)構(gòu),同時(shí),只需要一條USB數(shù)據(jù)線連接至電腦。目前,Arduino Uno已成為Arduino主推的產(chǎn)品。
Arduino Uno有很多工具可供與計(jì)算機(jī)、另一個(gè)Arduino或其他微控制器通信之用。ATmega328提供了可在數(shù)字引腳0(RX)和1(TX)上進(jìn)行的UART TTL(5V)串口通信。電路板上的ATmega16U2會(huì)通過USB進(jìn)行該串行通信,在計(jì)算機(jī)上充當(dāng)軟件的虛擬通信端口。'16U2固件采用標(biāo)準(zhǔn)USB COM驅(qū)動(dòng)器,無須外部驅(qū)動(dòng)器。然而,在Windows上,需要1個(gè).inf文件。Arduino軟件包含1個(gè)串行監(jiān)控器,使得簡(jiǎn)單的文本數(shù)據(jù)能夠發(fā)送到或者從Arduino板上發(fā)出。當(dāng)通過USB轉(zhuǎn)串口芯片和計(jì)算機(jī)的USB連接傳輸數(shù)據(jù)時(shí),電路板上的RX和TX LED會(huì)閃爍(但不適于引腳0和1上的串行通信)。SoftwareSerial庫可以在Uno的任何數(shù)字引腳上進(jìn)行串行通信。ATmega328還支持I2C(TWI)和SPI通信。Arduino軟件包含1個(gè)線庫,可簡(jiǎn)化I2C總線的使用;至于SPI通信,則使用SPI庫。
Arduino可以利用Arduino軟件(下載)給Arduino Uno編程。通過Tools > Board菜單選擇Arduino Uno(根據(jù)電路板上的微控制器)。Arduino Uno上的ATmega328預(yù)先燒錄了啟動(dòng)加載器,從而無須使用外部硬件編程器即可將新代碼上傳給它。它利用原始的STK500協(xié)議進(jìn)行通信。您還可以旁路啟動(dòng)加載器,利用Arduino ISP等通過ICSP(在線串行編程)頭為微控制器編程。
Myoware是Advancer Technologies公司的產(chǎn)品,如圖2所示。該MyoWare肌電傳感器通過檢測(cè)其電勢(shì)來測(cè)量肌肉活動(dòng),被稱為肌電圖(EMG),傳統(tǒng)上已被用于醫(yī)學(xué)研究。然而,隨著不斷縮小但更強(qiáng)大的微控制器和集成電路的出現(xiàn),EMG電路和傳感器已經(jīng)進(jìn)入各種控制系統(tǒng)。
該公司在產(chǎn)品介紹中說,當(dāng)你的大腦告訴你的肌肉彈性,它把一個(gè)電信號(hào)發(fā)送給你的肌肉,開始招募電動(dòng)機(jī)單位(肌纖維的捆綁產(chǎn)生在你的肌肉的力量)。你越彎曲,更多的運(yùn)動(dòng)單位被雇來產(chǎn)生更大的肌肉力量。運(yùn)動(dòng)單位的數(shù)量越多,更多的肌肉電活動(dòng)增加。MyoWare將分析這個(gè)電活動(dòng)和輸出的模擬信號(hào),代表如何努力讓肌肉正在彎曲。MyoWare肌肉傳感器是舊式肌肉傳感器的最新版本,現(xiàn)在采用了新的可穿戴設(shè)計(jì),可讓您將生物醫(yī)學(xué)傳感器墊直接連接到電路板本身,擺脫那些討厭的電纜。這個(gè)新電路板還包括一系列其他新功能,包括+ 3.1V至+ 5V的單電源電壓,RAW EMG輸出,極性保護(hù)電源引腳,指示燈LED和(最后)開/關(guān)開關(guān)。
整個(gè)系統(tǒng)的結(jié)構(gòu)圖如圖5所示。Arduino進(jìn)行數(shù)據(jù)處理,Myoware進(jìn)行肌肉電數(shù)據(jù)采集,OLED顯示屏對(duì)處理后的數(shù)據(jù)進(jìn)行展示。MyoWare板通過測(cè)量肌肉的過濾和矯正的電活動(dòng)來起作用,根據(jù)所選肌肉的活動(dòng)量輸出電壓。Arduino通過模擬信號(hào)引腳讀取Myoware傳遞的電信號(hào),Arduino再通過C++程序?qū)邮盏降男盘?hào)進(jìn)行處理,得出結(jié)果。OLED顯示屏接收來自Arduino的電信號(hào),并通過接收到的信息進(jìn)行結(jié)果顯示。
1.3 軟件實(shí)現(xiàn)
數(shù)據(jù)收集模塊,MyoWare板通過測(cè)量肌肉的過濾和矯正的電活動(dòng)來起作用; 根據(jù)所選肌肉的活動(dòng)量輸出電壓。
數(shù)據(jù)轉(zhuǎn)化模塊,Arduino通過模擬信號(hào)引腳讀取Myoware傳遞的電信號(hào),Arduino再通過C++程序?qū)邮盏降男盘?hào)進(jìn)行處理,得出結(jié)果。主要代碼如下:
if not ser.readline().isspace() and not ser.readline() == '':
t.append(t_now)#模擬數(shù)據(jù)增量流入
t_now = int(ser.readline())
m.append(t_now)#模擬數(shù)據(jù)增量流入
plt.plot(t,m,'-r')
plt.draw()
數(shù)據(jù)處理模塊,通過不同群體的測(cè)量數(shù)據(jù),根據(jù)性別、體重、肌肉量進(jìn)行劃分,并統(tǒng)一在肱二頭肌處進(jìn)行測(cè)量。并將肌肉松弛狀態(tài)和肌肉發(fā)力狀態(tài)下的信號(hào)值進(jìn)行記錄,并取得一個(gè)合理的取值范圍。
進(jìn)一步的利用函數(shù)處理數(shù)據(jù),利用均方根值公式,如公式(1),獲得一個(gè)同類型人群的合理發(fā)力電信號(hào)值,盡量減少誤差,計(jì)算初始數(shù)據(jù)與所測(cè)收縮數(shù)據(jù)的差值,根據(jù)差值判斷發(fā)力情況。
[Xrms=i=1NX2iN=X21+X22+...+X2NN] (1)
進(jìn)一步的通過顯示器顯示最后的數(shù)據(jù)。主要代碼如下:
Adafruit_SSD1306 display(OLED_RESET);
voidloop(){
int a=0;
a = analogRead(17);
Serial.println(a);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(50,50);
display.clearDisplay();
display.println(a);
display.display();
delay(1);}
2 設(shè)備測(cè)試及分析
電極片安放的位置也尤為關(guān)鍵,根據(jù)一塊肌肉上分不同的區(qū)域,不同區(qū)域肌肉電信號(hào)也會(huì)不同,并且傳感器放置的方向也尤為重要[4-5]。電極的方向應(yīng)該和肌肉纖維的方向是平行的,并且應(yīng)該放在肌肉的中央位置。
不能放在神經(jīng)支配區(qū),中線側(cè)面或者肌腱區(qū),這樣測(cè)量出的信號(hào)強(qiáng)度會(huì)不太穩(wěn)定,也不準(zhǔn)確。
中間電極應(yīng)該貼在肌肉的中央,末端電極應(yīng)該貼在該塊肌肉的末梢。
測(cè)試操作過程:徹底清理待測(cè)肌肉區(qū)域表皮上的污垢和油脂;將電極片安裝到電極扣上;在指定肌肉的正確位置貼好傳感器;連接到Arduino開發(fā)板;將時(shí)間間隔設(shè)定好,獲取得到大量的數(shù)據(jù),并用均方根公式進(jìn)行整合,并畫出折線圖,反映出一個(gè)發(fā)力周期內(nèi)的發(fā)力情況。
再通過不同群體的測(cè)量數(shù)據(jù),根據(jù)體重、肌肉量進(jìn)行劃分,并統(tǒng)一在肱二頭肌處進(jìn)行測(cè)量。并將肌肉松弛狀態(tài)和肌肉發(fā)力狀態(tài)下的信號(hào)值進(jìn)行記錄,并取得一個(gè)合理的取值范圍。表1是具體的測(cè)試數(shù)據(jù)。如圖6至圖10所示為幾位健身者的測(cè)試曲線。
從上面的測(cè)試曲線和數(shù)據(jù)來看,本系統(tǒng)較好地實(shí)現(xiàn)了肌肉發(fā)力情況的測(cè)試任務(wù)。
3 結(jié)束語
隨著物質(zhì)生活的豐富,國人對(duì)生活品質(zhì)和健康的追求會(huì)成為必然的趨勢(shì),健身作為提高生活品質(zhì)和健康的一種方式,必然被越來越多的人所接受和支持。我們這個(gè)裝置也就可以幫助更多的初學(xué)者少走彎路,提高健身效率,打造一個(gè)更好的自己。因此,我們這個(gè)裝置在未來必然會(huì)在時(shí)代的狂潮中顯露屬于他的光芒,或許掀起一場(chǎng)健身科技熱也未可知。
參考文獻(xiàn):
[1] 丁其川.基于表面肌電的運(yùn)動(dòng)意圖識(shí)別方法研究及應(yīng)用綜述[D].中國科學(xué)院.2016.
[2] 王慧娟.神經(jīng)肌肉刺激儀輸出電流有效值的示值誤差測(cè)量不確定度評(píng)定[J].計(jì)量與測(cè)試技術(shù),2017(8).
[3] 蔡睿妍.Arduino的原理及應(yīng)用[D].大連大學(xué).2012.
[4] 黃成君.基于高密度陣列表面肌電的肌肉肌腱單元解析及肌力估計(jì)[D].中國科學(xué)技術(shù)大學(xué).2017.
[5] 楊孝文.神奇的護(hù)腕傳感器利用肌肉電流操控計(jì)算機(jī)[J].瀘州科技,2013(8).
【通聯(lián)編輯:梁書】