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.

[参考译文] BOOSTXL-DRV8320RS:在无惯性和负载的情况下、使用 LauchXL F280049C + BoostXL-DRV8320RS 电机识别 Instaspin 电机失败

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1052554/boostxl-drv8320rs-instaspin-motor-identifying-failed-with-lauchxl-f280049c-boostxl-drv8320rs-motor-with-no-inertia-and-load

器件型号:BOOSTXL-DRV8320RS
主题中讨论的其他器件:C2000WAREDAC128S085

你好  

我认为,我需要一些建议,如何进行电机识别。  
我有

  • LauchXL F280049C
  • BoostXL DRV8320RS
  • MotorControlSDK 3.03.00.00
  • instaspin_spruhj1i.pdf
  • InstaSPIN 项目和实验室用户指南 V1.00.00.00 pdf。 Instaspin FOC 实验01-13

  • 我能够通过从 C:\ti\C2000Ware_MotorControl_SDK_3_03_00_00\solutions\boostxl_drv8320rs\f28004x\ccs\sensorless_foc\is05_motor_id_eabi 执行 LAB05来成功运行/识别"简单"电机(如无人机电机)
  • 我将 BoostXL-DRV8320的电压范围和电流范围减小至29V 和6A、并相应地修改了 user.h (工作正常)  

到目前为止非常好

现在、我需要识别"我们的"电机。 它具有一些"棘手"参数

  • RS = 6.67欧姆
  • ROverL = 31、4
  • 磁通电压/Hz = 0、007  
  • 1极对
  • 运行速度9000 RPM -> 33000 RPM = 150Hz -> 550Hz
  • 不能从负载上断开 (它是泵)  
  • 惯性很小
  • 具有高启动扭矩

在"EST_State_RAMPUP"之前、我能够运行"电机识别实验练习"。 (工作点150Hz)。 电机正在运行。 在斜升期间测量磁通 V/Hz 的值、该值相当稳定。  

完成后、电机立即停止。 我无法判断这是在"EST_State_CONSTSPEED"期间还是在"EST_State_RATEDFLUX_OL"或"EST_State_RATEDFLUX"期间

我必须手动识别 LQ 和 LD 哪些选项?  

是否有更详细的说明、估算器在电机识别期间所做的工作以及要了解的原因、它为什么会在斜升后立即停止? 是否有方法可以将估算器停止在特定状态以找出导致问题的步骤?  

此外:  

如果我想运行电机(如果已识别)、我需要执行开环启动、直到频率为150Hz。 我该怎么做? 是否有更详细的说明、如何调整启动过程?

此外:我发现很难理解"userParams.flag_BypassMotorId"标志如何传递给估算器。 估算器如何知道它不需要运行电机识别?

感谢你的帮助

