历史上的今天
返回首页

历史上的今天

今天是:2025年08月13日(星期三)

正在发生

2018年08月13日 | STM32的医疗康复机器人手臂控制系统

2018-08-13

摘要:医疗康复机器人是近年出现的一种新型机器人,主要功能是帮助患者完成各种运动功能恢复训练。为此提出通过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参数稳定,进一步增强了系统的稳定性和灵活性。


推荐阅读

史海拾趣

Ericsson Power Modules公司的发展小趣事

在追求经济效益的同时,Ericsson Power Modules也注重环保和可持续发展。公司积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。此外,Ericsson Power Modules还积极参与环保公益活动,推动电子行业的绿色发展。这种环保意识和行动体现了Ericsson Power Modules对社会的责任感和对可持续发展的承诺。

Catalyst公司的发展小趣事

Catalyst公司深知品质是企业生存和发展的根本。因此,公司始终将品质管理放在首位,从原材料采购到生产加工、产品检验等各个环节都进行严格把控。公司还建立了完善的售后服务体系,确保客户在使用过程中能够得到及时、专业的技术支持。这些举措不仅提升了Catalyst产品的品质水平,也赢得了客户的信任和好评。

Einfochips公司的发展小趣事

为了加强与芯片设计领域的合作,Einfochips公司加入了Tensilica公司的Xtensions设计伙伴计划。作为计划的一部分,Einfochips将为采用Tensilica的Xtensa可配置处理器以及Diamond Standard处理器内核的SoC设计提供服务。这一合作不仅提升了Einfochips在SoC设计领域的技术实力,还为其带来了更多的商业机会。

柯爱亚(ceaiya)公司的发展小趣事

在电子行业的发展历程中,柯爱亚以其对技术创新的执着追求而闻名。1999年,柯爱亚成功研发出超薄型功率电感CDH2D11/CD31,并率先实现了量产。这一创新不仅提升了产品的性能,而且满足了市场对于更轻薄、更高效电子元件的迫切需求。柯爱亚凭借这一技术突破,迅速在市场中脱颖而出,赢得了业界的广泛认可。

ConnectBlue公司的发展小趣事

在产品创新的基础上,ConnectBlue公司开始积极拓展市场。公司不仅在国内市场取得了良好的销售业绩,还积极开拓国际市场,与多家海外企业建立了合作关系。同时,公司还注重与产业链上下游企业的合作,与多家供应商和集成商建立了长期稳定的合作关系,共同推动无线通信技术的发展和应用。

CANOPUS公司的发展小趣事

随着业务的不断拓展,CANOPUS开始专注于鼓的制造研究。在1984年,公司推出了其标志性产品——整木掏空榉木军鼓。这款鼓的独特之处在于其鼓腔是由整个树干挖空处理而成,导角也做了特有的设计。这一创新使得CANOPUS的鼓在音质和外观上都与众不同,迅速在市场上获得了认可。

问答坊 | AI 解惑

我的第一块板子

这是一个运用运算放大器构成的电路测量三极管的β值的电路,是我自己设计与完成的…

查看全部问答>

硬件街机游戏开发,单片机游戏开发,CPLD/FPGA、ARM平台游戏开发群成立

本超级QQ群成立,上限人数为500。 目标是发展中国游戏产业,提升硬件游戏开发技术交流。提供大的平台。 发展的方向是游戏动漫相结合,此群不是网络游戏开发,为单板街机游戏开发。 所属第三产业。以电脑板游戏开发为主体,希望大家能在这个平 ...…

查看全部问答>

如何修改注册表使文件与应用程序关联???

我自己写的一个应用程序aaa.exe,我想使audio file和video  file关联到aaa.exe。 在emulator中我使用remote registry editor修改audiofile\\\\shell\\\\open\\\\command数值可以实现。 那么我是否可以在我自己的shell程序中 通过RegSetV ...…

查看全部问答>

求助:关于LPC2138下载字库

最近在LPC2138的项目中遇到了这样的问题,敬请达人指点:     因为在项目中有一不带字库的液晶显示,而且所需汉字较多,且不定,故需下载字库到LPC2138的内部flash中,其有500K的内部flash,HZK16只需使用261K,我准备自己的程序有200K ...…

查看全部问答>

上升沿的捕获电路(代码)

一个简单的上升沿检测代码:reg RS_r1,RS_r2;always @ (posedge CLKIN or posedge RESET)    if(RESET)        RS_r1 <= 1\'b0;    else        RS_r1 <= RS ...…

查看全部问答>

给st技术支持队伍一个建议

我刚接触ST8芯片, 太头疼了,  写个PWM输出的测试程序,找了2天,最后通过这论坛才解决;  现在是I2C通信,找了2天还没解决; 若是我手头上有一个可执行的例子,下载到开发板运行对比下,问题几分钟就可以解决; 强烈建议:  ...…

查看全部问答>

F2812可以采用有源晶振吗?

F2812可以采用有源晶振吗?如采用有源晶振,怎么旁路内部OSC?…

查看全部问答>

集思广意,做块“牛X”点的MSP430开发板

征集一下大家的想法,做一块功能性,实用性都很全面的MSP430开发板,大家有什么好主意都说说啊,到时画板时都加上。…

查看全部问答>

我的电子技术入门之路-初“湿”单片机

虽然本人上的是电子系,可是周边的师兄师姐都一起笑称,毕业了,还不会修电话(固定电话哦,不是手机),实在不敢承认自己是电子系毕业的。 上班以后,因为工作需要,开始接触单片机。说起来也算不上从零开始,读书的时候某年暑假在实验室接手了半 ...…

查看全部问答>

能不能帮我看一下程序错在哪里了

#include unsigned char Dat_com;          //接收的数据(控制字) unsigned char Number; unsigned char Angle; unsigned char TimeOutCounter = 0,zhengfan= 0;//TimeOutCounter:定时器溢出计数  &nb ...…

查看全部问答>