您的位置:首页 > 其它

使用专门的MCUs来简化动作控制设计---凯利讯半导体

2018-01-24 13:56 225 查看
  数字运动控制方法提供精确的运动和定位电动机和驱动器的驱动末端执行器在机器人系统。然而,在实践中,工程师们开发基于传统比例积分(PI)控制器的运动控制系统,通常会发现他们的项目陷入停滞,因为他们很难调整敏感的控制器参数。一种更有效的方法降低了调优复杂性,同时在广泛的操作条件下实现稳定的性能。

  低成本、高性能的微控制器推动了数字电机控制的快速出现,能够通过软件控制来响应广泛的操作条件。通过在软件中设计PI控制器,工程师可以创建具有最少数量组件的高度响应的电机控制系统。然而,在实践中,找到最优的PI控制器参数集给开发人员带来了巨大的挑战。工程师们经常发现,每个电机的独特特性(以及相关的电机控制系统的实现)使得确保电动机在不同的速度和负载下稳定运行的任务变得更加复杂。因此,motorcontrol开发团队发现自己被迫扩展项目进度并解决细微的调优问题。

  比例积分控制器的挑战

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

  图像的德州仪器串行形式的控制回路。



  图1:在传统PI控制器的串行形式中,工程师必须找到其0 (Kb)和带宽(Ka)的最优设置,这是一个经常延迟动作控制项目的过程。(图片来源:凯利讯半导体)

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

  德州仪器的图像典型的速度控制回路。



  图2:一个典型的速度控制回路使用两个PI控制器来控制电机电流和速度本身,使寻找最优控制器参数的任务更加复杂。(图片来源:凯利讯半导体)

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

  先进的控制算法

  TI InstaSPIN-MOTION解决方案为数字电机控制设计提供了一个非常简单的方法。在InstaSPIN-MOTION的核心,来自LineStream技术的SpinTAC提供了对系统的动态速度、位置和负载范围的鲁棒控制。这种专用方法提供了先进的速度和位置控制,并具有主动干扰抑制控制(ADRC)。

  ADRC在电机模型中有很高的不确定性。它将未建模的电机动力学和不期望的系统行为视为可以估计、拒绝或纠正的干扰。这使得SpinTAC控制器能够控制各种各样的位置、速度和负载,其中一个调优参数称为带宽,它决定了系统的刚度,并决定系统将如何积极地拒绝干扰。

  当设计器通过这种调优方法增加控制器的带宽时,对转矩扰动的响应就会变得更快,并具有更少的超调(图3)。如果带宽设置得太高,系统就会在转矩扰动从系统中移除时开始围绕目标速度振荡。设计人员只需要发现当扭矩被移除时,在目标速度值周围的最小振荡的带宽。

  德州仪器SpinTAC调谐图的图像。



  图3:SpinTAC调优只需要设置一个参数—带宽。在这个例子中,理想的带宽是40 rad/s。在这个带宽上,当转矩被移除时,响应在目标速度附近显示最小的振荡。(图片来源:凯利讯半导体)

  简化开发

  不需要处理传统PI控制器中优化多个参数的复杂性,InstaSPIN-MOTION让工程师只需设置一个带宽参数就可以调整系统。与使用传统PI控制器的设计相比,这种简单而健壮的方法可以显著减少开发时间。与此同时,这种方法提供了一个解决方案,其特点是减少了超调和更快的解决时间,从而导致了最终应用程序的总功耗降低(图4)。

  德州仪器的图像恢复时间。



  图4:对于应用的扭矩干扰,InstaSPIN比传统的PI控制器循环更快地恢复。(图片来源:凯利讯半导体)

  TI还提供了一个广泛的开发和部署平台,将软件和硬件结合起来。TI的汽车产品包括设备专用驱动和
