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.

[参考译文] TMS320F280049C:使用2个电流传感器而不是3个电流传感器时的噪声电流。

Guru**** 2590860 points
Other Parts Discussed in Thread: DRV8320, DRV8301, MOTORWARE, BOOSTXL-DRV8320RS

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/879559/tms320f280049c-noisy-current-when-using-2-current-sensors-instead-of-3

器件型号:TMS320F280049C
主题中讨论的其他器件:DRV8320DRV8301MOTORWAREBOOSTXL-DRV8320RS

对于我的应用、我打算仅使用2个电流传感器、而不是3个。 这是一个高电流应用、因此我将使用 LEM 电流传感器、这些传感器与相位(而不是低侧桥臂)内联、并感应两个相位而不是3个相位。

对于初始测试、我使用的是 DRV8320 Launchpad 套件。 我知道要启用两相感应、只需更改 user.h 中的#define:

#define USER_NUM_CURRENT_SENSORS              (2)

不过,这似乎起作用,但有几个问题:

1.仅选择2个传感器时、电机 ID 不起作用。 它可以与3个传感器配合使用。 选择2个电流传感器后、它会产生不良的 Rs、Ls 和磁通值、并且在整个过程中无法真正发出声音或正确旋转。  请参阅下面的文章

2.偏移校准不起作用,因此需要在启动时禁用此功能,以便电机正常运行。 如果我使用2个电流传感器运行偏移校准、电压偏移0最终会成为接近零的错误值。 这会导致电机严重运转。

电流信号中有一些噪声。 我的应用需要高电流控制器带宽、因此电流控制器增益高于正常值、这会放大任何噪声、在这种情况下会在电机中产生不良的可闻噪声。 借助3种电流感应、无需其他更改、即使在高增益值下也能正常工作。 我怀疑由于某种未知原因、有一些噪声从实际情况并非如此的地方引入到电流检测中。

我们已在旧的 Motorware 平台 xxxx69和 DRV8301上测试了2种电流感应、但问题不存在。

