基于STM32的表面肌电采集系统的实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第39卷 第7期 2017-07 【119】收稿日期:2017-03-06基金项目:上海市科委智能化下肢综合评估训练系统的临床应用研究项目(14441905100);上海市科委俯卧式多态脊柱康复训练与评估系统的开发与关键技术研究项目(15441906200)作者简介:朱安阳(1989-),男,浙江温州人,硕士研究生,研究方向为精密医疗器械设计与检测。基于STM32的表面肌电采集系统的实现ImplementationofsurfaceEMGacquisitionsystembasedonSTM32朱安阳,徐秀林ZHUAn-yang,XUXiu-lin(上海理工大学医疗器械与食品学院,上海200093)摘要:针对康复训练治疗效果的评估的需要,设计了一种基于STM32的表面肌电采集系统。系统采取由主机控制和显示的主从型结构,硬件以STM32为核心,配合表面肌电信号采集模块以实现对原始的表面肌电信号的采集,再利用均方根值提取模块提取其肌电均方根值并通过USB接口传送至上位机,最终由上位机软件分析处理传送上来的肌电数据并显示。实验结果表明,系统所采集的肌电信号的准确性较高,能够满足评估康复训练治疗效果的需要。关键词:STM32;数据采集;肌电均方根值;积分肌电值中图分类号:TH772文献标识码:B文章编号:1009-0134(2017)07-0119-050引言表面肌电信号是一种伴随着肌肉活动在皮肤表面传递的生物电[1]。表面肌电信号是来源于人体自身的电信号,因此它具有直接自然的特点,其中蕴含了多种肌肉运动信息,被广泛的运用于肌肉运动、肌肉损伤诊断、康复医学以及运动体育等方面的研究。随着电子新技术和计算机技术的发展以及神经肌肉生理学研究,人们可以对肌电信号和神经肌肉功能进行更加精准的研究[2]。南京大学的周兵等人研制的便携式表面肌电信号采集仪以ARM7微处理器AT91SARM7SE512为核心,采用μC/OSⅡ操作系统,通过触摸屏控制肌电信号的采集,操作简便且性能稳定,但选用的芯片成本较高,而且由于缺少上位机的配合,不便于肌电数据的管理[3];哈尔滨理工大学的尤波等人搭建的肌电信号采集平台采用了北京阿尔泰科技发展有限公司研发的PCI8622数据采集卡,其采样通道多达32路,转换精度达16bit,可同时采集多路肌电信号且精度较高,但也使得数据采集变得复杂,不利于临床使用。针对上述情况,本文设计了一种基于STM32的低成本、低功耗、双通道的表面肌电采集系统。该系统包括上、下位机两部分,由上位机控制下位机的肌电数据的采集与传送,同时上位机还负责对采集的肌电数据进行保存、分析和显示,上位机与下位机之间通过USB接口进行数据通讯。1系统的设计与实现基于STM32的肌电采集系统设计由硬件设计与软件设计两部分组成。硬件包括原始肌电信号采集模块、肌电均方根值提取模块、STM32芯片、UART转USB模块和电源模块;软件分为下位机的STM32控制程序设计和上位机的肌电信号分析界面设计两部分。其中,下位机的STM32控制程序包括对上位机下传的命令数据的处理响应模块和肌电均方根值数据的上传模块;上位机的肌电信号分析界面包括病人信息管理模块、肌电数据分析显示模块和数据通讯模块。系统整体结构框图如图1所示。1.1硬件设计表面肌电采集系统的硬件部分由原始肌电信号采集模块、肌电均方根值提取模块、STM32芯片、UART转USB模块和电源模块组成,其具体工作流程为:原始肌电信号采集模块通过对信号进行放大滤波处理以提取原始表面肌电信号,而获得的原始肌电信号再经过均方根值提取模块的处理以提取肌电信号的均方根值,再由STM32芯片将采集到的肌电均方根值数据通过UART转USB模块传送给上位机。硬件系统的设计指标如表1所示。表1硬件设计指标采样频率范围信号放大倍数采样率分辨率20Hz~500Hz5×104~5×1052000Hz0.2μV【120】 第39卷 第7期 2017-071.1.1电源模块本系统通过电源适配器将220V市电转化为直流+9V供电。为确保STM32芯片的正常工作,选用1117-3.3输出+3.3V电压作为STM32芯片的工作电源;采用MAX660输出-5V电压以及LM2576-5输出的+5V电压作为肌电采集模块中各芯片的供电电源。1.1.2原始肌电信号采集模块表面肌电信号是一种微弱的电信号,一般只有微伏级,其幅值范围一般在0-5000μV,下肢瘫痪者的肌电信号则更加微弱,一般在200μV以下。因此本系统采用前、中、后三级放大电路,并设计了增益调节电路,可选择性调节增益倍数。前级放大电路选用AD8220差分放大芯片用于提高输入阻抗,降低共模干扰,放大倍数为200倍;中级放大结合滤波电路实现,放大倍数为25倍;后级放大电路采用同相放大器,放大10倍;增益调节电路以CD4052芯片为核心,由STM32芯片控制其第9和第10引脚的高低电平的输入以选择采集信号的放大倍数。根据两输入引脚的高低电平的组合,共有四种放大倍数可供选择:1、2、5、10倍。采集表面肌电信号时会同时采集到各种噪声,包括人体内部组织的各种生物电信号、采集系统设备本身噪声以及周围环境噪声等,为保留有用的肌电信号,在设计肌电信号采集模块时还需要滤除噪声,为此需要结合噪声与肌电信号的频率特征来设计相应的滤波电路。人体表面肌电信号的频谱范围为0~1000Hz,其主要能量集中在200Hz以下(占80%以上),而作为肌电采集的主要干扰的心电信号的频率范围在0.05~100Hz,其频谱能量集中于0.25~20Hz的范围。因此,硬件系统选取20~500Hz频段的肌电信号作为采集目标,分别设计了截止频率为20Hz的一阶高通滤波器与截止频率为500Hz的二阶低通滤波器。此外,由于硬件系统采用市电电压供电,在肌电采集时不可避免的受到50Hz工频干扰,需采用50Hz陷波电路滤除。表面肌电信号处理流程如图2所示。图2肌电信号处理流程1.1.3肌电均方根值提取模块肌电信号的时域分析主要包括原始肌电信号、积分肌电值和均方根值。其中,肌电均方根值体现了肌肉负荷性因素和肌肉本身生理生化过程之间的内在联系,直观的反映了肌电信号的幅值特征,被广泛的的应用于运动医学和人机工程学领域的肌肉功能评估。因此,本系统选择肌电均方根值作为STM32芯片最终采集与上传的肌电数据,设计了肌电均方根值提取模块。它能够很好的将肌电信号波形进行整流滤波,并提取肌电信号的均方根值作为有效值,这既有利于肌电信号的观测,也便于后续的肌电信号处理。肌电均方根值提取模块如图3所示。图3均方根值提取模块图1肌电采集系统整体框图第39卷 第7期 2017-07 【121】该模块以AD536A真有效值提取芯片为核心,该芯片可以直接计算输入的任何复杂波形的真有效值。其1引脚为电压信号输入端,连接肌电信号采集模块的输出端,以导入原始肌电信号;根据输入的肌电信号的特征,在提取其有效值时,需要在4引脚与14引脚之间外接一个滤波电容,在这种连接中,由于滤波电容的作用,当输入的交流电压信号频率较低时,会出现微小误差,而当输入高频信号时,则可获得高精度的直流输出;8引脚输出的有效值再经过缓冲处理,最终由缓冲输出端6引脚导出肌电有效值。1.1.4STM32芯片硬件系统所用的核心芯片型号为STM32F103RC,使用高性能的32位的ARMCorrex-M3内核,最高工作频率可达72MHz,内置高速存储器(高达256k字节的闪存和32k字节的SRAM)。作为一款低功耗高速单片机,它的外设资源丰富,包括2个12位的ADC、3个通用16位定时器和一个PWM高级定时器,还包含标准和先进的通信接口:5个USART和1个CAN。它涵盖了本肌电采集系统所需要的所有外设,并且在存储容量和运算速度方面很好的满足了肌电采集系统的要求。在本系统中,STM32芯片作为肌电均方根值提取模块与上位机之间的中枢纽带,一方面它要接受上位机的控制如肌电采集的开断、肌电采集通道的选择、采集信号的放大倍数的选择等,另一方面它将采集到的肌电均方根数据传递给上位机。1.1.5UART转USB模块本肌电采集系统包含上下位机两部分,两者之间存在数据通讯:一方面上位机以向下发送命令数据的方式控制下位机的肌电采集,另一方面下位机需要将采集到的肌电数据上传给上位机以便后者分析处理肌电数据。USB接口是PC与外部设备进行数据交互时广泛使用的通讯接口,因此为了方便上下位机的数据通讯,本系统采用USB接口方式连接硬件采集系统与PC端,而STM32芯片自身并未配备USB通信接口,需要外接UART转USB模块。UART转USB模块采用CP2102芯片,它是一种高度集成的UART转USB桥接器。该芯片包含一个USB2.0全速功能控制器、USB收发器、振荡器和带有全部的调制解调器控制信号的异步串行数据总线(UART)。本设计添加退耦电容,电源指示等外围元件,将UART升级为USB接口,其通讯速率可达1Mbps。1.2软件设计1.2.1上下位机数据通讯协议上下位机数据通讯协议规定了上下位机通讯时每帧数据的传输格式,为上下位机的串口通讯编程提供了必要依据。该数据通讯协议包括帧头、设备号、采集通道号、数据类型、长度、命令(数据)序列、效验。其中,帧头标识一帧数据的开始,用于判别当前帧数据是否是有效,而只有在数据有效时才会进一步的解析当前帧数据,提取有用信息;本肌电采集系统为双通道,通过通道号来选择当前肌电采集的通道;上下位机数据通讯是双向的,因此其传递的数据也分为两种即肌电均方根数据和命令数据,由通讯协议中的数据类型来标识。数据通讯协议格式如表2所示。1.2.2STM32控制程序STM32控制程序的编写采用C语言,通过库函数开发方式编程即利用由ST公司针对STM32单片机提供的函数库来配置STM32各种外设的寄存器,从而摆脱最底层的寄存器操作,便于程序的开发与后期维护。STM32控制程序包括对上位机下传的命令数据的处理响应模块和肌电均方根数据的上传模块。STM32控制程序流程图如图4所示。命令数据的处理响应模块采用串口中断的方式接收,解析上位机下传的数据并响应。当上位机下传命令数据时,将触发串口中断而执行中断函数。中断函数将根据事先制定的数据通讯协议执行对一帧命令数据的判别与解析,首先是对帧头的校对,如果符合协议设置的表2通讯协议格式长度(byte)名称说明2帧头表示一帧的开始,用0x55,0xAA来表示1设备号设备的编号,表示各种不同的设备1通道号设备的采集通道编号1类型决定数据类型:命令或肌电数据1长度命令/肌电数据的长度(Length)length命令/肌电数据命令或肌电数据内容,由类型来决定1效验除帧头外整帧的效验值【122】 第39卷 第7期 2017-07帧头,则证明所接收的数据为命令数据,继而进一步解析命令并响应。肌电均方根值数据的上传模块负责采集与上传肌电均方根数据。该模块采用AD-DMA的方式将模数转换后的肌电均方根数据直接导入到STM32内存缓冲区,每次采集4kB的肌电均方根数据,采集周期约为1S,定时器TIM1配置为PWM输出模式,用于控制AD1的采样频率(2000Hz);肌电均方根数据的上传采用UART-DMA方式将STM32内存缓冲区中的4k数据传递至UART,再通过UART转USB模块上传至上位机。1.2.3肌电信号分析界面上位机软件采用C++,通过MFC软件设计肌电信号分析界面,实现了上位机对下位机肌电采集的控制以及肌电均方根数据的分析和显示。该界面包括病人信息管理模块、数据通讯模块和肌电数据分析模块。在病人信息管理模块中可以进行患者编号、姓名、性别和年龄等基本信息的创建与修改,这部分信息将独立显示并自动保存,而采集到的病人的肌电数据也将相应的保存在以病患信息命名的目录的文件夹下,以便于管理。上位机的串口通讯模块采用基于WindowsAPI的串口编程方法,编写适合本肌电采集系统的串口类,将串口操作的一般步骤都封装在串口类中,通过创建串口类对象的方式完成打开与配置串口、读写串口、开启与关闭串口等基本操作。此外,

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功