4000
支持软件,以及完整的系统实例和技术培训。

  更快地部署这些设计,TI提供专业版本的C2000短笛单片机,包括InstaSPIN-MOTION库在芯片上的ROM和Flash,没有额外费用(图5)。基于90 MIPS C28x处理核心,的C2000 InstaSPIN TMS320F28069M单片机结合片上InstaSPIN-MOTION电机控制软件与一个完整的片上外设包括16通道模拟-数字转换器(ADC)获取电机控制算法中使用的数据(例如,看到ADC输入显示在右边的图5)。

  德州仪器TMS320F28069M MCU图(按全尺寸点击)



  图5:德州仪器的TMS320F28069M MCU在芯片上安装了InstaSPIN-MOTION软件库,进一步简化了运动控制系统的开发。(图片来源:凯利讯半导体)

  tms320f2806900也有8个芯片增强脉冲宽度调制器(ePWM)模块,提供16个PWM通道。因此,工程师可以用最少的额外部件快速设计完整的电机控制系统。MCU的PWMs可以直接驱动特殊的隔离门驱动,如TI ISO5851(图6)。ISO5851的特点是CMOS输入,使单片机直接驱动它们,不像典型的光电耦合器,它需要外部电流驱动和偏置电路来提供输入控制信号。

  德州仪器仪表ISO5851 CMOS隔离门驱动。



  图6:与一个高度集成的微控制器,如TI TMS320F28069M, CMOS隔离门驱动,如TI ISO5851,允许设计者创建复杂的电机控制系统,并且附加组件数量最少。(图片来源:凯利讯半导体)

  在软件方面,由于SpinTAC控制器算法,电机控制实现同样简单。工程师将SpinTAC速度控制配置为最小的步骤,包括一个适当的头文件(例如,spintac_velocity.h),将SpinTAC软件组件引入到应用程序中。(此示例处理了SpinTAC速度控制,但SpinTAC位置控制配置采用了类似的方法。)

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

  ST_VelCtl_t stVelCtl;// SpinTAC速度控制器对象。

  ST_VELCTL_Handle stVelCtlHandle;// SpinTAC速度控制器手柄。

  在应用程序的主要功能中,开发人员会将配置变量初始化到它们的默认值。对于许多电动机,这种配置通常包括以下变量:

  //初始化SpinTAC速度控制器组件stVelCtlHandle = STVELCTL_init(和stVelCtl, sizeof(stVelCtl));

  //设置PU最大电流。

  _iq maxCurrent_PU = _iq (USER_MOTOR_MAX_CURRENT / USER_IQ_FULL_SCALE_CURRENT_A);

  //速度控制器的实例。

  STVELCTL_setAxis(stVelCtlHandle ST_AXIS0);

  //样本时间[s], (0,1)

  STVELCTL_setSampleTime_sec(stVelCtlHandle _IQ(ST_SPEED_SAMPLE_TIME));

  / /系统惯性上(0,127.9999)和低(0,SgiMax]限制(PU /(PU / s ^ 2)]STVELCTL_setInertiaMaximums(stVelCtlHandle,_IQ(10.0),_IQ(0.001));

  // System control signal high (0, OutMax) & low [OutMin, 0] limit [PU] STVELCTL_setOutputMaximums(stVelCtlHandle, maxCurrent_PU, -maxCurrent_PU);

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

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

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

  / /系统惯性(PU /(PU / s ^ 2)]、[SgiMin SgiMax]

  STVELCTL_setInertia(stVelCtlHandle _IQ(USER_SYSTEM_INERTIA));

  //控制器带宽标尺[BwMin, BwMax]

  STVELCTL_setBandwidthScale(stVelCtlHandle _IQ24(USER_SYSTEM_BANDWIDTH_SCALE));

  //最初ST_VelCtl没有启用。

  STVELCTL_setEnable(stVelCtlHandle假);

  //最初ST_VelCtl没有重置。

  STVELCTL_setReset(stVelCtlHandle假);

  在操作过程中,主中断服务例程将更新速度引用、加速引用和速度反馈,然后将SpinTAC速度控制函数按比例(在ISR_TICKS_PER_SPINTAC_TICK中指定)调用。

  (ctrl + obj *)ctrl +手柄;//获取指针,以控制对象。

  //获得pu/s的机械速度。

  _iq speedFeedback = EST_getFm_pu(obj - > estHandle);//获得pu/s //更新速度参考的机械速度。

  STVELCTL_setVelocityReference(stVelCtlHandle

  STVELMOVE_getVelocityReference(stVelMoveHandle));

  / /更新加速度参考

  STVELCTL_setAccelerationReference(stVelCtlHandle

  STVELMOVE_getAccelerationReference(stVelMoveHandle));

  //更新速度反馈STVELCTL_setVelocityFeedback(stVelCtlHandle, speedFeedback);//运行SpinTAC速度控制器STVELCTL_run(stVelCtlHandle);

  //从SpinTAC速度控制器获得扭矩参考。

  iqReference = STVELCTL_getTorqueReference(stVelCtlHandle);

  //设置来自SpinTAC速度控制的Iq参考。

  CTRL_setIq_ref_pu(ctrlHandle iqReference);

  开发人员可以使用TI C2000 Piccolo F28069M LaunchPad启动汽车控制开发,该平台的功能是开发基于F2806x微处理器的所有硬件和软件。TI还提供了完整的电机控制解决方案,如高压电机控制组件,提供了对最常见的高电压、三相电机的控制,包括交流感应(ACI)、无刷直流(BLDC)和永磁同步电机(PMSM)。TI还提供了配套的套件,如BLDC Motor Kit,其中包括一个无刷直流电动机,内置的Hall-effect传感器,与电机控制工具包软件一起工作。

  结论

  传统的PI控制器的传统电机控制设计由于调整这些控制器的复杂过程而面临严重的延迟。内置在专门的微控制器中,TI的InstaSPIN-MOTION减少了对单个参数的调优,为设计者提供了简单和稳定的结合,使其成为像机器人系统这样的应用程序的理想状态,比如显示多个状态转换或经历动态变化的机器人系统。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