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.

[参考译文] TMS320F28069:实验12b 中的编码器

Guru**** 2589275 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/769610/tms320f28069-lab-12b-with-encoder

器件型号:TMS320F28069

您好!

我们在高电压 TI 套件上的实验12b 中遇到了问题。 我们已使用实验2a 和 b 验证了电机参数。  

问题是、我们使用实验12b 打开电机时、来自直流电源的输入电压从48VDC 降至接近6V。 但是、电机开始以高达80rpm 的转速运转、而不会产生噪声。

一旦我们禁用了强制角,输入电压不会下降,但电机开始产生如此多的噪声,并且不会平稳旋转。 有什么想法吗?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在运行 lab12b 之前、您是否运行 lab12a 来识别惯性? 并确保正确连接编码器和更多线路? 如果电机或编码器导线以错误的顺序连接、即使像您看到的那样具有过流保护、所有传感器实验室都无法正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我们在没有加载的情况下运行了 lab12a、并将数字放入 user.h 中 我们还检查了电机/编码器连接、它们看起来都正确。
    我们碰巧在这里看到了同样的问题:( e2e.ti.com/.../593501 )

    您认为它是相关的吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、由于风扇使用 lab12 A 旋转了一段时间、我们无法完成 lab12a 的负载、但我们仍然遇到错误2004。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用了什么硬件板? TI EVM 套件? 或您自己的电路板。 您必须执行偏移校准、并确保电流和电压采样信号适合运行电机。
    lab02b 和 lab12a 必须在没有加载的情况下运行、然后也在 user.h 中设置识别的参数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我们使用的是 TI 的高电压套件。 还有其他建议吗?
    实际上、我们的电机在无传感器且无负载的情况下工作正常。 但是、在使用负载进行测试时、尤其是在启动时、我们遇到了无传感器问题。 因此、我们决定使用编码器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如前所述、我们在48V 直流输入下使用 TI 高压套件、该套件由直流电源供电。 我们尚未进行任何硬件更改。 此外、user.h 中唯一的变化是电机参数。 有什么建议?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    电机的额定电流和最大电流是多少? 我认为这不是一种将 HV 套件用于此类低压电机的好解决方案、请注意、HV 套件仅支持10A 额定电流和20A 峰峰值电流。 低压电机可能会对 HV 套件的过流保护进行三角测量、这就是电机无法在负载下运行的原因。 您可以尝试使用 DRV8301-HC-KIT、它可以支持60V/60A。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复! 电机电流额定值为6.5A。 实际上、我们已将其与 HV 套件配合使用、但我们无法超过300 rpm。 我们需要高达600rpm、电机的额定转速为900rpm。 是否知道为什么速度不超过300 rpm?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、还有其他建议吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您有问题、请发布一些电流波形以显示您的问题吗? 电机能否在没有任何负载的情况下高速运转? 您可以检查 Id 和 Iq 电流调节器的输出、以检查输入是否足够。 您可以增大输入电压以查看发生了什么以及最大速度是否增加。
    BTW、极对是否正确? 而不是 user.h 中的极点
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    电机持续扭矩为4.2 Nm。电机在无负载的情况下可达到最大900 rpm。 增加输入电压没有任何帮助。 极对也是正确的。 98个极对)。 我们如何检查 IQ 和 id 的输出?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您设置了什么 USER_MOTOR_MAX_CURRENT? 您可以在 user.h 中增加该值 如果没有任何改进、请在 CCS 的"Watch Expressions"窗口中监控以下变量。

    ST_obj.vel.ctl.out
    ctrlHandle->Vdq_out.value[0]
    ctrlHandle->Vdq_out.value[1]
    ST_obj.vel.id.cfg.OutMax
    ST_obj.vel.ctl.cfg.OutMax
    st_obj.vel.ctl.cfg.OutMin
    gUserParams.maxVsMag_pu
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它设置为8。 提高该值没有任何帮助。 根据 CCS、我们似乎要达到4.2nm 的电机最大扭矩。 但是、我们的负载实际上并没有那么大。 我们的负载不超过1nm。 是否知道控制器为什么要向电机发出这么大的扭矩命令? 我们非常确信、对于简单的风扇负载、我们不需要这么大的扭矩。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    下面是一个更新:实际上,将 USER_MOTOR_MAX_CURRENT 值从10增加到20有助于将速度从350rpm 提高到450rpm。 但是,CCS 显示的扭矩值非常高(~ 10nm),并且电机变热。 有什么想法吗? 我们想知道为什么控制器要求的扭矩太大、而我们不需要扭矩时!感谢您的紧急响应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yanming、有什么意见/建议? 感谢您的帮助、因为我们遇到了困难...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    InstaSPIN-FOC 使用 d-q 转子基准帧中的转矩公式估算 PMSM 的机械转矩(Te)、该公式取决于磁通、LD、LQ、ID 和 IQ。 转矩是一个估算值、不精确、但接近 Tj+TM (您已添加)。
    在此状态期间、Iq 似乎不正确、请检查高速状态下的以下变量、并发布它们以帮助分析此问题。

    ST_obj.vel.ctl.out
    ctrlHandle->Vdq_out.value[0]
    ctrlHandle->Vdq_out.value[1]
    ST_obj.vel.id.cfg.OutMax
    ST_obj.vel.ctl.cfg.OutMax
    st_obj.vel.ctl.cfg.OutMin
    gUserParams.maxVsMag_pu

    请在 updateGlobalVariables_motor()中添加以下代码,并检查 gMotorVars.vs。 如果 gMotorVars.vs 接近 gUserParams.maxVsMag_pu、额定速度可能不正确、并且您需要实施磁场减弱控制来获得高速。

    //按单位读取 Vd 和 Vq 矢量
    gMotorVars.Vd = CTRL_getVd_out_pu (ctrlHandle);
    gMotorVars.VQ = CTRL_getVq_out_pu (ctrlHandle);

    //计算向量 vs 以标么值表示
    gMotorVars.vs =_IQsqrt (_IQmpy (gMotorVars.vd、gMotorVars.vd)+_IQmpy (gMotorVars.VQ、gMotorVars.VQ));