有什么想法吗?

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

    更新1:电机 ID 起作用-它只是初始偏移校准旋松、然后导致 ID 填充过程。 如果我禁用偏移校准、则 ID 过程有效。

    即使在 IDing 之后、噪声问题仍然存在。 低速时最明显的是、它会产生大量振动、而在使用3个传感器运行时不会产生振动。 在本例中、即使使用保守的 Idq 控制器增益值也是如此。

    更新2: 我发现偏移校准误差相关的问题:在 main.c (例如任何实验.c 文件)中、声明电压滤波器句柄的方式出错:

    //!<电压偏移计算的句柄
    FILTER_FO_Handle filterHandle_V[USER_NUM_CURRENT_SENSORS];
    //!<电压偏移计算
    FILTER_FO_Obj    FILTER_V[USER_NUM_VOLTGE_SENSORS];

    显然、这应该是:

    FILTER_FO_Handle filterHandle_V[USER_NUM_VOLTGE_SENSORS]

    不过、我仍然有噪声问题。 请帮助。

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

    您好 Hani、

    [引用 USER="Hani Chahine"]这是一个高电流应用、因此我将使用 LEM 电流传感器、这些传感器与相位(而不是低侧桥臂)内联并感应两个相位而不是三个相位。

    您是否知道 SVPWM (7相)仅使用2个电流传感器无法实现100%占空比?

    您可以在 SDK 中更改 hal.c、以便仅为代码的每个特定外设区域中的[i]循环配置2、但也建议不要这样做!  您提到的振动噪音可能是状态机未能设置正确的电机 ID 标志。 我们看到状态机通常从 RS -> RoverL 直接跳转到 LS 跳跃斜升速度和额定磁通 OL、因为状态通常在连续速度上传递。 我们检查此区域 SDK、因为 LS 似乎需要在 RatedFlux OL 之前通过 RampUp (155Hz)实现高速转子图 6-22. SPRUHJ1H–2013年1月–2019年6月修订第264页图6-20、6-22

    我们尝试以不同的方式设置 RampUp 等待时间(user.c)、因此 在状态缓降之前的 ID 电流图6-23对于状态 LS 是稳定的。  看来状态 LS 通常在状态下降期间发生、直到调整其他等待时间(user.c)。   

    pUserParams->estWaitTime[EST_State_RAMPUP]=
    (int32_t)(20.0 * USER_EST_FREQ_Hz);
    //(int32_t)(((USER_MOTOR_FLUX_EXC_FREQ_Hz / USER_MAX_ACCEL_Hzps +
    //(float32_t) 1.0)* USER_EST_FREQ_Hz); 

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

    6.5.6.2总测量时间图6-21
    此图中显示的时间基于电流斜降的默认设置3秒(EST_Flux_State_CL1、CL1代表闭环1)和额定磁通微调的默认设置4秒(EST_Flux_State_Fine)、总共为7秒。 这两个值均通过文件 user.c 中的函数调用进行设置、如下所示:
    pUserParams->FluxWaitTime[EST_Flux_State_CL1]=(uint_least32_t)(3.0* USER_EST_FREQ_Hz);
    pUserParams->FluxWaitTime[EST_Flux_State_Fine]=(uint_least32_t)(4.0* USER_EST_FREQ_Hz);
    已知这些默认值适用于算法验证期间测试的所有电机。 请注意、根据定义(user.c)、通过状态机不会发生状态 OL (开环)时间等待。 因此、根据图22、斜升速度应在状态 OL 之前发生、而不是 Ls。 这似乎也是电机振动的一些问题、似乎 TI 工程师需要先根据文档检查状态机。 否则、试验错误、但在状态 RS 后不应发生转子振动。   

    pUserParams->LsWaitTime[EST_LS_State_RAMPUP]=
    (int32_t)(10.0 * USER_EST_FREQ_Hz);
    pUserParams->LsWaitTime[EST_LS_State_粗 调]=
    (int32_t)(3.0 * USER_EST_FREQ_Hz);//was 30
    pUserParams->LsWaitTime[EST_LS_State_Fine]=
    (int32_t)(30.0 * USER_EST_FREQ_Hz); 

     

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

    hani Chahine 说:
    在 main.c (例如任何 lab .c 文件)中,声明电压滤波器句柄的方式有误:

    但是、SDK (hal.c)似乎可以解决该问题筛选器。 您是否使用了旧版的 Motorware 控制套件? 我在 LS 状态之后直接看到相同的低速振动 UserMotorHz 20-40Hz、恰好在 CL2斜坡电机1.3krpm 之后、突然速度将灌篮声降低到 LS 状态。 振动启动频率高达300Hz、在500Hz 附近似乎更小、并且仍然具有奇数噪声、从而干扰 PWM 换向。 由于在 LS 状态后20-40Hz 的低速振动过大、因此还修改了(is05_moter_id.c)以允许用户获得 Hz 速度。 在 ID 完成后、切勿在没有振动的情况下运行电机、除非添加了补丁、并且将用户电机 ID 速度提高至300-500Hz、最大速度650Hz +25% 775Hz。

    void HAL_setParams (HAL_Handle handle)
    {
    HAL_setCurrentNumSensors (handle、USER_NUM_CURRENT_SENSORS);
    HAL_setNumVoltageSensors (handle、USER_NUM_VOLTAGE_SENSORS); 
    //
    //设置一些全局变量
    //
    motorVars.pwmISRCount = 0; //清除计数器
    motorVars.speedRef_Hz = 20; //设置参考频率
    motorVars.accelerationMax_Hzps = 10.0 

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

    感谢您花时间作出响应。

    1没有为起诉280049c 配置.Motorware、因此我将使用最新的 SDK 进行开发和测试。

    降低调制指数不是问题-我已经知道这一点。

    3.我所描述的滤波器错误是真的! 它涉及偏移校准、而不是运行时间。 尝试一下、您将看到我的意思。

    ID 和偏移校准问题已得到解决。 您提到的所有内容对我来说都不是问题。 我的问题是、在实验6或7中、在我已经在 user.h 中输入了正确的电机参数后、使用2个或3个传感器时、电流明显存在差异。 就像有一些随机噪声注入感应电流、我不确定它来自何处、因为测试2个或3个电流传感器时的硬件是完全相同的、所以我怀疑这是软件问题、但我无法用手指来解决。

    要重现此问题、只需尝试使用3再2个电流传感器设置来运行您的电机。 增加 ID/IQ 电流控制器 KP 增益以加剧噪声、您应该能够在2电流传感器设置下听到噪声。

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

    [报价用户="Hani Chahina"]当然,我使用的是最新的 SDK [/报价]

    好的、像您写的(main.c)一样困惑、我找不到(任何 labs.c)。 只有(labs.h)存在、找不到您以黄色显示的错误对象。 这就是为什么我发布了上面的 HAL_SetupParams(),因为 CTRL+Click 找不到黄色对象。 它必须是 labs.h 文件中的 CCS 隐藏内联对象?   

    [引用用户="Hani Chahina"]。 就像有一些随机噪声注入到感应电流中[/引述]

    电机通过 EST_State_Online 在实验5中具有 PWM 杂散噪声、并且在 EST_State_LC (振动/噪声)期间启动<350Hz。 通过 EST_TRAJ_State_Online (<350Hz)速度、振动变得更糟糕、达到5.1Krps 的平滑度。 噪声似乎与 PGA 相关的电机瞬态允许噪声进入在线系统。 我们在 site2上有一个 Booster、用于测试 RC 滤波器。 原理图显示了330pf 电容器(DNP)、用户指南指出 RC 确实存在站点2。 我尚未确认这一点、因为 BoostXL-DRV8320RS 现在位于 J5-J8接头上、据说存在 RC。     

    [引用 user="hani Chahine">2. 调制指数降低不是问题-我已经知道这一点[/引述]

    即使从3个电流传感器调用100%调制 SDK 索引算法也是很好的。 我们仍在等待 ROM 转换产生接近正弦的 PWM 驱动。 SVPWM 的点是生成具有来自 Clarke/Park 的正弦伪影的占空比。 ROM 转换6个输入(IQ/Vd)似乎需要通过加载到闪存中的开源代码进行修改。 但是、如 FOC InstaSpin SPRUHJ1H–2013年1月–2019年6月修订版所述、SDK 中未包含开源 ROM 调用。 也许 ROM 将允许2 (ID/Vd)个输入被配置为 NULL 值。   

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

    您在上面提到的这个错误出现在用于电压滤波器的实验(is0x_mylab.c)中。 很棒的发现!

    //!<电流偏移计算
    filter_FO_Handle filterHandle_I[USER_NUM_CURRENT_SENSORS]的句柄;
    //!<电流偏移计算
    filter_FO_Obj filter_i[USER_NUM_CURRENT_SENSORS];
    
    //!<电压偏移计算的句柄
    filter_FO_Handle_V[USER_NUM_CURRENT_SENSORs];
    //!<电压偏移计算
    filter_FO_Obj FILTER_V[USER_NUM_VOLTGE_SENSORS]; 

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

    然而、失调电压滤波器贴片不能帮助 Est_State_Online 随机 PWM 逆变器进行转换。 这种12极电机转速必须保持>550Hz 以减少 PWM 抖动。 速度<500Hz 可让我想起2周期电动机空闲的声音。 奇怪的换向角会在不必要的随机抖动中发挥一定的作用。

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

    您好 Hani、

    感谢您找到错误、我将在最新的 MotorControl SDK 中修复它。 您能否使用示波器发布一些捕获的电流波形、以显示有助于我们分析问题的噪声? DRV8320RS 电路板上或您自己电路板上的噪声是多少? 该噪声在什么识别状态下?

    对于电机识别、您必须根据您的电机调整识别变量(电流和频率)、如 instaSPIN 实验室指南中所述。

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

    您好!

    [引用 USER="Yanming Lua"]您能否使用示波器发布一些捕获的电流波形以显示有助于我们分析问题的噪声?

    我目前没有任何示波器捕获、但您可以在 ID/IQ 信号上看到额外的噪声。

    [引用用户="Yanming Lua"]是 DRV8320RS 板上还是您自己板上的噪声?

    这位于 DRV8320RS 电路板+ 49C launchpad 上。

    [引用用户="Yanming Luo "]以及该噪声的识别状态是什么?

    您将 ID 问题与2电流传感器噪声问题混淆。 我的 ID 问题与上述偏移错误有关。 在整理偏移错误后、我没有 ID 问题。

    关于噪声问题、由于硬件是标准 EVB、因此重现此问题应该非常容易。

    1.识别您的电机。

    2.增加电流控制器带宽(可能高10倍或以上)。

    3.使用3个电流传感器运行电机并观察噪声。

    4、更换为2个电流传感器、然后再次运行、其他所有传感器完全相同。

    您应该会看到噪声和行为的差异。

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

    没错。 电流控制器带宽不能设为非常高、这应该与电机和 ISR 频率相关。 如果您不更改默认参数、是否有任何噪声?

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

    [引用用户="Yanming Lua"]

    没错。 电流控制器带宽不能设为非常高、这应该与电机和 ISR 频率相关。 如果您不更改默认参数、是否有任何噪声?

    [/报价]

    我的独特应用需要设置更高的电流控制器带宽-我理解这会产生放大任何噪声的效果。我不理解的是、在选择2个电流传感器时、增加的噪声比使用3个电流传感器时要差得多。 即使在正常电流增益下、在测试2个电流传感器和3个电流传感器时、仍然存在一些感知性能(稳定性)损失甚至一些噪声差异。 有些东西本质上是不同的、我无法理解为什么。 请自行测试。

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

    请检查电流传感器输出的滤波器电容、电流滤波器的截止频率必须远高于电压滤波器。 如果使用内联电流传感器、则2个电流传感器方法的性能应与3分流电流感应方法相同。