STM32的医疗康复机器人手臂控制系统
扫描二维码
随时随地手机看文章
摘要:医疗康复机器人是近年出现的一种新型机器人,主要功能是帮助患者完成各种运动功能恢复训练。为此提出通过STM32微控制器控制无刷直流电机来控制机器手臂的运转,并通过Simulink建立PID模型,运用XPC_Target和控制板进行通信,以此得到电机在调速过程中合适的PID参数,使机器手臂在运转的过程中更加平滑。实际的临床试验操作证明,该系统能够较好地完成手臂的医疗康复训练。
随着我国逐渐步入老年社会,对各类康复设备的需求日益增大,对性价比高的医疗康复设备控制系统的需求尤为迫切。基于DSP芯片的成本相对较高、设计复杂、研发周期长,芯片的尺寸会导致印刷电路板的体积变大。
本文基于STM32微控制器设计的医疗康复机器人手臂控制系统,具有杰出的功耗控制和电机控制的高级定时器,能产生3对可配置并互补输出的PWM信号。通过在Simulink上建立双闭环PID算法模型,得到合适的PID参数来改变PWM波的占空比,进而精确地实现电机的调速,保证了机器人手臂运行轨迹平滑,运行速度稳定。由于无刷直流电机具有体积小、性能稳定等优点,其机器手臂尺寸能够更加符合人体运动学设计理念。
1 总体方案设计
医疗康复机器人手臂可以模拟日常生活中手臂的一些动作,通过创造虚拟工作环境实现对手臂各个关节的运动训练、肌肉的锻炼,以及神经功能的恢复训练。以STM32微控制器为控制核心,机器手臂控制总体设计方案如图1所示。
通过运用IR2130栅极驱动芯片,对STM32输出的6路PWM信号进行特殊处理,满足H桥中IRF3808高功率MOS管工作的需求。
STM32微控制器通过不断地检测无刷直流电机中霍尔信号来改变换相时序,以此来控制电机的运转。当电机在堵转的时候会产生大电流,通过ADC对其电流值进行采样,当其值超过阀值的时候可以停止电机工作,此时IR2130会自动进入自我保护状态,关断输出信号,保证手臂运行的安全。
2 硬件电路设计
2.1 栅极驱动
栅极驱动芯片采用的是美国国际整流器公司的IR2130芯片,它具有高电压、高速度,并有3个独立的高、低侧功率MOSFET驱动输出通道。其输入和输出信号时序如图2所示。其具有过电流保护、欠压锁定功能,并能及时关断6路输出。在出现异常状态时,逆变电路处于关断状态,这样可以保护电机不被烧坏,且具有自我保护功能。
6路输出信号中的3路具有电平转换功能,因而它既能驱动桥式电路中低压侧的功率器件,又能驱动高压侧的功率元件。如图3所示,将STM32输出驱动H桥的3对互补PWM信号提高至能够驱动MOSFET开关电压电平。
1片IR2130可取代3片IR2110,且仅需要一个输入级电源,就能够自动产生成上、下侧驱动所必需的死区,时间为2.5μs,并得到更好的控制性能。
2.2 H桥功率电路
高功率场效应管可以输出高电压。逆变电路主要由6个大功率场效应管IRF3808组成,如图4所示。每个场效应管都并联了反接的快速恢复二极管,具有保护和续流的作用。对于24 V电压的电机,场效应管的VDS至少需要40 V电压,而漏极电流必须足够高,以应对电机启动电流。由于软件中实现的软加速机制(小幅提升至所需速度),启动电流可以进一步降低。
2. 3 电流检测电路
运用一个0.01 Ω的电流检测电阻或者是一段蛇形地线,经过电机和MOSFET的电流全都从它那里经过并流向地。如图5所示,经过电机的总电流经过这个小阻值的电阻而流向地,这个电流检测电阻的阻值很小,但如果电流够大的时候,会在其两端产生一个小的电压,经过RC形成的一阶低通滤波电路可以滤去一些偶尔产生的瞬时高频分量。其截止频率可以由RC的具体值算出。最后可以把其接入STM32的ADC通道进行电流采集。
2.4 电机转矩
对电机来说,机器人手臂在运转时是处于负载状态下运行,所以要有足够的转矩以保证手臂运行正常。跟速度控制一样,转矩也由通过定子线圈的电流大小决定。最大转矩、定子和转子磁场之间的角度,应保持在90°。梯形换相如图6所示,控制分辨率为60°,定子和转子磁场间的角度在-30。~+30。的范围内,这会产生转矩脉动。
电流检测过程中的RC低通滤波器可以滤除流入电机的高频瞬时脉冲,并改善电机转矩特性。在改变运转方向的时候,为了得到比较大的转矩选择直接改变运转方向,不会选用运行一停止一反向运行的方式来进行机器人手臂方向的改变。这样可防止机器人手臂在转向时候出现抖动现象,也防止了再次启动的时候启动电流过大,容易出现堵转现象,对硬件电路和电机都会造成损害。
3 软件设计
3.1 μC/OS—II操作系统
为了让软件架构更加稳定清晰,运用一个可固化、可裁剪的、占先式多任务实时操作系统μC/OS—II。它是基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量、邮箱、消息队列、内存管理、中断管理等。
在μC/OS-II嵌入式操作系统上,对无刷直流电机中霍尔信号的捕捉中断、上位机通信中断、ADC采集中断、PID速度调节中断的优先级进行分配,并且通过创建医疗康复手臂运转方向、启动、停止、上位机通信、PID调节等任务使软件运行上更加模块化。任务与任务之间通过邮箱、消息队列等传递信息,并且可以相互挂起和启动相应任务,使任务之间能够协调的工作、软件架构更清晰。
3.2 电机速度测量和六步换相
无刷直流电机的实际转速可通过测量霍尔传感器信号得到。在电机转动过程中,通过120°分布在电机中的3个霍尔传感器可以得到如图7所示的3路周期信号。
电机每转一圈,每个霍尔传感器产生2个周期的方波信号,且其周期与电机转速成反比。其结构比在外围添加编码器更加方便灵活。
STM32微控制器的定时器具有检测霍尔信号的端口,通过定时器对检测到的3路霍尔信号进行异或处理,当其能捕捉到上升沿时触发一次中断请求,在中断中记录产生此次中断需要的时间,并进行定时器清零。控制流程操作如图8所示,通过几次中断时间求取平均值,把得到的时间平均值转化成电机运行的速度值。通过检测到的3个翟尔传感器的高低电平值来进行电机6步换相时序,能够使无刷直流电机按时序要求进行运转。
3.3 电机PID算法
由于人体手臂和机器手臂结构都有重量,在电机运行的时候将受到其影响,导致电机运行速度不断变化,不利于机器手臂的稳定运行,因此需要把测量到的速度值和设定的速度值进行双闭环PID运算,使电机运转速度一直保持设定的速度值。如图9所示,电机的PID算法是运用改变相电压脉宽调制(PWM)波的占空比来实现,通过增大或减小占空比,每个换相步骤会有部分电流流过定子线圈,这会影响定子磁场和磁通密度,从而改变转子和定子的之间的力。
通过得到无刷直流电机速度的设定值(上位机设置)和实际检测到的电机转速值之间的差值,使其经过速度PID控制环和电流PID控制环进行PID调节来改变STM32输出驱动电机运转信号的PWM波的占空比,机器手臂能够平滑和稳定地运行。
4 PID模型设计
运用MathWorks公司开发的基于RTW体系框架的实时目标系统XPC_Target建模,其提供了一种低廉成本、性能较高的可便捷实时应用的系统。采用宿主机+目标机的技术实现途径,即“双机”模式。宿主机和目标机可以是不同类型的计算机,两者之间通过以太网实现通信。其实现模型如图10所示。
根据工作原理,其实现分为如下步骤:
(1)用U盘创建DOS目标启动盘
启动盘有FDD、HDD和ZIP三种模式,在制作的过程中根据目标机支持的模式选择。通过选用XPC_Target的嵌入式选项来制作目标启动盘。通过U盘来调用和启动XPC_Target的实时内核,可以使每次系统启动后自动运行目标应用程序。
(2)Simulink模型建立
在宿主机的Simulink上通过添加各个驱动模块建立电机调速过程中电流环、速度环的PID模型和下位机的串口通信模块,然后用RTW代码生成器和C编译器来生成可执行代码,在目标机上进行实时运行。
(3)信号采集过程
通过XPC_Target实时内核将目标应用程序的信号数据存储在目标机的RAM中,并且在目标机的显示界面上对信号进行监视、记录、跟踪,并且绘制出图像。当下位机通过串口发送速度测量值给目标机上运行的通过Simulink中建立的PID模型生成的可执行代码时,通过可执行代码程序进行速度调节,把其调节后的数据通过目标机发送给下位机,从而改变驱动电机运转信号的PWM波占空比。当其速度测量值能够稳定到速度设定值的时候,Simulink中设置的 PID参数就是所需要的速度调节的PID参数值。否则,需要改变Simulink中建立的PID参数模型。
结语
本文提出了基于STM32微控制器的医疗康复机器人手臂的控制系统。目前,本系统的样机已经进行了临床试验,并得到很好的试验效果。试验中的机器人手臂有 3个自由度,能实现肩关节、肘关节等的训练。通过使用IR2130栅极驱动芯片,板子尺寸、系统稳定性和设计灵活性都得到改善。在Simulink上设计 PID参数模型,通过STM32微控制器驱动板驱动无刷直流电机,在末端带动训练者的手臂分别在水平面和垂直平面的固定轨迹训练,并且把采集的运行轨迹、速度图像,以及预先设置的手臂运行轨迹和速度图像进行对比和观察,机器手臂运行平滑,PID参数稳定,进一步增强了系统的稳定性和灵活性。