Johannes

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

    Johannes、您好!  

    转发给 C2000团队以获取 MotorControl SDK 支持。  

    谢谢、
    Aaron

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

    请勿在电机上添加任何负载以进行识别、并根据电机规格在 user.h 文件中设置正确的识别变量值、以确保电机 在磁通测量和 LS 识别状态期间平稳旋转。 并按照实验室用户指南中的操作步骤来识别/运行电机。

     

    #define USER_MOTOR_RES_EST_CURRENT    (1.0)                              // A -电机额定电流的10-30%

    #define USER_MOTOR_IND_EST_CURRENT    (-1.0)                            // A -电机额定电流的10-30%、足以实现旋转

    #define USER_MOTOR_MAX_CURRENT          (5.0)                              // A -电机额定电流的30~150%

    #define USER_MOTOR_FLUX_EST_FREQ_Hz    (20.0)                          // Hz -电机额定频率为10~30%

    设置 userParams.flag_BypassMotorId = false 在调用 EST_setParams (estHandle、&userParams)之前、估算器将运行电机识别。

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

    您好 Yanming
    很抱歉、但这是不可能的。 我无法移除负载。 电机如此小、需要用液体冲洗以润滑轴承。 我无法将其干燥运行。 因此、我无法移除任何负载。  

    我还有其他哪些选择?

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

    您可能会尝试如 上所述调整识别参数、以使电机在识别过程中平稳旋转。

    如果负载随速度变化或过大而无法识别电机、则必须从电机制造商处获取电机参数、并按照 InstaSPIN-FOC 和 InstaSPIN-MOTION 用户指南第6.8节"在 user.h"中设置 PMSM 电机参数"中所述设置参数

    http://www.ti.com/lit/ug/spruhj1h/spruhj1h.pdf  

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

    我能够构建一台钻机、在无负载的情况下运行电机。 效果相同。 电机斜升至150Hz、然后在电机识别期间在"EST_State_CONSTSPEED"之后立即停止(获得非同步)。 MotorVars.faultUse 为零(无错误标志)

    首先、我需要一些电压来使电机运行。 如何设置最小电压? 常量 USER_VOLT_MIN_V 似乎未在 LAB05中使用(显然仅用于运行固定轨迹的早期实验)  

    如何调试估算器步骤"EST_State_RAMPUP"之后发生的情况?

    感谢你的帮助

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

    您的电机是 PMSM 吗? 或 ACIM?

    您是否尝试按上述方式调整识别参数?

    [引用 userid="103288" URL"~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1052554/boostxl-drv8320rs-instaspin-motor-identifying-failed-with-lauchxl-f280049c-boostxl-drv8320rs-motor-with-no-inertia-and-load/3896763 #3896763">我需要一些电压才能使电机首先运行。 如何设置最小电压? 常量 USER_VOLT_MIN_V 似乎未在 LAB05中使用(显然仅用于运行固定轨迹的早期实验) [/引用]

    是的、这些参数仅用于 lab03执行硬件验证。

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

    是的、这是一个外径为7mm 的"非凸极" PMSM 电机。 它的运行速度介于10000 RPM 和35000 RPM 之间。 额定功率为15V 1A

    我已经尝试了您刚才展示的设置。 但   我没有选择 MOTOR_MAX_CURRENT 5A 作为电机电流限制、而是选择2A。 我尝试了各种 磁通_EST_FREQ_Hz 20 / 40 /100 / 150
    全部都不成功。 估算器完成 rampup 和后、电机立即停止。  
    星期一我可以尝试5A 电流、但恐怕会损坏电机。 在检测过程中、它会变得很热(请记住、它是一个泵、由流体冷却。 现在让它干燥以去除任何负载、它现在变得很热)  

    Johannes

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

    以上识别参数仅供参考、您应根据电机设置这些参数。 由于您使用的是 TI EVM 套件、因此只需更改这些变量的值即可识别电机。

    或者、如果您无法在无负载的情况下运行电机以进行识别、则可以从其制造商处获取电机参数。

    [引用 userid="103288" URL"~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1052554/boostxl-drv8320rs-instaspin-motor-identifying-failed-with-lauchxl-f280049c-boostxl-drv8320rs-motor-with-no-inertia-and-load/3897634 #3897634"]额定功率为15V 1A

    看起来电机太小、无法使用此套件来获得良好的电流和电压感应分辨率。 您必须更改硬件以提高电流和电压感应分辨率。

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

    您好 Yanming

    请阅读我以前的帖子。 我已经修改了硬件、以缩小电压和电流测量范围。  
    我将电流测量范围从42A 更改为6A  
    我将电压测量范围从48V 更改为29V

    如上所述、我能够通过使电机"干燥"来移除负载。 但仍然:电机检测会在斜坡后停止。  

    没有改善。  

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

    您是否有机会运行/识别其他电机以验证您更改的硬件和软件?

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

    是的。 我运行了另一个电机、id 没有问题、

    是的、我在软件更改后运行它、

    是的、我在更改电压和电流范围后运行它、

    是的、我根据更改的电压和电流范围更改了 user.h 中的刻度设置。

    大型电机:一切正常(即使在负载条件下也是如此)  

    小型电机:在斜升后识别期间停止。

    我可以看到、对于大型电机、识别过程以突然的方式将高速缓升至中速的速度降低。 我假设、如果电机具有足够的惯性、它将保持运行。 我的"小"电机在此阶段停止。 它的惯性很小。

    我可以看到、对于我的小型电机、如果施加到电机的电压高于2.5V、它只会在识别期间旋转  
    我可以看到、在 rampup 之后进行识别期间、估算器会将电压降至该点以下。 因此、电机停止。 我可以将估算器/电机标识符设置为保持在2.5V 以上吗?

    您是否有建议、我应该将哪些参数放置在 PWMDAC 上并记录下来供您显示?  
    我还设法将 BOOSTXL DAC128S085 EVM 连接到 LauchXL F290049C (是的、我知道芯片选择在另一个引脚上、我更改了该引脚)我可以通过 DAC128S085输出多达8个通道。

    Johannes

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

    您的电机的额定电流和电压是多少? 如何更改电流和电压测量范围?

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

    您好 Yanming

    是否有办法改善我们的对话/理解? 似乎你重复了问题、我已经在这个主题中回答了。 也许我没有充分说明自己:

    关于您的问题:

    电机为15V、1、5A 1极对 PMSM (请参阅上文)、Rs=8 Ω、Ls_d = Ls_q = 30µH Ω(使用 LRC 仪表测量)

    另一个电机(大型电机、运行正常) 7个极对、2、87A @ 12V、RS 0、46、LS_d = LS_q = 181µH Ω

    硬件修改:


    我将 DRV8320RS 上的分流电阻器从0.007更改为0.05R (3次)  

    //#define USER_ADC_FULL_SCALE_CURRENT_A ((float32_t)(42.843))//RShunt = 0、007
    #define USER_ADC_FULL_SCALE_CURRENT_A ((float32_t)(5.999))//RShunt = 0、05


      

    我将分压器从82k/4.99k 更改为39k/4k99 (4次)。 3x 相、1x VSupply)

    //#define USER_ADC_FULL_SCALE_VOLTGE_V ((float32_t)(57.528))//Rupper = 82k、Rlower = 4k99
    #define USER_ADC_FULL_SCALE_VOLTGE_V ((float32_t)(29.091))//Rupper = 39k、Rlower = 4k99

    我可能错过了修改源代码中的过流阈值。 是否有特殊设置? 我假设"USER_ADC_FULL_SCALE_CURRENT_A"设置也会修改过流阈值。

    Johannes

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="103288" URL"~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1052554/boostxl-drv8320rs-instaspin-motor-identifying-failed-with-lauchxl-f280049c-boostxl-drv8320rs-motor-with-no-inertia-and-load/3903007 #3903007"]电机为15V 1、5A 1极对 PMSM (请参阅上文)、RS=8 Ω、LS_d = LS_q = 30µH Ω(使用 LRC 计量)[/QUESP]

    由于电机是低电感电机、因此您需要使用45kHz 等更高的 PWM 频率、如 user.h 中的以下设置

    #define USER_PWM_FREQ_kHz         ((float32_t)(45.0))    //45KHz PWM 频率

    #define USER_NUM_PWM_TICKS_PER_ISR_TICK        (3)

    [引用 userid="103288" URL"~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1052554/boostxl-drv8320rs-instaspin-motor-identifying-failed-with-lauchxl-f280049c-boostxl-drv8320rs-motor-with-no-inertia-and-load/3903007 #3903007"]#define USER_ADC_FULL_SCALE_CURRENT_A ((float32_t)(5.999))//RShunt = 0、05

    确保您不更改 PGA 配置、增益为12。

    [引用 userid="103288" URL"~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1052554/boostxl-drv8320rs-instaspin-motor-identifying-failed-with-lauchxl-f280049c-boostxl-drv8320rs-motor-with-no-inertia-and-load/3903007 #3903007"]#define USER_ADC_FULL_SCALE_VOLTGE_V ((float32_t)(29.091))//Rupper = 39k、Rlower = 4k99

    您应该更改低电感电机的电压滤波器。 将 C9、C10、C11从0.1uF 更改为47nF、并在 user.h 中更改以下参数

    #define USER_VOLTGE_FILTER_POLE_Hz          ((float32_t)(719.9083429f))

    并尝试以下识别参数。

    #define USER_MOTOR_RES_EST_CURRENT    (0.5)                              // A -电机额定电流的10-30%

    #define USER_MOTOR_IND_EST_CURRENT    (-0.2)                            // A -电机额定电流的10-30%、足以实现旋转

    #define USER_MOTOR_MAX_CURRENT          (2.0)                              // A -电机额定电流的30~150%

    #define USER_MOTOR_FLUX_EST_FREQ_Hz    (60.0)                          // Hz -电机的10~30%额定频率

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

    您好 Yanming
    感谢您的推荐
    我更改了您建议的所有内容: 结果:电机在识别期间根本不转动(仅振荡)  

    将 C9、C10、C11更改为47nF  
    #define USER_VOLTGE_FILTER_POLE_Hz       ((float32_t)(764.0)) //39k 4k99 47nF
    #define USER_PWM_FREQ_kHz      ((float32_t)(45.0))    //45KHz PWM 频率
    #define USER_NUM_PWM_TICKS_PER_ISR_TICK      (3)
    #define USER_MOTOR_RES_EST_CURRENT_A (0.5)
    #define USER_MOTOR_IND_EST_CURRENT_A (-0.2)
    #define USER_MOTOR_MAX_CURRENT_A (2.0)
    #define USER_MOTOR_FLUX_EXC_FREQ_Hz (60.0)
    #define USER_NOMINAL_DC_BUS_VOLTGE_V ((float32_t)(24.0))
    #define USER_ADC_FULL_SCALE_VOLTGE_V      (((float32_t)(29.091))//Rupper = 39k、Rlower = 4k99
    #define USER_ADC_FULL_SCALE_CURRENT_A      ((float32_t)(5.999)) //RShunt = 0、05

    结果:电机在识别过程中根本不运行、只会振荡。

    我可以提供一些扫描吗? 示波器图像等、以帮助查找问题?

    Johannes

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

    您是否尝试运行/识别其他类似电机以验证电机是否正常? 如果您确保硬件和电机都正常、则必须不断调整以下参数以平稳旋转电机以进行识别。

    #define USER_MOTOR_RES_EST_CURRENT_A (0.5)
    #define USER_MOTOR_IND_EST_CURRENT_A (-0.2)
    #define USER_MOTOR_MAX_CURRENT_A (2.0)
    #define USER_MOTOR_FLUX_EXC_FREQ_Hz (60.0)

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

    您好 Yanming
    我们在这里以圆为单位运行。  您是否阅读了我的上一个帖子?  
    我使用这些设置运行了测试、您建议:

    #define USER_MOTOR_RES_EST_CURRENT_A (0.5)
    #define USER_MOTOR_IND_EST_CURRENT_A (-0.2)
    #define USER_MOTOR_MAX_CURRENT_A (2.0)
    #define USER_MOTOR_FLUX_EXC_FREQ_Hz (60.0)

    是的、电机正常、我可以使用实验03_hardware_test (开环硬件测试)运行它。 电机运行效率低、但运行。  

    我有3个小型电机、它们的运行方式都是相同的。  
    根据以上设置、电机在斜升期间停止、甚至根本不启动(仅振荡)
    在实验03_Hardware_test 中、所有电机都在开环情形下运行。

    当然、我尝试了各种设置、而不仅仅是这些设置。 我找不到一个可以正常工作的设置。  

    在实验05中:  识别过程中斜升后,电机停止。  

    请!!!! 提供一些见解、因此我不能猜测进行调试。 我能否通过 PWMDAC 或 DAC128S085记录一些变量并将其展示给您?

    哪一个?

    Johannes

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

    以上识别参数仅供您参考。 在不观察电机运行状态的情况下、很难告诉您正确的参数。 不能监测任何变量来显示如何调整这些参数、如果您确保电机是 PMSM 电机、则必须根据运行状态调整这些参数、确保电机可以在识别过程中平稳运行。 请继续尝试一些其他参数、因为您的电机非常小、并且对参数非常敏感。

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

    谢谢、我将继续尝试。  
    您能解释一下、在执行 EST_State_RAMPUP 步骤后估算器会执行什么 操作吗?  
    如果我能够理解电机识别算法的一点、那么更容易理解是哪个参数导致电机停止。

    由于电机非常小、 因此其惯性与摩擦的关系非常糟糕。 如果算法在斜升后尝试自由旋转电机、则可能会导致电机停止。  

    是否有办法观察算法、找到错误代码、这有助于我识别检测算法失败的步骤以及原因?

    Johannes

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

    您可以查看 《InstaSPIN-FOC 和 InstaSPIN-MOTION 用户指南 》的第6章、其中详细介绍了电机识别。

    https://www.ti.com/lit/ug/spruhj1i/spruhj1i.pdf

    在  EST_State_RAMPUP 状态和以下状态 EST_State_RatedFLUX 期间、电机以电流闭环和位置开环运行、根据设置频率(USER_MOTOR_FLUX_EXC_FREQ_Hz)生成转子角度。 额定磁通将在这两种状态下识别。 因此、您需要    根据电机设置合适的 USER_MOTOR_IND_EST_CURRENT_A 和 USER_MOTOR_FLUX_EXC_FREQ_Hz、并使电机平稳运行至/达到设置频率。

    您可以尝试调整下面标记为红色的控制带宽和默认惯性、以更改 PI 控制器的增益以进行识别。 由于电机太小、默认参数可能对您的电机不适用。  

    pUserParams->BWC_rps = MATH_two_PI *(float32_t) 100.0
    pUserParams->BWDelta =(float32_t) 8.0


    pUserParams->Kctrl_wb_p_kgm2 =(float32_t) 3.0 *
    pUserParams->motor_numPolePairs *
    (float32_t)(0.001)/
    (float32_t)(2.0 * 0.000001);

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

    我会尝试这个。 谢谢你。  

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

    好的。 不断调整上述参数、直至电机平稳运行。 如果您有任何疑问、请先了解并关闭本主题。

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

    您好 Yanming
    在尝试进行电机识别之前、我使用 IQ ID PI 稳压器来使我的电机平稳运行。 结果非常差。  
    问题:我们的电机似乎不是很对称。 电机非常小、因此很难以高对称性和完美的磁化来制造它。  

    我正在使用 Lab03 (开环硬件测试) 我通过 DAC128S05输出了一些测量值、以查看 Park 输出 Iq 有多好。  
    输出:  
    -角度(角度发生器)(黄色)
    -一条电机线路上的测量电压(蓝色)
    - Clark 输出 IA (绿色)
    -驻车模块的输出(Iq)(由软件驻车模块提供、而不是通过估算器提供)(红色)

    驻车输出应为平坦线。 电机仅以角度发生器驱动的恒定速度运行。

    您可以看到、IQ 不是平坦的线。 测得的电流不是一个"好的"正弦波。  

    如果我尝试在此运行 Id Iq PI 稳压器、稳压器很容易变得不稳定。  
    我该怎么做?

    也许这是一个愚蠢的问题:这种糟糕的 IQ 测量是否因为电机具有凸极特征? 因此,这将是一种效果,因为 LD 和 LQ 有很大的不同?  

    如果是、通过了解 LD 和 LQ、估算器是否会消除这种情况?   

    同时、为了检查电机在一个旋转过程中是否有不同的摩擦、我将增加一些惯性。 如果 IQ 测量趋于平坦、则表示存在机械问题。 (但这也对我没有帮助、因为它是我们电机的固有特性)  

    Johannes

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

    不可以、  如果电流和电压采样信号具有良好的分辨率且电机参数具有非常精确的值、则不能消除纹波、只需降低纹波振幅。 调节速度和电流 PI 控制器的增益也可以提高扭矩输出的性能。

    [引用 userid="103288" URL"~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1052554/boostxl-drv8320rs-instaspin-motor-identifying-failed-with-lauchxl-f280049c-boostxl-drv8320rs-motor-with-no-inertia-and-load/3921607 #3921607")也许这是一个愚蠢的问题:这种糟糕的 IQ 测量是否因为电机具有突出的特性? 因此,这将是一种效果,因为 LD 和 LQ 有很大的不同?  [/报价]

    是的、如果您知道这些参数、则可以设置 LD 和 LQ 值、而不使用标识的 LS。 FAST 的电机识别仅支持 SPMSM 来识别 LS (LD=LQ)。