This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DRV8301-69M-KIT:电机制动

Guru**** 2756835 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1030953/drv8301-69m-kit-motor-braking

器件型号:DRV8301-69M-KIT

我使用 DRV8301-69M 驱动 BLDC 电机、并让其正常工作以生成所需的功率输出等 然而、我需要的一件事是、在电机运行后、我需要让电机提供一段时间的制动。 我正在对电机使用速度控制、因此我执行制动操作的方式是将速度参考设置为_IQ (0.00)。 这种做法有些奏效。 您可以知道电流正在电机中流动、试图将转速保持在0 RPM、但噪声很大。 电机将稍微振荡和/或沿一个方向启动、然后停止。 我已更改了环路常量、但这并没有带来很大的改进。  

在我看来、一种解决方案就是将所有三个相位简单地接地、这将是一种有效的制动器。 是否有更好的制动解决方案? 如果我可以强制 PWM 输出全部开启三个相位接地、看起来也可以正常工作。 有人能不能像这样帮助我实施制动器。 我有一个软件超时、因此5分钟后、它将一起关闭 PWM、这一切正常。 我只需要更好地控制制动器。

我的项目以实验5b 为基础。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想指出的是、我不是试图将电机停止为主动制动器。 我正在尝试在电机停止后的一段设定的时间内保持电机静止。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当速度命令从较高的值降低时、您可以尝试实现再生制动模式、能量将回流以提高链路电容器的直流总线电压。 因此、单独的直流电压监控器和电阻器中多余能量的耗散可能是一种耗散能量的方法。

    如果您不想使用再生制动模式、可以 尝试打开全部三个底部开关、在这种情况下、能量会随着电机内部的热量而耗散。

    您可能会在一些工程文本簿中找到此类主题、但我 没有具体的主题。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    打开三个底部开关听起来就像我所需要的一样。 我只需要固定电机、但仍然不能真正将其用作制动器。 如何通过软件打开三个底部开关?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    调用此 enableBreakPwm()函数一次以进行制动。

    static inline void HAL_enableBreakPwm(HAL_Handle handle)
    {
      HAL_Obj *obj = (HAL_Obj *)handle;
    
      // Force high side off, low side on
      PWM_setActionQualContSWForce_PwmA(obj->pwmHandle[PWM_Number_1], PWM_ActionQualContSWForce_Clear);
      PWM_setActionQualContSWForce_PwmB(obj->pwmHandle[PWM_Number_1], PWM_ActionQualContSWForce_Set);
    
      PWM_setActionQualContSWForce_PwmA(obj->pwmHandle[PWM_Number_2], PWM_ActionQualContSWForce_Clear);
      PWM_setActionQualContSWForce_PwmB(obj->pwmHandle[PWM_Number_2], PWM_ActionQualContSWForce_Set);
    
      PWM_setActionQualContSWForce_PwmA(obj->pwmHandle[PWM_Number_3], PWM_ActionQualContSWForce_Clear);
      PWM_setActionQualContSWForce_PwmB(obj->pwmHandle[PWM_Number_3], PWM_ActionQualContSWForce_Set);
    
      return;
    } // end of HAL_enableBreakPwm() function

    调用此 HAL_EnableAllPwms()一次以重新启动电机

    static inline void HAL_EnableAllPwms(HAL_Handle handle)
    {
      HAL_Obj *obj = (HAL_Obj *)handle;
    
     PWM_setActionQualContSWForce_PwmA(obj->pwmHandle[PWM_Number_1], PWM_ActionQualContSWForce_Disabled);
      PWM_setActionQualContSWForce_PwmB(obj->pwmHandle[PWM_Number_1], PWM_ActionQualContSWForce_Disabled);
    
      PWM_setActionQualContSWForce_PwmA(obj->pwmHandle[PWM_Number_2], PWM_ActionQualContSWForce_Disabled);
      PWM_setActionQualContSWForce_PwmB(obj->pwmHandle[PWM_Number_2], PWM_ActionQualContSWForce_Disabled);
    
      PWM_setActionQualContSWForce_PwmA(obj->pwmHandle[PWM_Number_3], PWM_ActionQualContSWForce_Disabled);
      PWM_setActionQualContSWForce_PwmB(obj->pwmHandle[PWM_Number_3], PWM_ActionQualContSWForce_Disabled);
    
      PWM_clearOneShotTrip(obj->pwmHandle[PWM_Number_1]);
      PWM_clearOneShotTrip(obj->pwmHandle[PWM_Number_2]);
      PWM_clearOneShotTrip(obj->pwmHandle[PWM_Number_3]);
    
      return;
    } // end of HAL_EnableAllPwms() function

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、这确实起了作用、并且保持得很好、这是我的要求。 然而、电机就在那里、并且会发出相当大的噪声、听起来像是有噪声。 电机确实会阻止运动、但我不确定为什么会产生如此大的噪声。 它几乎就像移动一些电流过电机一样、很难理解这是否只是将电机绕组拉至低轨。 是否知道为什么评估板上会有如此大的噪声?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是正常现象、能量在电机绕组中耗散。  如果您想使用此制动模式、则无法消除此噪声。