一种健身用肌肉发力情况的检测系统
2018-12-17高君龙陈玉轩宋天宇刘宇李道全
高君龙 陈玉轩 宋天宇 刘宇 李道全
摘要:人们在健身过程中由于动作不规范,往往会造成效果不理想的状况,跟有甚者会因此而受伤,给身体造成不必要的损害。为了改善这种状况,研制了一种用于检测健身的肌肉发力情况的装置。该装置通过传感器接收肌肉电位的变化,经过嵌入式处理器分析后,将肌肉发力情况以数值的形式显示在LED显示屏上,使用者可以根据显示的数值来判断先前的肌肉发力情况,以此来推断之前的动作发力是否正确,从而改善动作,最终达到最佳的健身效果。
关键词:健身;肌肉发力;检测;肌肉电信号
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)25-0270-03
随着国内健身的普及,人们愈发注重自身身体健康,对于形体要求更高,因此也需要更加科学、规范的锻炼方式及方法。很多健身初学者一开始无法把动作做规范,就会造成出力但达不到理想效果的情况,为了改善这一情况,我们研制了一种肌肉发力感应装置。通过这个装置,使用者可以随时检测自己肌肉的受刺激状况,以此来改善自己的动作,以达到理想的训练效果。
1 装置综述
1.1 装置框架和原理
本装置的原理框架如图1所示[1]。一对电极置于人体肌肉上,肌肉在发力时产生的信息经肌电传感器感知后上传给数据处理模块,最后通过显示器显示出最终结果。
根据医学知识,得到肌肉电信号IEMG和肌力成正比关系,如图2所示[2]。
可以看出,本装置分为两部分:硬件收集数据、数据处理分析。其详细实现过程为:利用硬件传感器接受数据;把数据从电流信号转化为数字信号;通过显示器显示最后的数据以图形化形式表示;通过多数据测量,获取一个成功发力的数值区间。
1.2 硬件实现模块
本系统用到的硬件主要有Arduino UNO[3],Myoware,0.96寸OLED显示屏。下面对以上设备作一简要介绍。
Arduino Uno开发板——以ATmega328 MCU控制器为基础——具备14路数字输入/输出引脚(其中6路可用于PWM輸出)、6路模拟输入、一个16MHz陶瓷谐振器、一个USB接口、一个电源插座、一个ICSP接头和一个复位按钮。它采用Atmega16U2芯片进行USB到串行数据的转换。Uno PCB的最大长度和宽度分别为2.7和2.1英寸,USB连接器和电源插座超出了以前的尺寸。4个螺丝孔让电路板能够附着在表面或外壳上。数字引脚7和8之间的距离是160密耳(0.16"),不是其他引脚间距(100密耳)的偶数倍。它包含了组成微控制器的所有结构,同时,只需要一条USB数据线连接至电脑。目前,Arduino Uno已成为Arduino主推的产品。
Arduino Uno有很多工具可供与计算机、另一个Arduino或其他微控制器通信之用。ATmega328提供了可在数字引脚0(RX)和1(TX)上进行的UART TTL(5V)串口通信。电路板上的ATmega16U2会通过USB进行该串行通信,在计算机上充当软件的虚拟通信端口。'16U2固件采用标准USB COM驱动器,无须外部驱动器。然而,在Windows上,需要1个.inf文件。Arduino软件包含1个串行监控器,使得简单的文本数据能够发送到或者从Arduino板上发出。当通过USB转串口芯片和计算机的USB连接传输数据时,电路板上的RX和TX LED会闪烁(但不适于引脚0和1上的串行通信)。SoftwareSerial库可以在Uno的任何数字引脚上进行串行通信。ATmega328还支持I2C(TWI)和SPI通信。Arduino软件包含1个线库,可简化I2C总线的使用;至于SPI通信,则使用SPI库。
Arduino可以利用Arduino软件(下载)给Arduino Uno编程。通过Tools > Board菜单选择Arduino Uno(根据电路板上的微控制器)。Arduino Uno上的ATmega328预先烧录了启动加载器,从而无须使用外部硬件编程器即可将新代码上传给它。它利用原始的STK500协议进行通信。您还可以旁路启动加载器,利用Arduino ISP等通过ICSP(在线串行编程)头为微控制器编程。
Myoware是Advancer Technologies公司的产品,如图2所示。该MyoWare肌电传感器通过检测其电势来测量肌肉活动,被称为肌电图(EMG),传统上已被用于医学研究。然而,随着不断缩小但更强大的微控制器和集成电路的出现,EMG电路和传感器已经进入各种控制系统。
该公司在产品介绍中说,当你的大脑告诉你的肌肉弹性,它把一个电信号发送给你的肌肉,开始招募电动机单位(肌纤维的捆绑产生在你的肌肉的力量)。你越弯曲,更多的运动单位被雇来产生更大的肌肉力量。运动单位的数量越多,更多的肌肉电活动增加。MyoWare将分析这个电活动和输出的模拟信号,代表如何努力让肌肉正在弯曲。MyoWare肌肉传感器是旧式肌肉传感器的最新版本,现在采用了新的可穿戴设计,可让您将生物医学传感器垫直接连接到电路板本身,摆脱那些讨厌的电缆。这个新电路板还包括一系列其他新功能,包括+ 3.1V至+ 5V的单电源电压,RAW EMG输出,极性保护电源引脚,指示灯LED和(最后)开/关开关。
整个系统的结构图如图5所示。Arduino进行数据处理,Myoware进行肌肉电数据采集,OLED显示屏对处理后的数据进行展示。MyoWare板通过测量肌肉的过滤和矫正的电活动来起作用,根据所选肌肉的活动量输出电压。Arduino通过模拟信号引脚读取Myoware传递的电信号,Arduino再通过C++程序对接收到的信号进行处理,得出结果。OLED显示屏接收来自Arduino的电信号,并通过接收到的信息进行结果显示。
1.3 软件实现
数据收集模块,MyoWare板通过测量肌肉的过滤和矫正的电活动来起作用; 根据所选肌肉的活动量输出电压。
数据转化模块,Arduino通过模拟信号引脚读取Myoware传递的电信号,Arduino再通过C++程序对接收到的信号进行处理,得出结果。主要代码如下:
if not ser.readline().isspace() and not ser.readline() == '':
t.append(t_now)#模拟数据增量流入
t_now = int(ser.readline())
m.append(t_now)#模拟数据增量流入
plt.plot(t,m,'-r')
plt.draw()
数据处理模块,通过不同群体的测量数据,根据性别、体重、肌肉量进行划分,并统一在肱二头肌处进行测量。并将肌肉松弛状态和肌肉发力状态下的信号值进行记录,并取得一个合理的取值范围。
进一步的利用函数处理数据,利用均方根值公式,如公式(1),获得一个同类型人群的合理发力电信号值,尽量减少误差,计算初始数据与所测收缩数据的差值,根据差值判断发力情况。
[Xrms=i=1NX2iN=X21+X22+...+X2NN] (1)
进一步的通过显示器显示最后的数据。主要代码如下:
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 設备测试及分析
电极片安放的位置也尤为关键,根据一块肌肉上分不同的区域,不同区域肌肉电信号也会不同,并且传感器放置的方向也尤为重要[4-5]。电极的方向应该和肌肉纤维的方向是平行的,并且应该放在肌肉的中央位置。
不能放在神经支配区,中线侧面或者肌腱区,这样测量出的信号强度会不太稳定,也不准确。
中间电极应该贴在肌肉的中央,末端电极应该贴在该块肌肉的末梢。
测试操作过程:彻底清理待测肌肉区域表皮上的污垢和油脂;将电极片安装到电极扣上;在指定肌肉的正确位置贴好传感器;连接到Arduino开发板;将时间间隔设定好,获取得到大量的数据,并用均方根公式进行整合,并画出折线图,反映出一个发力周期内的发力情况。
再通过不同群体的测量数据,根据体重、肌肉量进行划分,并统一在肱二头肌处进行测量。并将肌肉松弛状态和肌肉发力状态下的信号值进行记录,并取得一个合理的取值范围。表1是具体的测试数据。如图6至图10所示为几位健身者的测试曲线。
从上面的测试曲线和数据来看,本系统较好地实现了肌肉发力情况的测试任务。
3 结束语
随着物质生活的丰富,国人对生活品质和健康的追求会成为必然的趋势,健身作为提高生活品质和健康的一种方式,必然被越来越多的人所接受和支持。我们这个装置也就可以帮助更多的初学者少走弯路,提高健身效率,打造一个更好的自己。因此,我们这个装置在未来必然会在时代的狂潮中显露属于他的光芒,或许掀起一场健身科技热也未可知。
参考文献:
[1] 丁其川.基于表面肌电的运动意图识别方法研究及应用综述[D].中国科学院.2016.
[2] 王慧娟.神经肌肉刺激仪输出电流有效值的示值误差测量不确定度评定[J].计量与测试技术,2017(8).
[3] 蔡睿妍.Arduino的原理及应用[D].大连大学.2012.
[4] 黄成君.基于高密度阵列表面肌电的肌肉肌腱单元解析及肌力估计[D].中国科学技术大学.2017.
[5] 杨孝文.神奇的护腕传感器利用肌肉电流操控计算机[J].泸州科技,2013(8).
【通联编辑:梁书】