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.

[参考译文] LAUNCHXL-F2800137:LAUNCHXL-F2800137和 BOOSTXL-DRV8323RS 评估套件- DMC_BUILDLEVEL DMC_LEVEL_2 (BLDC 电机始终保持齿槽并不'不连续旋转)

Guru**** 2468460 points
Other Parts Discussed in Thread: LAUNCHXL-F2800137, BOOSTXL-DRV8323RS

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1263936/launchxl-f2800137-launchxl-f2800137-and-boostxl-drv8323rs-eval-kit---dmc_buildlevel-dmc_level_2-the-bldc-motor-just-keep-cogging-and-doesn-t-rotate-continuously

器件型号:LAUNCHXL-F2800137
主题中讨论的其他器件: BOOSTXL-DRV8323RS

您好!

我将尝试 一起修复 LAUNCHXL-F2800137和 BOOSTXL-DRV8323RS 评估套件、以驱动12V BLDC 电机。 此 BLDC 电机是一款现成器件、TI 应用手册中不建议使用此器件。

目前、我卡在 DMC_BUILDLEVEL DMC_LEVEL_2处。 当我将"motorVars_M1.flagEnableRunAndIdentify"设置为1时、BLDC 电机保持齿槽不变。

我只想检查 user_mtr1.h 中我需要正确修改的参数、以便在 DMC_BUILDLEVEL 设置为 DMC_LEVEL_2时使定制 BLDC 电机连续旋转。

希望很快收到您的反馈。

此致、

叶国龙

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

    您好!

    根据我们之前的对话、您可以运行构建级别1、所有内容看起来都是正确的、因为您唯一使用的估算器是霍尔传感器、对吧?

    假设是这样、请提供:

    • 您为此电机创建/调整的 hal.h 摘录
    • 如果可能、可以使用电机数据表中的

    请注意、考虑到您使用的是霍尔传感器和您看到的行为、我想知道霍尔校准序列是否可能没有正确执行。 您能否再次运行它并确认您看到的数字与您之前保存的数字相同?

    此致、
    杰森·奥斯博尔恩

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

    大家好、Jason、

    是的、我能够运行构建级别1。 一切看起来都正确。 我正在使用的估算器是 motor1_fast 和 motor1_hall。 正如我在之前给我的消息中所述、我需要在预定义符号列表中包含 motor1_fast 和 motor1_hall、以便使 相电压偏移(OFFSET_V_SF)约为0.5。

    对于构建级别2、我是否仍应该在预定义的符号列表中同时启用 motor1_fast 和 motor1_hall?

    请注意、我注释掉了那些在代码编译期间在 预定义符号列表中启用 motor1_hall 时出现错误的代码。

    在上一条消息中、您要求我再次运行霍尔校准序列、并检查我看到的数字是否与之前保存的数字相同。 对于您已经说明的数字、您是否指的是 OFFSET_I_AD 和 OFFSET_V_SF 参数? 如果是、则与我之前保存的内容类似、非常接近我之前的值。

    我在下面附上了 hal.h 文件 fyi。

    下面列出了我已经在 user_mtr1.h 中修改的值、以便与电机数据表相匹配。 我在下面还附上了我的 user_mtr1.h 文件。

    - #define USER_M1_NOMINATE_DC_BUS_VOLTAGE_V      (12.0f)

    - #define USER_M1_IA_OFFSET_AD  (2041.17993f)

    -#define USER_M1_IB_OFFSET_AD  (2030.27161f)

    - #define USER_M1_IC_OFFSET_AD  (2025.57312f)

    - #define USER_M1_VA_OFFSET_SF  (0.499066591f)

    - #define USER_M1_VB_OFFSET_SF  (0.496230334f)

    - #define USER_M1_VC_OFFSET_SF  (0.50050354f)

    - #define USER_M1_OVER_LOAD_POWER_W       (95.0f)

    - #define USER_M1_STALL_CURRENT_A        (20.0f)

    - #define USER_M1_FAIL_SPEED_MAX_Hz       (3000.0f)

    - #define USER_M1_FAIL_SPEED_MIN_Hz       (10.0f)

    - #define USER_M1_VA_OFFSET_SF_DELTA   (0.5f)

    - #define USER_M1_PWM_FREQ_kHz     (40.0f)

    - #define USER_M1_VS_REF_MAG_PU         (0.8f * USER_M1_MAX_VS_MAG_PU)

    - #define USER_M1_FWC_KI              (0.0525f)

    - #define USER_M1_Lost_PHASE_TIME_SET        (1000U)

    - #define USER_M1_START_TIMES_SET          (200U)

    - #define USER_MOTOR1_NUM_POLE_PAIRS      (1)

    - #define USER_MOTOR1_MODEL Rs_Ohm          (0.13f)

    - #define USER_MOTOR1_LS_d_H          (0.000009f)

    - #define USER_MOTOR1_Ls_q_H          (0.000009f)

    -#define USER_MOTOR1_RATED_FLUX_VpHz     (0.0022516660f)

    - #define USER_MOTOR1_MAX_CURRENT_A      (13.49f)

    - #define USER_MOTOR1_INERTIA_KGM2       (2.1e-07)

    - #define USER_MOTOR1_RATED_VOLTAGE_V     (12.0f)

    - #define USER_MOTOR1_FREQ_MAX_Hz       (950.0f)

    - #define USER_MOTOR1_FREQ_LOW_Hz       (66.7f)

    - #define USER_MOTOR1_FREQ_HIGH_Hz       (666.7f)

    - #define USER_MOTOR1_VOLT_MIN_V        (1.8f)

    - #define USER_MOTOR1_VOLT_MAX_V        (12.0f)

    - #define USER_MOTOR1_OVER_CURRENT_A      (40.0f)

    - #define USER_MOTOR1_SPEED_START_Hz      (100.0f)

    - #define USER_MOTOR1_SPEED_FORCE_Hz      (50.0f)

    - #define USER_MOTOR1_GAIN_SPEED_LOW_Hz     (66.7f)

    - #define USER_MOTOR1_GAIN_SPEED_HIGH_Hz    (666.7f)

    - #define USER_M1_SPEED_CAP_MAX_Hz     (666.7f)

    - #define USER_M1_CAP_WAIT_TIME_SET    (200U)

    e2e.ti.com/.../8713.hal.he2e.ti.com/.../user_5F00_mtr1.h

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

    大家好、Jason、

    对于在预定义符号列表中启用 motor1_hall 后、在代码编译期间出现错误时我会注释掉的代码、我在 motor1_drive.c 和 motor_common.c 中注释掉了2行代码。

    在 motor1_drive.c 中、

    -第3815行, HALL_setTimeStamp(obj->hallHandle、HAL_calcCAPCount (obj->halMtrHandle );

    在 motor_common.c 中、

    -第295行, HAL_resetCAPTimeStamp(obj->halMtrHandle );

    这2行代码被注释掉的原因是编译器声明 HAL_calcCAPCount 和 HAL_resetCAPTimeStamp 是未定义的符号。 我需要注释掉这2行代码、才能成功编译。

    这2行代码被注释掉了电机齿槽问题的根本原因吗?

    此致、

    叶国龙

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

    大家好、Jason、

    我在上一封邮件中漏掉了另外一行代码:

    在 motor1_drive.c 中、

    -行3035, HALL_setTimeStamp(obj->hallHandle、HAL_calcCAPCount (obj->halMtrHandle );

    上面提到的代码被注释掉、以使编译 成功、fyi。

    此致、

    叶国龙

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

    大家好、Jason、

    大家可以看看、如果   在运行 build_level_2时 motorVars_M1.flagEnableRunAndIdentify 设置为"1"、EPwm3Regs.CMPA.CMPA 的值是否为"0x0000"?

    我注意到、  在  运行 BUILD_LEVEL_2时将 motorVars_M1.flagEnableRunAndIdentify 设置为"1"时、EPwm1Regs.CMPA.CMPA 和 EPwm2Regs.CMPA.CMPA 的值持续变化、但只有 EPwm3Regs.CMPA.CMPA 在"0x0000"处保持恒定。

    还有另外一点。 我注意到、 在  运行 build_level_2时、motorVars_M1.flagEnableRunAndIdentify 设置为"1"时、EPwm6Regs 的 CMPA 值持续变化。 是这样吗?

    此致、

    叶国龙

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

    大家好、Jason、

    我想我知道为什么  EPwm6Regs 的 CMPA 值保持变化、而 在  运行 build_level_2时、motorVars_M1.flagEnableRunAndIdentify 设为"1"时、EPwm3Regs 的 CMPA 值不会改变。

    在 hal.h 第625行中、 MTR1_PWM_W_BASE 定义为 EPWM6_BASE。 这是电机驱动器 DRV8323RS 的 hal.h 文件中的默认设置。 是否应将 MTR1_PWM_W_BASE 定义为 EPWM3_BASE?

    请告知。

    此致、

    叶国龙

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

    您好!

    我已在 BOOSTXL-DRV8323RS 评估套件上捕获了 INA、GTA 和 MOTA 的波形。 下面附上了这些波形的图片。

    INA 的 PWM 信号以40KHz fyi 运行。 从第一个波形可以看出、MOTA 信号的电流波形有许多尖峰。 这表明、在某些情况下、电流从 MOTA 流向 BLDC 电机定子绕组、但电流似乎仅流动375us (请参阅第二个波形)。 第一个波形上显示的几乎所有电流尖峰都具有类似的脉冲宽度(375us)。

    从第一个波形可以看出、还有一个周期、电流从 MOTA 流向 BLDC 电机定子绕组大约100 ms (参见第三个波形)。

    那么、根据我捕获的波形、我们是否能够大致知道导致我的电机不连续旋转的问题到底是什么?

    此致、

    叶国龙

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

    您好!

    很抱歉我不在办公室、我会查看您发送的信息、并在1-2天内与您联系。

    此致、
    杰森·奥斯博尔恩

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

    大家好、Jason、

    好的、表示感谢。 等待您的回复。

    我曾尝试通过仅将预定义符号启用为 MOTOR1_FAST 来驱动 BLDC 电机。 但仍然不成功。

    是因为我的 BLDC 电机具有低定子线圈电感吗? 定子线圈的相间电感仅为18uH。 我应该看看这些针对 PI 控制器的参数吗?

    此致、

    叶国龙

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

    您好!

    我会按顺序浏览您的帖子。

    • 当我指的是霍尔校准时、我指的是 MOTOR1_HALL_CAL 的预定义符号。 在 motor1_drive.c 文件中,搜索"const float32_t halAngleBuf[7]
      • 按照以下说明校准霍尔传感器。
    • 我建议在每个构建级别同时运行 motor1_fast 和 motor1_hall、直到系统正常运行、这对于调试非常有用、并且对于霍尔校准而言确实是必要的。
    • HALL_setTimeStamp()HALL_resetCAPTimeStamp()函数都存在于 hall.h 文件中、但考虑到 F280013x UMCL 工程本身不支持霍尔、该器件将其删除。 以下是来自 F28002x 和 F280013x 的代码、用于进行比较:
      • F28002x 文件中的代码:
        • hal.h:
          • #if defined(MOTOR1_HALL) && defined(CMD_CAP_EN)
            #error HALL and CMD_CAP can't be enabled at the same time
            #elif defined(MOTOR1_HALL)
            //! \brief      Sets up the CAP (Capture Subsystems)
            //! \param[in]  handle  The hardware abstraction layer (HAL) handle
            extern void HAL_setupCAPs(HAL_MTR_Handle handle);
            
            //! \brief      Sets up the CAP (Capture Subsystems)
            //! \param[in]  handle  The hardware abstraction layer (HAL) handle
            extern void HAL_resetCAPTimeStamp(HAL_MTR_Handle handle);
            
            //! \brief     Read the CAP counters
            //! \param[in] handle      The hardware abstraction layer (HAL) handle
            //! \return    The CAP counters
            static inline uint32_t HAL_calcCAPCount(HAL_MTR_Handle handle)
            {
                HAL_MTR_Obj    *obj = (HAL_MTR_Obj *)handle;
                uint16_t  cnt;
                uint32_t capSumCount = 0;
            
                for(cnt = 0; cnt < 3; cnt++)
                {
                    capSumCount += ECAP_getEventTimeStamp(obj->capHandle[cnt], ECAP_EVENT_2);
                    capSumCount += ECAP_getEventTimeStamp(obj->capHandle[cnt], ECAP_EVENT_3);
                }
            
                return(capSumCount);
            }
            #elif defined(CMD_CAP_EN)
        • hal.c:
          • #if defined(MOTOR1_HALL) && defined(CMD_CAP_EN)
            #error HALL and CMD_CAP can't be enabled at the same time
            #elif defined(MOTOR1_HALL)
            void HAL_setupCAPs(HAL_MTR_Handle handle)
            {
                HAL_MTR_Obj    *obj = (HAL_MTR_Obj *)handle;
                uint16_t  cnt;
            
                for(cnt = 0; cnt < 3; cnt++)
                {
                    // Disable ,clear all capture flags and interrupts
                    ECAP_disableInterrupt(obj->capHandle[cnt],
                                          (ECAP_ISR_SOURCE_CAPTURE_EVENT_1  |
                                           ECAP_ISR_SOURCE_CAPTURE_EVENT_2  |
                                           ECAP_ISR_SOURCE_CAPTURE_EVENT_3  |
                                           ECAP_ISR_SOURCE_CAPTURE_EVENT_4  |
                                           ECAP_ISR_SOURCE_COUNTER_OVERFLOW |
                                           ECAP_ISR_SOURCE_COUNTER_PERIOD   |
                                           ECAP_ISR_SOURCE_COUNTER_COMPARE));
            
                    ECAP_clearInterrupt(obj->capHandle[cnt],
                                        (ECAP_ISR_SOURCE_CAPTURE_EVENT_1  |
                                         ECAP_ISR_SOURCE_CAPTURE_EVENT_2  |
                                         ECAP_ISR_SOURCE_CAPTURE_EVENT_3  |
                                         ECAP_ISR_SOURCE_CAPTURE_EVENT_4  |
                                         ECAP_ISR_SOURCE_COUNTER_OVERFLOW |
                                         ECAP_ISR_SOURCE_COUNTER_PERIOD   |
                                         ECAP_ISR_SOURCE_COUNTER_COMPARE));
            
                    // Disable CAP1-CAP4 register loads
                    ECAP_disableTimeStampCapture(obj->capHandle[cnt]);
            
                    // Configure eCAP
                    //    Enable capture mode.
                    //    One shot mode, stop capture at event 3.
                    //    Set polarity of the events to rising, falling, rising edge.
                    //    Set capture in time difference mode.
                    //    Select input from XBAR4/5/6.
                    //    Enable eCAP module.
                    //    Enable interrupt.
                    ECAP_stopCounter(obj->capHandle[cnt]);
                    ECAP_enableCaptureMode(obj->capHandle[cnt]);
            
                    ECAP_setCaptureMode(obj->capHandle[cnt], ECAP_CONTINUOUS_CAPTURE_MODE, ECAP_EVENT_3);
            
                    ECAP_setEventPolarity(obj->capHandle[cnt], ECAP_EVENT_1, ECAP_EVNT_FALLING_EDGE);
                    ECAP_setEventPolarity(obj->capHandle[cnt], ECAP_EVENT_2, ECAP_EVNT_RISING_EDGE);
                    ECAP_setEventPolarity(obj->capHandle[cnt], ECAP_EVENT_3, ECAP_EVNT_FALLING_EDGE);
                    ECAP_setEventPolarity(obj->capHandle[cnt], ECAP_EVENT_4, ECAP_EVNT_RISING_EDGE);
            
                    ECAP_enableCounterResetOnEvent(obj->capHandle[cnt], ECAP_EVENT_1);
                    ECAP_enableCounterResetOnEvent(obj->capHandle[cnt], ECAP_EVENT_2);
                    ECAP_enableCounterResetOnEvent(obj->capHandle[cnt], ECAP_EVENT_3);
                    ECAP_enableCounterResetOnEvent(obj->capHandle[cnt], ECAP_EVENT_4);
            
                    ECAP_enableLoadCounter(obj->capHandle[cnt]);
                    ECAP_setSyncOutMode(obj->capHandle[cnt], ECAP_SYNC_OUT_SYNCI);
                    ECAP_startCounter(obj->capHandle[cnt]);
                    ECAP_enableTimeStampCapture(obj->capHandle[cnt]);
                    ECAP_reArm(obj->capHandle[cnt]);
                }
            
                XBAR_setInputPin(INPUTXBAR_BASE, MTR1_CAP_U_XBAR, MTR1_HALL_U_GPIO);
                XBAR_setInputPin(INPUTXBAR_BASE, MTR1_CAP_V_XBAR, MTR1_HALL_V_GPIO);
                XBAR_setInputPin(INPUTXBAR_BASE, MTR1_CAP_W_XBAR, MTR1_HALL_W_GPIO);
            
                ECAP_selectECAPInput(obj->capHandle[0], MTR1_CAP_U_INSEL);
                ECAP_selectECAPInput(obj->capHandle[1], MTR1_CAP_V_INSEL);
                ECAP_selectECAPInput(obj->capHandle[2], MTR1_CAP_W_INSEL);
            
                return;
            }   // HAL_setupCAPs()
            
            void HAL_resetCAPTimeStamp(HAL_MTR_Handle handle)
            {
                HAL_MTR_Obj    *obj = (HAL_MTR_Obj *)handle;
                uint16_t  cnt;
            
                for(cnt = 0; cnt < 3; cnt++)
                {
                    ECAP_setAPWMPeriod(obj->capHandle[cnt], 0);
                    ECAP_setAPWMCompare(obj->capHandle[cnt], 0x01FFFFFF);
                    ECAP_setAPWMShadowPeriod(obj->capHandle[cnt], 0x01FFFFFF);
                    ECAP_setAPWMShadowCompare(obj->capHandle[cnt], 0x01FFFFFF);
                }
            
                return;
            }   // HAL_resetCAPTimeStamp()
            #elif defined(CMD_CAP_EN)
      • F280013x 文件中的代码:
        • hal.h:
          • #if defined(MOTOR1_HALL) && defined(CMD_CAP_EN)
            #error HALL and CMD_CAP can't be enabled at the same time
            #elif defined(MOTOR1_HALL)
            #error This device and kit can't support Hall sensor based FOC
            #elif defined(CMD_CAP_EN)
        • hal.c:
          • #if defined(MOTOR1_HALL) && defined(CMD_CAP_EN)
            #error HALL and CMD_CAP can't be enabled at the same time
            #elif defined(MOTOR1_HALL)
            #error This device and kit can't support Hall sensor based FOC
            #elif defined(CMD_CAP_EN)
      • 假设为了在 F280013x 上集成霍尔传感器而进行的其他调整是正确的、也需要进行这些更改、并且这些行应该取消注释。 但是、鉴于您也存在 FAST 的此类问题、我不认为这会是根本原因。
    • 我的理解是 CCS 调试导入文件稍微过时-在调试窗口中它应该是 EPwm6Regs 而不是 EPwm3Regs。
    • 将其保留为 ePWM 6、这是正确的 ePWM。
    • 现在将跳过波形、因为我想先处理您最近发布的帖子。
    • 如果 MOTOR1_FAST 也无法正常工作、这意味着可能存在设置错误的电机参数、或系统设置物理上有问题。 我认为我也没有意识到这是一个低电感电机、必须注意以下几点特殊注意事项:

    这里有很多帖子、因此我可能错过了一些内容-如果您有任何其他紧迫的问题、请告诉我。

    此致、
    杰森·奥斯博尔恩

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

    大家好、Jason、

    谢谢你的建议,真的很感激!

    将根据您的意见重试、并将在下周前尝试与您联系。

    此致、

    叶国龙

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

    大家好、Jason、

    我已将HALL_setTimeStamp() 和 HALL_resetCAPTimeStamp() 函数合并到 hal.h 和 hal.c 文件中。

    在将 HALL_setTimeStamp() 和 HALL_resetCAPTimeStamp() 功能合并到 hal.h 和 hal.c 文件中时、包含了以下附加代码:

    - uint32_t    capHandle[3];(hal_obj.h,第235行)

    - #define MTR1_HALL_U_GPIO 40 (hal.h, 第661行)
    -#define MTR1_HALL_V_GPIO 41 (hal.h、第662行)
    -#define MTR1_HALL_W_GPIO 39 (hal.h、第663行)

    - #define MTR1_CAP_U_XBAR XBAR_INPUT7 (hal.h、第665行)
    -#define MTR1_CAP_V_XBAR XBAR_INPUT2 (hal.h、第666行)
    -#define MTR1_CAP_W_XBAR XBAR_INPUT3 (hal.h、第667行)
    -#define MTR1_CAP_U_Insel ECAP_INPUT_INPUTXBAR7 (hal.h、第668行)
    -#define MTR1_CAP_V_Insel ECAP_INPUT_INPUTXBAR2 (hal.h、第669行)
    -#define MTR1_CAP_W_Insel ECAP_INPUT_INPUTXBAR3 (hal.h、第670行)

    为了成功完成编译、需要将上述附加代码包含在 hal_obj.h 和 hal.h 中。

    您能帮助检查上述附加代码是否正确实现吗?

    成功完成构建编译后、我尝试运行该程序并启用 motorVars_M1.flagEnableRunAndIdentify 参数。 电机仍然齿槽、无法连续旋转。 我将介绍第6.10.1.5和6.10.8.1节、   InstaSPIN-FOC 和 InstaSPIN-MOTION 用户指南 然后重试。

    还有一件事我需要您澄清。

    在您之前的消息中、您建议我 在 motor1_drive.c 文件中搜索"const float32_t halAngleBuf[7]"、并按照说明校准霍尔传感器。 指令中声明将 HALL_M1.thetaCalBuf[]复制到 halAngleBuf[]。 在哪里可以找到 HALL_M1.thetaCalBuf[]? 我找不到该变量。

    此致、

    叶国龙

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

    大家好、Jason、

    我想我找到了  HALL_M1.thetaCalBuf[]。 它实际上是 motorHandle_M1.halHandle.thetaCalBuff[]。 您能否帮助确认 motorHandle_M1.halHandle.thetaCalBuff[]是否是正确的变量?

    对于霍尔传感器校准、构建级别2不需要、我说得对吗? 根据我的理解、对于构建级别2、系统以开环控制方式运行、它不需要来自霍尔传感器输出的反馈、对吗?

    此致、

    叶国龙

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

    您好!

    对于您的第一个问题、是的、这是霍尔对象中的 thetaCalBuff[]数组、位于主电机控制对象中。 我忘了自编写代码中的注释以来名称发生了变化、如以下屏幕截图所示:

    关于第二个问题、是的、那是正确的-很抱歉、我现在意识到我重点讨论的是问题的霍尔校准方面、而不是构建级别2方面。 再看一下预定义值、以下内容在构建2中最重要:

    我过去曾提出过的建议是将这些设置如下:

    USER_MOTOR1_FREQ_MAX_Hz ~150% USER_MOTOR1_FREQ_HIGH_Hz
    用户_MOTOR1_FREQ_LOW_Hz USER_MOTOR1_FREQ_HIGH_Hz 的~10%至20%
    用户_MOTOR1_FREQ_HIGH_Hz 电机额定转速、根据电机数据表
    USER_MOTOR1_VOLT_MIN_V USER_MOTOR1_VOLT_MAX_V 的~10%至20%
    USER_MOTOR1_VOLT_MAX_V 电机额定电压、每个电机数据表

    这是否精确到您具有的值?

    对于您的问题遗漏了这一方面、再次深表歉意。

    此致、
    杰森·奥斯博尔恩

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

    大家好、Jason、

    是的、我在上述参数中拥有的值在指定范围内。

    我对 USER_M1_PWM_FREQ_kHz 参数有疑问:

    -是否有  USER_M1_PWM_FREQ_kHz 参数的特定值? 默认值为15。 我把我的设置为40。 我注意到、当 USER_M1_PWM_FREQ_kHz 参数设置为40时、电机的转子往往会旋转、尽管转子往往会发生齿轮减速并且不会连续旋转。

    -是否有确定 USER_M1_PWM_FREQ_kHz 参数值的公式?

    -我设法在 TI 网站中找到2个电机(请查看下面的2个链接)。 是否确认设置包含 LAUNCHXL-F2800137 + BOOSTXL-DRV8323RS 评估套件可以驱动以下电机? 我可能会购买这些电机之一来试用它。

    https://www.ti.com/tool/LVSERVOMTR

    https://www.ti.com/tool/LVBLDCMTR

    我仍然无法使电机连续旋转、fyi。

    此致、

    叶国龙

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

    您好!

    USER_M1_PWM_FREQ_kHz设置的值通常适用于大多数电机、开发人员在该实验中测试过的电机。 这可能不是所有电机的最佳值-首先、请查看电机数据表。 一些数据表给出了运行给定电机所需的 PWM 频率和/或电机的时间常数的特定值、进而可用于确定理想的 PWM 开关频率。

    如果你确定需要一个更高的 PWM 频率,正如你的测试显示,我也建议调整 USER_M1_NUM_PWM_TICKS_PER_ISR_TICK. 如果 ISR 频率过高、则微控制器可能会在处理前一个中断时错过一个中断。 ISR 频率和/或 PWM 频率可能是此奇怪电机行为背后的罪魁祸首。

    为了检查预定义电机 和 LaunchPad/BoosterPack 硬件给定组合的有效性、请参阅通用电机控制实验室用户指南。 用户指南的当前公开版本没有有关 F2800137的此信息、但我们之前通过私人消息进行的对话应具有更新版本的相关表。

    此致、
    杰森·奥斯博尔恩

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

    大家好、Jason、

    我已尝试调整  USER_M1_NUM_PWM_TICKS_PER_ISR_TICK 和 USER_M1_PWM_FREQ_kHz 参数。 电机仍然不会连续旋转、但可以看到当 USER_M1_PWM_FREQ_kHz 设置为120并且 USER_M1_NUM_PWM_TICKS_PER_ISR_TICK 设置为3或4时、一直在触发 moduleOverCurrent 故障位。 我认为这是由于其他参数设置不正确。

    我将尝试调整 USER_M1_R_OVER_L_EXC_FREQ_Hz、USER_MOTOR1_FLUX_EXC_FREQ_Hz 以及与我的电机规格相关的其他参数、看看如何变化。

    我有一个与 USER_MOTOR1_MAX_CURRENT_A 参数相关的问题:

    -我的电机的额定电流是7.95A。 我应该将 USER_MOTOR1_MAX_CURRENT_A 设置为7.95A 或 SQRT (2) x 7.95A、甚至是更高的值吗? 我怀疑 moduleOverCurrent 故障位的触发是由于在这些电流相关参数上设置的值所致。

    此致、

    叶国龙

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

    您好!

    请注意、我不希望通过调整激励频率参数来显著影响系统性能、除非您同时使用 InstaSPIN 电机 ID 功能。

    对于 USER_MOTOR1_MAX_CURRENT_A、~建议在 user_mtr1.h 中设置此参数。 (遗憾的是、它并不出现在每个迭代上、但您可以在 Baldor_BSM90N175电机参数中看到它)。 此外、虽然此参数保持精确非常重要( 如果使用电机 ID、甚至比通常情况下更是如此)、但过流实际上是由不同的参数 USER_MOTOR1_OVER_CURRENT_A 设置的。 针对此参数给出的建议是"电机额定电流的50%-300%"。

    此致、
    杰森·奥斯博尔恩