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.

[参考译文] MSPM0G1507:无法运行较低的速度?

Guru**** 2896470 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1626617/mspm0g1507-cannot-run-lower-speed

部件号: MSPM0G1507
主题: SysConfig 中讨论的其他器件

你(们)好

我使用了以下无传感器 FOC 的示例。

https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AKUmVVvwENJTxxowDwqtcg__MSPM0-SDK__a3PaaoK__LATEST&placeholder=true

 

我根据 isr.c 中的调优指南在下面进行了更改

  pUserInputRegs->isdCfg.w     = 0x6644040A;
  pUserInputRegs->closeLoop2.w  = 0xB9900C90;
  pUserInputRegs->systemParams.mtrResist    = 3650;
  pUserInputRegs->systemParams.mtrInductance  = 189;//1265;
  pUserInputRegs->systemParams.mtrBemfConst  = 9;//400;5.672*PI/4=8.9
  pUserInputRegs->systemParams.speedLoopKp   = 0.01;
  pUserInputRegs->systemParams.speedLoopKi  = 0.05;
  pUserInputRegs->systemParams.currLoopKp  = 1;
  pUserInputRegs->systemParams.currLoopKi  = 500;
  pUserInputRegs->systemParams.maxMotorSpeed = 1266;//4*19000/60 RPM
  pUserInputRegs->systemParams.fluxWeakeningKp  = 1.0;
  pUserInputRegs->systemParams.fluxWeakeningKi  = 500;
  pUserInputRegs->systemParams.maxMotorPower  = 10;
 
将 speedCtrl 更改为 400。
image.png
它可以如下运行。
image.png
波形如下所示。
image.png

问题:

我希望以非常低的速度和高精度运行电机。 但它只能在我设置>400 时运行。

有什么想法吗?

BR、

Frank

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

    您好 Frank、
    根据我所能看到的、您必须更改此 IRQ 中的值才能更改速度。 在这种情况下、我建议分解 IQ15toIQ 函数的功能、或简单地使用任何更适合您的应用的值。 为了便于参考、您可以搜索在 SysConfig 文件中设置的默认加载值。

    此致、

    Diego Abad

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

    Diego、

    我发现  MIN_TARGET_SPEED 为 1342177。

    低于代码限制最小速度。
     
    /*!  @ 以浮点格式表示的短暂最小目标占空比*/
    #define MIN_TARGET_DUTY_FLOAT             0.01
    /*!  @ 最低速度简介*/
    #define MIN_TARGET_SPEED               _IQ (MIN_TARGET_DUTY_FLOAT)
         if ((targetSpeed < MIN_TARGET_SPEED)||
            (PMC_App->maximumSpeed ==  0))
        {
          TargetSpeed =  0
        }
    当我设置 speedCtrl= 400 => g_pAppInterface->userInputs.speedInput =1638400 时
    电机就可以运行。
    如果设置为以下值、电机将无法运行。
    #define MIN_TARGET_DUTY_FLOAT             0.001
    是否知道如何调整该值?
    BR、
    Frank