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.

[参考译文] CCS/DRV8301-69M套件:当手动以0扭矩反向旋转电机时,快速估算器给出错误读数

Guru**** 2560970 points
Other Parts Discussed in Thread: MOTORWARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/632150/ccs-drv8301-69m-kit-fast-estimator-gives-bad-reading-when-spinning-motor-by-hand-in-reverse-direction-with-0-torque

部件号:DRV8301-69M-Kit
主题中讨论的其他部件:MOTORWARE

工具/软件:Code Composer Studio

尊敬的各位:

首先,感谢大家提供了有关本论坛的大量信息。 我在这里学到了很多。
很遗憾,我无法找到已报告的以下问题。

我修改了proj_lab05e和proj_lab05a (谢谢 )版本,以便在速度和扭矩控制之间切换(motorware_1_01_00_18)。
此外,我还通过SPI电机角度,速度和扭矩与MATLAB进行通信(这是随附图中的输出)。
对于角度,我导出霍尔传感器信息(如图所示),而实验室控件也使用内部快速估算器来导出角度(我不尝试混合,只导出我自己的变量中的角度)。

在扭矩和速度控制方面,我在MATLAB中获得了非常好的读数。
但是,当我在扭矩控制(设置零扭矩)中以一个方向手动旋转轴时,我会得到非常奇怪的速度和扭矩读数  
(如上所述,角度来自我自己的程序,基于霍尔传感器)。 另一个方向是好的。
此外,当轴以正或负非零扭矩旋转 ïn扭矩模式时,我会添加手动干扰,只会在一个方向产生类似的效果。

我不知道从哪里开始寻找... 欢迎所有想法!

此致,
Tomas

零扭矩+手动干扰(改变方向3次2次)

扭矩控制和改变目标扭矩的方向

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当您将扭矩电流命令设置为零时,电机的速度是多少? 如果速度非常低于1Hz,估计器很难正常工作,因为bemf对于转子位置估计来说太低。 InstaSPIN正在使用力角以低速运行马达,您需要在项目中启用力角功能,因此您需要为力角功能设置正确的速度和方向。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    延明

    感谢您的回复。 速度肯定在1Hz以上(通过对我的电机进行校准,我甚至可以在速度控制中使其运行低至0.1Hz)。
    我不理解的是,这种行为仅在手动朝一个方向转动电机时才会发生。 将电机朝另一个方向旋转不会产生此类问题。 电动机的积聚完全对称。

    所以我想先看看我解释这种不对称的代码。 有任何提示?

    BR,T
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉!! 我在proj_lab05e.c中设置gMotorVars.Flag_enableForceAngle =0,实际上它现在可以工作。
    我仍然可以保持非常好的速度控制在0.1Hz。

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

    也许只是对其他人的帮助...

    在我的应用中,我根据工作模式使用扭矩和速度控制。
    即使在非常低的速度下,我也需要绝对良好的快速估算:
    -对于位置,我使用霍尔传感器
    对于速度和扭矩,我使用快速估算器

    在静止和极低速度下,我启用了力角。
    一旦达到一定的最低速度,我就会关闭(在主位置)。

    我取代:

    //启用/禁用强制角度
    est_setFlag_enableForceAngle(obj->estHandle,gMotorVars.Flag_enableForceAngle);

    通过:

    //添加了ForceAngle ON/OFF - BEGIN的代码
    //当ForceAngle打开时:良好的启动性能
    //当力角关闭时:修正速度和扭矩的快速估算器
    IF (_IQabs (gMotorVars.Speed_Krpm)<_IQ (5.0 * ST_MIN_ID_Speed_PU)){
      est_setFlag_enableForceAngle(obj->estHandle, true);
      gMotorVars.Flag_enableForceAngle =真;
    }其他{
      est_setFlag_enableForceAngle(obj->estHandle, false);
      gMotorVars.Flag_enableForceAngle =假;
    }
    //为ForceAngle开/关-结束添加了代码

    此致,
    Tomas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tomas,
    此外,仅使用扭矩控制时,请确保您设置的速度参考带有与扭矩命令相同极性的符号。这是FAST的方向能力所必需的。 这可能是您只从一个方向看到问题的原因。