使用专用MCU简化运动控制设计

描述

数字运动控制方法可精确调节机器人系统中驱动末端执行器的电动机和执行器的运动和定位。然而,在实践中,开发基于传统比例积分(PI)控制器的运动控制系统的工程师通常会发现他们的项目停滞不前,因为他们难以调整敏感的控制器参数。更有效的方法可降低调谐复杂性,同时在各种操作条件下提供稳定的性能。

低成本、高性能的微控制器推动了数字电机控制的快速出现,该控制能够通过软件控制响应各种工作条件。通过在软件中设计PI控制器,工程师可以使用最少数量的组件创建响应迅速的电机控制系统。然而,在实践中,找到最佳的PI控制器参数集给开发人员带来了重大挑战。很多时候,工程师发现每个电机的独特特性(以及相关的电机控制系统实现)使确保电机在不同速度和负载下稳定运行的任务变得非常复杂。结果,电机控制开发团队发现自己被迫延长项目进度并解决细微的调谐问题。

PI 控制器面临的挑战

传统的PI控制器使用控制环路,该环路产生输出,旨在减少某些过程中预期值和测量值之间的误差。在控制环路的串行形式中(图1),Kb设置PI控制器的零点,而Ka设置闭环系统响应的带宽。

运动控制

图 1:在传统 PI 控制器的串行形式中,工程师必须为其零点 (Kb) 和带宽 (Ka) 找到最佳设置,这一过程往往会延迟运动控制项目。(图片来源: 德州仪器)

在电机控制应用中,由于工程师需要控制电流来控制速度,PI控制器优化的复杂性变得更加复杂。在典型的电机速度控制回路中,工程师将使用两个PI控制器 - 一个在内环路中控制电机电流,另一个在外环路中控制电机速度(图2)。当电机转速低于命令值时,外环路需要更多电流;内环路校正电机电流以匹配所需值。

运动控制

图 2:典型的速度控制环路使用两个 PI 控制器来控制电机电流和速度本身,从而增加了寻找最佳控制器参数的任务。(图片来源:德州仪器)

在实践中,在各种运行条件下实现稳定的性能成为一项复杂而耗时的任务。工程师需要调整多个参数,以针对特定的速度和负载工作点调整控制器。然而,特定的调谐解决方案可能只解决非常小的速度和负载范围。因此,工程师可能会发现,具有不同速度和负载点的高动态系统可能需要为每个点调整PI控制器,从而进一步延迟项目进度。

先进的控制算法

TI 运动解决方案为数字电机控制设计提供了一种简单得多的方法。作为思达纺运动的核心,线流科技的SpinTAC在系统的动态速度、位置和负载范围内提供强大的控制。这种专有方法提供先进的速度和位置控制,并具有主动抗扰控制(ADRC)功能。

ADRC在电机模型中具有高度的不确定性。它将未建模的电机动力学和系统的不良行为视为可以估计、拒绝或纠正的干扰。这使得SpinTAC控制器可以使用单个调谐参数(称为带宽)控制各种位置,速度和负载,该参数确定系统的刚度并指示系统抑制干扰的强度。

当设计人员使用这种调谐方法增加控制器的带宽时,对扭矩干扰的响应速度会更快,并且过冲更少(图 3)。如果带宽设置得太高,当扭矩干扰从系统中消除时,系统开始围绕目标速度振荡。设计人员只需找到带宽,以便在消除扭矩时围绕目标速度值产生最小的振荡。

运动控制

图 3:SpinTAC 调谐只需要设置一个参数 – 带宽。在此示例中,理想带宽为 40 rad/s。在该带宽下,当扭矩被移除时,响应在目标速度周围表现出最小的振荡。(图片来源:德州仪器)

简化开发

InstaSPIN-MOTION无需处理传统PI控制器中优化多个参数的复杂性,而是让工程师只需设置单个带宽参数即可调整其系统。与使用传统PI控制器的设计相比,这种简单而强大的方法可以大大缩短开发时间。同时,这种方法提供了一种具有更少过冲和更快建立时间的解决方案,从而降低了最终应用的整体功耗(图4)。

运动控制

图 4:为了响应施加的扭矩干扰,InstaSPIN 的恢复速度明显快于传统的 PI 控制器环路。(图片来源:德州仪器)

TI 进一步提供了一个广泛的开发和部署平台,将软件和硬件相结合。TI 的 MotorWare 产品包括特定于设备的驱动程序和支持软件,以及完整的系统示例和技术培训。

为了更快地部署这些设计,TI 提供了其 C2000 短笛 MCU 的专用版本,这些 MCU 在片上 ROM 和闪存中包括 InstaSPIN-MOTION 库,无需额外付费(图 5)。C2000 InstaSPIN TMS320F28069M MCU 基于 90 MIPS C28x 处理内核,将片上 InstaSPIN-MOTION 电机控制软件与完整的片上外设相结合,包括一个 16 通道模数转换器 (ADC),用于采集电机控制算法中使用的数据(例如,参见图 5 右侧所示的 ADC 输入)。

运动控制

图 5:德州仪器 (TI) 的 TMS320F28069M MCU 在片上集成了 InstaSPIN-MOTION 软件库,进一步简化了运动控制系统的开发。(图片来源:德州仪器)

TMS320F28069M 还具有 8 个片上增强型脉宽调制器 (ePWM) 模块,提供 16 个 PWM 通道。因此,工程师可以用最少的额外组件快速设计完整的电机控制系统。MCU 的 PWM 可以直接驱动专用的隔离式栅极驱动器,如 TI ISO5851(图 6)。ISO5851 具有 CMOS 输入,使微控制器能够直接驱动它们,这与典型的基于光耦合器的栅极驱动器不同,后者需要外部电流驱动器和偏置电路来提供输入控制信号。

