基于TMS320F28335的脊柱康复控制系统
2018-09-14刘吉永徐秀林胡秀枋安美君王固兵
刘吉永,徐秀林,胡秀枋,安美君,王固兵
基于TMS320F28335的脊柱康复控制系统
刘吉永1,徐秀林1,胡秀枋1,安美君2,王固兵1
(1. 上海理工大学 医疗器械与食品学院,上海 200093;2. 上海健康医学院,上海 200093)
本研究开发了一种基于爬行运动的脊柱康复训练控制系统,该系统包括爬行机构,电机控制电路及控制软件等。通过6个电机为训练设备的不同训练需要提供动力,下位机采用TMS320F28335为控制核心,使用QT设计上位机用户端,实现了爬行训练的同步,交替和矫正训练。本文实验结果表明,该运动控制系统可靠性良好,满足脊柱疾病患者重复性康复训练的需求。
脊柱康复;控制系统;TMS320F28335;QT
0 引言
随着生活节奏的加快,电脑以及智能手机的广泛应用,使人们的颈椎及脊柱的发病率逐年增加。研究显示,30岁以下的发病者呈快速增长的趋势,脊柱疾病不再只是中老年人的常见病,而是越来越趋于年轻化。儿童青少年中最常见的脊柱畸形,在10到16岁年龄段的发病率高达2%~3%,女生占80%[1]。脊柱具有支持躯干、保护内脏、保护脊髓和进行运动的功能。因此,对脊柱的康复治疗非常迫切。
脊柱康复的传统方法是牵引,手术治疗等。研究显示,爬行对于脊柱疾病的康复有着很大的作用。但由于爬行对于场地的要求和病人的病情存在差异等因素的限制[2]。因此,采用爬行器进行训练是一种良好的训练方法,但目前市面上的爬行训练器功能低下,只能实现单一的主动爬行运动,无法实现被动的运动,更不具备对运动进行分析的功能。以前有少量的被动训练装置,大多采用固定电机的速度和运行距离的方式,不能针对不同病情的病人提供定制化的服务[3-4]。
TMS320F28335控制芯片支持浮点运算,可精确控制多路电机[5]。本研究基于其高效的性能结合QT开发用户软件的快捷和简洁,设计并开发出了脊柱康复训练的控制系统,用于对脊柱的康复训练。该系统克服了现有脊柱康复训练设备的缺点,既可以实现爬行姿态双侧的主动和被动训练,也能用于单侧的加强训练
其结构由机械骨骼实现,可提供不同身高,不同体重的病人进行训练。
1 功能及性能指标
本文研制的脊柱康复训练仪实物如图1所示,训练时,设备由电机将床体升起,患者双手放在扶手上双脚放在脚踏板上;根据患者的体型调节好腹部的前后位置和上下位置;使患者膝部放在合适的位置,进行主动或者被动训练。主动训练时,由患者拉动训练把手进行同步和交替运动。被动训练时,由手部驱动电机带动把手和下肢的膝垫进行同步和交替运动,矫正训练由安装在尾部的步进电机带动患者进行侧弯矫正。
图1 脊柱康复训练仪实物图
本研究设计的脊柱康复运动控制系统,能实现对主动运动和被动运动的控制及切换。主动训练主要针对患者病情较轻的情况,在训练时患者可以主动拉动训练把手进行康复训练。被动训练则由电机带动进行运动,训练时实现位置可调,速度可调,角度可调。具体实现如下:
(1)被动训练的交替运动和同步运动均由2个直流无刷电机驱动,彼此独立实现驱动。每种运动包括跪撑爬行,攀高爬行,俯式爬行的训练模式。
(2)为满足不同患者对训练时间的要求,每种训练都有10,20,30分钟的选择项,同时提供了自选时间。
(3)针对不同病人的病情设置了不同的训练角度,跪撑爬行角度为0度,攀高爬行角度在0-20度可选,俯式爬行角度在–15-0度可选
上述参数的设置均在上位机界面实现,然后由串口发送给下位机来实现具体的运动。
2 运动控制系统的总体结构设计
运动控制系统由TMS320F28335控制芯片及其外围电路组成、关节驱动电机、光栅尺等硬件及上位机控制软件组成,系统框图如图2所示。
图2 控制系统总体框图
采用TMS320F28335芯片设计的控制系统是基于片上事件管理器EV(Event Manager)和串行通信接口SCI(Serial Communication Interface)等片上外设实现的;上下位机之间的通信使用串口通信协 议[6-7];利用封装好的应用程序编程接口(Application programming interface, API),由TMS320F28335将接收到的上位机指令转化为脉冲等信号输入运动驱动器,从而实现各电机相应的动作[8],如调节运动速度、复位、停止等操作;进而实现康复训练中的同步、交替和侧弯矫正等复杂运动[9]。
软件开发在Windows7系统下,使用QT开发工具,调用QT类库和光栅驱动接口API。上位机软件通过串口通信协议向下位机控制系统发送控制指令,对下位机控制系统及相应功能进行初始化。在单轴初始化后,可以实现单电机的停止和换向;通过上位机指令初始化多轴后,即可以实现电机组的协同工作,实现多电机带动下的爬行运动控制。
3 硬件电路的设计
考虑人在爬行运动状态下手部、膝关节和腹部等部位的受力和机械结构的特点,如图3所示前端左右侧采用无刷直流电机来实现手部和腿部的协同运动;腹部支撑采用两个步进电机来实现腹部支撑机构的前后和上下的移动;尾部侧弯矫正采用步进电机来实现矫正角度和速度的控制。在设备的前端两侧安装有左、右光栅尺来获得爬行位移数据,并用来确定运动的位置。
3.1 控制系统电路
本研究中TMS320F28335控制芯片的引脚与电机驱动器连接如图4所示,无刷直流电机由四个控制信号来控制,驱动器使能EN(Enable),制动BK(Break),转向FR(Force Reverse),调速AS(Adjust Speed);步进电机使用脉冲方向信号作为驱动信号输入;外接24V直流电源。
下位机控制系统的核心芯片采用的TMS320F28335拥有ADC,PWM,SCI等丰富的外设,支持浮点运算,寻址空间多达4M[10]。本设计中主要使用TMS320F28335的通用引脚功能,SCI实现上下位机的通信和事件管理器产生PWM波形来控制步进电机[11]。在图中可以看出,GPIO(General-purpose input/output)12~19控制前部的直流无刷电机,通过改变引脚的高低电平状态来控制电机的不同状态;GPIO0~3控制两个步进电机,同时通过脉冲和电平控制引脚来控制电机的转动。
TMS320F28335芯片输出PWM波形的峰值为3.3 V,尾部和腹部支撑使用步进电机的驱动采用5 V的峰值,如图5所示使用SN74ALVC245芯片实现端口电平的转换。同时为了增强电路板的抗干扰能力,在输入端接入了下拉电阻。使用74HC245芯片增强PWM的驱动能力[12]。OE是输出使能引脚,低电平有效;DIR方向控制,控制输入输出。当OE= GND, DIR=VCC时An=输入,Bn=输入的值。
上位机和下位机控制系统之间的通信使用串口协议来实现,TMS320F28335有SCIA,SCIB和SCIC三组串行通信外设。SCI(Serial communication Interface),是通过接受和发送的信号线来实现通信的异步串行通信方式,RS232,RS422和RS485的通信协议是相同的,仅传输介质和收发电平不同[13]。根据片上外设的特点,采用MAX3232芯片来实现串口通信的电路。串口通信电路图如图6所示,MAX3232主要是用来实现电脑主机RS-232电平和TMS320F28335的TX/RX引脚TTL电平之间的转换,实现通信的协调一致。
图4 电机驱动器连接图
(a) 前部右无刷直流驱动器;(b) 前部左无刷直流驱动器;(c) 腹部步进电机驱动器;(d) 尾部步进电机驱动器
图5 PWM电路
3.2 光栅电路
为了保证爬行运动能按照设定的速度(3 m/s~ 5 m/s)和末端精度定位(1mm –10mm)。本研究使用增量式光栅尺JCXFS5(量程600 mm,精度5mm,工作电压5 V)作为位移反馈装置,光栅测距系统采用透射式红外光测量模式,红外波长为800 nm,输出电平为TTL信号。光栅尺头和手部运动执行机构固定,在执行机构运动的过程中,光栅尺可以实时的获得执行机构的运动位移。
光栅数据采集图如图7所示,使用光栅尺测量病人在训练过程中运动的位置,同时根据运动位置来计算运动的距离。在运动控制算法中根据光栅读数计算出转向位置和时间,同时光栅位置数据作为虚拟现实场景中的控制信号对游戏中的人物进行控制。测量端选用苏州泽升精密机械仪器有限公司的JCXE5光栅尺,数据采集端使用基于PCI协议的光栅数据采集卡,其核心芯片采用EP1C3T144C8。光栅尺和采集卡之间通过串口通讯协议实现数据的传输。
图7 光栅数据采集框图
3.3 控制系统安全电路设计
为了保证机器工作中的安全性,设计了包括硬件电路、软件程序和机械限位等保护措施。硬件电路的保护措施主要是电磁兼容和急停开关电路的设计。在靠近驱动器的屏蔽线上添加磁环,以减少电机控制器电源线上可能发出的电磁发射能量。根据先防护电路然后放置滤波电路的原则,调整电源输入端电器件的连接顺序[14]。
硬件急停开关电路如图8所示,急停开关位于电路箱的外侧。交流接触器使用施耐德的LC1E2510M5N(额定电压250 V,50 HZ);滤波器选用泰科20EK1电源滤波器(额定电压250 V,额定电流20A);断路器使用施耐德IC65N(绝缘电压500 V,电流25 A);经过计算,熔断器选用32 A保险丝。
图8 急停开关电路
4 软件设计
TMS320F28335芯片的串口通信和电机驱动程序的编写使用CCS V8来实现,可以实现上下位机的通讯和电机的控制。上位机软件的开发使用了QT平台的QSerialPort,QPainter,Qwt等类库进行用户界面的设计,实现了爬行训练、矫正训练等训练方式的控制。
4.1 光栅位移计算
光栅尺测量位移主要是根据光栅编码实现的,SGC-PCI3.1光栅数据采集卡实现对光栅尺数据的读取,并使用光栅数据采集卡的用户接口程序库来开发应用软件,一个数据采集卡可以实现X,Y,Z轴光栅数据的读取,每轴均具有24位高速计数器,具有断电保存数据的功能。采集卡输入电路采用了RS-422差动线路接收器MC3486,故编码器输出电路采用了RS-422差动驱动器MC3487。
图9 光栅采集距离流程图
光栅位移的读取是在QT开发环境中通过C++编程实现的,实现了光栅采集卡的打开,检测光栅和采集卡的工作状态、设置分辨率等工作。如图9所示流程图描述了应用采集卡来读取光栅位移数据的过程,采集卡的设置主要包括分辨率和分辨率倍数的设置,利用设置好的分辨率和分辨率倍数读取出光栅尺头的实际位置。分辨率和分辨率倍数和实际位移之间的关系如下:实际尺寸=位置编码×分辨率×分辨率倍数[15]。光栅位移设置和读取的核心代码如下:
//打开采集卡并对采集卡的工作状态进行判断,故障时弹窗提示
if(!OpenPCICard(mIndex))
QMessageBox::warning(this, "光栅采集卡打开失败!");
if(!CardReady(mIndex))
QMessageBox::warning(this, "光栅采集卡故障!");
//设置分辨率为0.005mm
set_disp_resolution(mIndex, (float)0.005);
//分辨率倍数
set_mul_factor(mIndex, (float)1);
//将X,Y轴的位置编码设置为掉电前的位置编码
XPositionRecall(mIndex);
YPositionRecall(mIndex);
//将当前位置设置为0,该点作为运动过程中的基准参考点
YRefZero(0);
4.2 上下位机通讯的实现
上下位机之间的通信主要包括两部分:下位机串口收发程序和上位机控制指令的发送。下位机程序的编写主要是使用TMS320F28335芯片的SCIA外设模块实现FIFO的通信指令的接受,该通信方式可以减少中断和查询方式的CPU占用。上位机主要是使用QT的QSerialPort类来实现串口程序的编写。
串口通讯通过设置相应的寄存器实现初始化,如图10所示初始化包括系统初始化、端口初始化和SCIA模块的初始化。首先系统初始化高速外设时钟频率为75 MHz,低速外设时钟频率为37.5 MHz,禁止看门狗电路,其次初始化GPIOF4和GPIOF5分别为SCIA的发送和接受引脚,最后设置SCIA的通信波特率为19200,1位停止位,8位数据位,使能FIFO中断接受级别为8。
在图10中,QT5的QSerialPort类提供了访问串口的功能,包括打开相应的串口,设置波特率,设置校验格式等[14]。每次串口接受到数据后都会发送QIODevice::readyRead()的信号,使用与该信号绑定的槽函数可以读出串口缓冲区的数据。当发送数据时,首先开启发送线程并把待发送数据转换成字节数组,然后使用QIODevice::write(const QByteArray &byteArray)函数进行数据的发送,发送后检查函数的返回值以确定写操作是否成功执行,代码如下:
QSerialPort *serial = new QtserialPort;
serial->setPortName((QString)"COM13"); // 指定端口
serial->setBaudRate(QSerialPort::Baud19200); // 设置波特率
serial->setDataBits(QSerialPort::Data8); // 设置位数
serial->setParity(QSerialPort::EvenParity); // 设置偶校验
serial->setStopBits(QSerialPort::OneStop); // 设置一个停止位
serial->setFlowControl(QSerialPort::NoFlowControl); // 设置无流控制
serial->open(QIODevice::ReadWrite); // 读写模式打开串口
connect(serial,SIGNAL(readyRead()),this,SLOT (readData())); // 连接串口的信号和槽函数
QByteArray buf = serial->readAll();//利用槽函数读取串口数据
//通过线程安全的串口写函数实现数据的发送
QString command=data;
QByteArray sendData =command.toLocal8Bit();
serial.write(sendData);
图10 串口通信流程图
4.3 交替和同步运动的实现
交替运动和同步运动主要使用TMS320F28335芯片的GPIOA口的通用数字I/O口功能,通过对GPIOA组控制寄存器和数据寄存器的设置,实现不同时刻端口状态的转换[16-18]。控制寄存器需要设置功能选择控制寄存器GPAMUX和方向控制寄存器GPADIR,端口电平的转换仅需要对各端口的数据寄存器GPADAT写入数据即可。
交替和同步运动的实现根据光栅测得的不同距离值来实现起始位置和终止位置的转换。前部左右两个运动把手由两个直流无刷电机驱动,在控制过程中仅需要在转向时先给电机驱动器的/BK端口发送低电平停止,然后给F/R发送低电平转向即可。
核心代码如下:
GpioDataRegs.GPADIR.bit.GPIOA12=1; //设置GPIOA12引脚为输出引脚
GpioMuxRegs.GPAMUX.bit.GPIOA12=1; //设置GPIOA12引脚为通用数字引脚
GpioDataRegs.GPADAT.bit.GPIOA12=0;
4.4 矫正和腹部支撑上下移动的实现
腹部支撑电机的运动由TMS320F28335芯片连接在驱动器的GPIO0来产生脉冲和连接在DIR+的GPIO1产生高低电平控制方向来实现的。侧弯矫正电机的转动由GPIO2产生脉冲,GPIO3产生方向控制电平,同时读取3个电磁限位器的值实现左右方向的极限限位。
TMS320F28335控制腹部和尾部步进电机是通过通用定时器和比较单元产生PWM波形来驱动电机驱动器实现的。产生频率为1 KHz,占空比为50%的PWM波形。产生PWM波的软件实现包括初始化系统时钟,初始化GPIO,初始化事件管理器。首先把TMS320F28335外部30 MHz的晶振,经过PLL锁相环倍频至150 MHz并使能EVA和EVB;其次初始化GPIO0,GPIO1,GPIO2,GPIO3端口为PWM功能端口;最后设置事件管理器的通用定时器周 期寄存器的值为0´927B,比较寄存器的值为0´3A98[19-22]。
核心代码如下:
//EVA模块
EvaRegs.T1CON.bit.TMODE=2; //连续增模式
EvaRegs.T1CON.bit.TPS=1; //T1CLK=HSPCLK/2=37.5M
EvaRegs.T1PR=0x927B; //1 KHz的PWM,周期为1 ms
EvaRegs.T1CMPR=0x3A98; //占空比为50%,低电平有效
//死区时间为:4.27 us
EvaRegs.DBTCONA.bit.DBT=10; //死区定时器周期,m=10
EvaRegs.DBTCONA.bit.EDBT1=1; //死区定时器1使能位
EvaRegs.DBTCONA.bit.DBTPS=4, //死区定时器预定标因子
EvaRegs.ACTR.all=0x0999; //设定引脚PWM1-PWM6的动作属性
5 可靠性测试分析
对8名志愿者进行测试,均为健康受试者,年龄为(24.7±1.62)岁,身高为(174.50±6.55)cm,体重为(67.50±9.45)kg。实验前,分别调整好受试者的腹部位置,并设置起始位置和终止位置。每个测试者测试两次,每次间隔一天,在室内进行,无环境影响。
对交替训练,同步训练和矫正训练进行重复性测试,每次训练时间选择20分钟。在测试过程中,记录运动的位移,计算两次测量数据的组内相关系数(ICC)如表1所示。
表1 交替训练时启始和停止位置
Tab.1 Start and stop positions during alternate training
使用统计分析软件SPSS对测试数据进行可靠性分析,交替训练和同步训练起始位置的ICC值分别为0.96,0.93,终止位置的ICC值分别为0.87,0.98;矫正训练摆动8°和16°的ICC值分别为0.91和0.93。以上数据的组内相关系数均大于0.75,说明设备具有良好的可靠性,能够保证训练达到可靠的精度。
表2 同步训练时启始和停止位置
Tab.2 Start and stop positions during synchronized training
表3 矫正训练时启始和停止位置
Tab.3 Start and stop position during corrective training
6 结论
本研究设计的脊柱康复训练仪控制系统实现了对脊柱康复爬行运动的交替运动,同步运动和侧弯矫正训练的控制,其中每种训练模式都运动时间、运动距离可调。使用QT开发了配套的人机交互界面控制软件,该软件简化了使用者的操作。通过8名受试者对系统进行测试,并对测试数据分析可知系统具有良好的可靠性。
针对脊柱康复训练,本文设计了基于TMS320F28335芯片的下位机和基于QT开发的上位机控制软件。TMS320F28335芯片在电机的控制中体现了具有精度高,稳定好的显著特点。同时采用QT开发平台在桌面应用程序的开发中具有可跨平台,开发便捷等诸多优点。本研究为后续医疗设备的开发提供了上下位机联合开发的先进方法,使得上下位机的开发高效稳定。
[1] Epidemiology, Demographics, and Pathophysiology of Acute Spinal Cord Injury[J]. Lali H.S. Sekhon,Michael G. Fehlings. Spine. 2001 (24S).
[2] 党礌, 陈仲强, 刘晓光, 等. 青少年下腰椎间盘突出症的病因分析——腰椎过度承载及腰骶部骨与关节形态变异在发病中的意义[J]. 中国脊柱脊髓杂志, 2015(11): 991-996.
[3] Device permitting a user to simulate crawling motions to improve movement of the truncal muscles and spine. Iams JF, Splane RL,Drusch JA. US4799475. 1989.
[4] Recent trends in mortality and causes of death among persons with spinal cord injury[J]. Michael J. De Vivo, J. Stuart Krause, Daniel P. Lammertse. Archives of Physical Medicine and Rehabilitation. 1999(11).
[5] Spinal Cord Injury Statistical Center, National. (2010). Spinal cord injury facts and figures at a glance. The journal of spinal cord medicine. 33. 439-440. 10.1179/1079026813Z.000000000136.
[6] 陈奕延. 数量经济学模型 IO 控制系统的理论设计[J]. 软件, 2018, 39(2): 22-27.
[7] 杨振宇, 吴西. 基于PDCA 的义齿生产质量控制系统[J]. 软件, 2016, 37(3): 118-122.
[8] 李拓, 杜庆楠. 基于 TMS320F28335 的三相感应电机矢量控制系统的研究[J]. 软件, 2018, 39(3): 130-135.
[9] 冯平, 王毓顺, 徐世许. 液体农药配料线自动控制系统研究[J]. 软件, 2016, 37(4): 93-95.
[10] 郭星辉, 崔海坡, 徐秀林. 平衡功能障碍康复训练装置的有限元分析[J]. 中国组织工程研究, 2012, (26): 4863-4866.DOI:10.3969/j.issn.1673-8225.2012.26.022.
[11] Physical coordination training device. Tidwell J H. US: 3976058. 1976.
[12] 孟涛, 叶文博, 黄敏. 大学生颈椎病发病率的调查[J]. 上海师范大学学报(自然科学版), 2004, (3): 77-80. DOI:10.3969/ j.issn.1000-5137.2004.03.015.
[13] 汲德明, 任一峰. 基于TMS320F28335的异步电机DTC数字化实现[J]. 单片机与嵌入式系统应用, 2016(7): 27-30.
[14] 柳姗姗, 曹东兴, 王超, 等. 基于多传感器的爬楼轮椅底盘机构控制策略研究[J]. 传感器与微系统, 2018(1): 70-73, 78. DOI:10.13873/J.1000-9787(2018)01-0070-04.
[15] 高大地, 邹任玲. 空间运动轨迹爬行训练装置的设计[J]. 中国康复理论与实践, 2018, 24(04): 477-482.
[16] T. Tandel, U. Mate, S. Unde, A. Gupta and S. Chaudhary, "Speed estimation of induction motor using TMS320F28335 digital signal processor," 2016 IEEE 7th Power India International Conference (PIICON), Bikaner, 2016, pp. 1-6.
[17] 潘志超, 徐秀林. 爬行训练及爬行训练装置在脊椎病康复治疗中的应用[J]. 生物医学工程学进展, 2014, 35(04): 223-227.
[18] 杨威, 黄元汛. 爬行运动对腰肌劳损防治作用的生理学分析[J]. 当代体育科技, 2014, 4(14): 17+19.
[19] Mazen Abdel-Salam, Rashad Kamel, Khairy Sayed, Mohsen Khalaf, Design and implementation of a multifunction DSP- based-numerical relay, Electric Power Systems Research, Volume 143, 2017, Pages 32-43.
[20] Erkan Deniz, Omur Aydogmus, Zafer Aydogmus, Implementation of ANN-based Selective Harmonic Elimination PWM using Hybrid Genetic Algorithm-based optimization, Measurement, Volume 85, 2016, Pages 32-42.
[21] 无位置传感器无刷直流电机驱动控制系统设计[J]. 易海涛,蒋猛, 卢营蓬, 寇杰, 杜俊良. 西南师范大学学报(自然科学版). 2014(9).
[22] 吕海立, 张鹏超, 熊超, 杜枭雄, 陈鑫. 基于TMS320F28335的SVPWM永磁同步电机伺服系统的应用[J]. 陕西理工大学学报(自然科学版), 2018, 34(1): 22-28.
Spinal Rehabilitation Control System Based on TMS320F28335
LIU Ji-yong1, XU Xiu-lin1, HU Xiu-fang1, AN Mei-jun2, WANG Gu-bing1
(1. School of Medical Instrument and Food Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China; 2. Shanghai University of Medicine & Health Sciences, Shanghai 200093, P.R. China)
This study developed a spine rehabilitation training control system based on crawling movements. The system includes a crawling mechanism, a motor control circuit, and control software. Through 6 motors, the training equipment is provided with the power needed for different training. The embedded systems adopts TMS320F28335 as the control core, and the QT is used to design the software to realize the synchronization, alternating and corrective training of crawling training. The experimental results in this paper show that the motion control system has good reliability and meets the needs of repeated rehabilitation training for patients with spinal diseases.
Spinal rehabilitation; Control system; TMS320F28335; QT
TP273+.5
A
10.3969/j.issn.1003-6970.2018.08.007
上海市科学技术委员会科研计划项目(15441906200)
刘吉永(1990-),男,研究生,主要研究方向:精密医疗器械与医用软件开发;胡秀枋(1962-),女,副教授,主要研究方向:康复设备与骨科器械;安美君(1965-),男,副教授,主要研究方向:医学信息处理与医用软件开发;王固兵(1993-),男,研究生,主要研究方向:康复设备与医用软件开发。
徐秀林(1957-),女,教授,主要研究方向:康复设备与骨科器械。
本文著录格式:刘吉永,徐秀林,胡秀枋,等. 基于TMS320F28335的脊柱康复控制系统[J]. 软件,2018,39(8):27-34