运动控制

图 6:CMOS 隔离式栅极驱动器(如 TI ISO5851)与高度集成的微控制器(如 TI TMS320F28069M)配合使用,使设计人员能够以最少的额外组件创建复杂的电机控制系统。(图片来源:德州仪器)

在软件方面,由于采用了 SpinTAC 控制器算法,电机控制实现也同样简单。工程师使用最少的步骤配置SpinTAC速度控制,从包含适当的头文件(例如,spintac_velocity.h)开始,将SpinTAC软件组件引入应用程序。(此示例涉及自旋TAC速度控制,但自旋TAC位置控制配置遵循类似的方法。

然后,开发人员在主源文件中声明全局结构:

ST_VelCtl_t      stVelCtl;       // The SpinTAC Speed Controller object

ST_VELCTL_Handle stVelCtlHandle; // The SpinTAC Speed Controller Handle

在应用程序的 main 函数中,开发人员随后会将配置变量初始化为其默认值。对于许多电机,此配置通常包括以下变量:

Copy

ST_VelCtl_t斯特维尔特尔;斯宾塔克速度控制器对象

ST_VELCTL_Handle斯特维尔特汉德尔;斯宾达克速度控制器手柄

在应用程序的 main 函数中,开发人员随后会将配置变量初始化为其默认值。对于许多电机,此配置通常包括以下变量:

初始化自旋交车速度控制器组件 stVelCtlHandle = STVELCTL_init(&stVelCtl, sizeof(stVelCtl));

设置 PU 中的最大电流

_iq maxCurrent_PU = _IQ(USER_MOTOR_MAX_CURRENT / USER_IQ_FULL_SCALE_CURRENT_A);

速度控制器的实例

STVELCTL_setAxis(ST_AXIS0年);

采样时间 [s], (0, 1)

STVELCTL_setSampleTime_sec(ST_SPEED_SAMPLE_TIME年)_IQ州州长);

系统惯性上限 (0, 127.9999] 和下限 (0, SgiMax] 极限 [PU/(pu/s^2)] STVELCTL_setInertiaMaximums(stVelCtl 手柄, _IQ(10.0), _IQ(0.001));

系统控制信号高 (0, 输出最大] & 低 [输出敏, 0) 限制 [PU] STVELCTL_setOutputMaximums(stvelctlHandle, maxCurrent_PU, -maxCurrent_PU);

系统最大 (0, 1.0] 和最小 [-1.0, 0) 速度 [pu/s] STVELCTL_setVelocityMaximums(_IQ(1.0), _IQ(-1.0));

带宽规模STVELCTL_setBandwidthScaleMaximums的系统上限 (0, 0.2/(T*20)] 和下限 [0, BwScaleMax] 限制(stVelCtlHandle,

_IQ24(0.2) / (ST_SPEED_SAMPLE_TIME * 20.0)), _IQ24(0.01));

系统惯性 [聚氨酯/(蒲/秒^2)], [西敏, 西美斯]

STVELCTL_setInertia(USER_SYSTEM_INERTIA)_IQ( USER_SYSTEM_INERTIA)

控制器带宽标度 [带宽最小值、带宽最大值]

STVELCTL_setBandwidthScale(_IQ24 USER_SYSTEM_BANDWIDTH_SCALE));

最初未启用ST_VelCtl

STVELCTL_setEnable(假);

最初ST_VelCtl未处于重置状态

STVELCTL_setReset(假);

在操作期间,主中断服务例程将更新速度参考、加速度参考和速度反馈,然后以适合该部件的抽取率(ISR_TICKS_PER_SPINTAC_TICK中指定)调用SpinTAC速度控制函数。

Copy

CTRL_Obj *obj = (CTRL_Obj *)ctrlhandle;获取指向 CTRL 对象的指针

以 pu/s 为单位获得机械速度

_iq速度反馈 = EST_getFm_pu(obj->estHandle);以 pu/s 为单位获取机械速度 // 更新速度参考

STVELCTL_setVelocityReference(圣维斯特兰德,

STVELMOVE_getVelocityReference(stvelMoveHandle));

更新加速参考

STVELCTL_setAccelerationReference(圣维斯特兰德,

STVELMOVE_getAccelerationReference(stvelMoveHandle));

更新速度反馈STVELCTL_setVelocityFeedback(速度反馈,速度反馈);运行自旋交车速度控制器STVELCTL_run(st垂直手柄);

从自旋交车速度控制器获取扭矩参考

iqReference = STVELCTL_getTorqueReference(stVelCtlHandle);

设置来自自旋TAC速度控制的Iq参考

CTRL_setIq_ref_pu(ctrlHandle, iqReference);

开发人员可以使用 TI C2000 Piccolo F28069M LaunchPad 快速启动电机控制开发,该功能具有开发基于 F2806x 微处理器的应用程序所需的所有硬件和软件。TI 还提供完整的电机控制解决方案套件,例如高压电机控制套件,该套件全面介绍了对最常见类型的高压三相电机的控制,包括交流感应 (ACI)、无刷直流 (BLDC) 和永磁同步电机 (PMSM)。TI 还提供补充套件,例如 BLDC 电机套件,其中包括一个内置霍尔效应传感器的无刷直流电机,开箱即用,可与电机控制套件软件配合使用。

结论

使用传统PI控制器的传统电机控制设计由于调整这些控制器的复杂过程,可能会面临明显的延迟。TI 的 InstaSPIN-MOTION 内置于专用微控制器中,可将调谐减少到单个参数,为设计人员提供简单性和稳定性的组合,使其成为机器人系统等具有多种状态转换或经历动态变化的应用的理想选择。

审核编辑 黄昊宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分