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:使用 TMS320F280049C 和放大器的定制电路板上的电机转速不稳定所需的帮助;DRV8320RS

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1462779/tms320f280049c-assistance-needed-for-motor-speed-instability-on-custom-board-using-tms320f280049c-drv8320rs

器件型号:TMS320F280049C
主题中讨论的其他器件:LAUNCHXL-F280049CBOOSTXL-DRV8320RSC2000WARE、MOTORWARE

工具与软件:

尊敬的 TI 支持团队:

我目前使用的是采用 TMS320F280049C 和 DRV8320RS 芯片的定制电路板。 首先、我测试了安装在 LAUNCHXL-F280049C LaunchPad 开发套件上的 BOOSTXL-DRV8320RS BoosterPack。 使用此设置:

  1. 我跑了 Lab05 从而确定电机参数。
  2. 我跑了 Lab09 以测试达到的最大电机转速 920 Hz . 在这种速度下、虽然存在一些波动、但电机保持稳定、没有任何令人担忧的问题。

最近、我转换为自行设计的定制电路板、在其中进行了以下修改:

  1. 调整了一些影响USER_ADC_FULL_SCALE_VOLTAGE_V并重新计算的电阻、如下所示:
    #define USER_ADC_FULL_SCALE_VOLTAGE_V ((float32_t)(31.32)) // 3.3 * (42.2 + 4.97) / 4.97 = 31.32
  2. 更改了分流电阻器(R_shunt)并更新了相关计算:
    #define USER_ADC_FULL_SCALE_CURRENT_A ((float32_t)(300)) // 3.3 / 0.001 / 11 = 300
  3. 调整了电压滤波器极点:
    #define USER_VOLTAGE_FILTER_POLE_Hz ((float32_t)(357.946)) // 1 / (2pi * ((42.2k * 4.97k) / (42.2k + 4.97k) * 0.1uF))

我跑了 Lab02 在定制电路板上、以获取新的偏移值并通过运行对其进行验证 Lab05 检索电机参数、这些参数与原始设置类似。

然而,当我跑 Lab09 要测试电机的最大转速、请执行以下操作:

  • 电机在处变得不稳定 850 Hz .
  • 电源表现出异常行为、电流消耗高、压降显著。
  • 电动机在操作过程中发出异响。

相比之下、对于您的电路板、电机可以达到其最大速度、而不会出现这些问题。 振荡以最大速度发生时、电源保持稳定。

您能帮助我确定定制电路板上不稳定的潜在原因吗? 欢迎提供任何建议或指导。

感谢您的时间和支持。

此致、
hyu

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

    hiu、

    如果您已经验证了电源是稳定的、那么我建议首先比较定制板上电流和电压信号(尤其是电流信号)的信号完整性与 LaunchPad + Booster Pack HW。 如果信号完整性较低和/或系统中通常有更多的噪声、则控制 环路可能无法维持相同的输出最大值。

    此外、验证您的3个更改后的参数是否不会导致 FAST 估算器出现任何问题、也不是一个好主意。 如果使用当前的生成电机控制软件开发套件(C2000Ware 电机控制 SDK)、请参阅{MCSDK}/solutions/{Solution folder}/docs、并且在大多数解决方案中应该有一个"参数计算"文档。 如果使用早期的电机控制软件开发套件(MotorWare)、请参考{motorware}/docs/labs/motorware_selecting_user_variables.xlsx.

    此致、
    Jason Osborn

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

    尊敬的 Jason:

    除了提到的与定制电路板相关的更改(主要更新 user.h 文件中的参数)外、我还修改了 hal.c 文件中 PWM、ISEN 和 VSEN 的引脚配置、以便与硬件设计保持一致。

    最初、由于硬件是由其他人设计的、因此由于软件和硬件之间存在不一致、我面临一些挑战。 因此、我无法成功运行 Lab05。 进行一些调整后、我最终能够运行 Lab05并获得电机参数、这些参数非常类似于使用开发套件获得的参数。

    但是、尽管做了这些努力、我还是无法获得与您的套件相同的性能水平。 我不确定 hal.c 文件中的更改是否导致了我目前遇到的问题。

    感谢您的时间和支持。

    我根据以下代码进行了一些更改:
    #if (BOOST_TO_LPD == BOOSTX_TO_J1_J2)
    //初始化电机1的 PWM 句柄
    obj->pwmHandle[0]= EPWM1_BASE;//!< PWM 句柄、GPIO8/GPIO9
    obj->pwmHandle[1]= EPWM3_BASE;//!< PWM 句柄、GPIO4/GPIO5
    obj->pwmHandle[2]= EPWM5_BASE;//!< PWM 句柄、gpio0/GPIO1

    //初始化 PGA 句柄
    obj->pgaHandle[0]= PGA1_base;//!< PGA 句柄
    obj->pgaHandle[1]= PGA3_base;//!< PGA 句柄
    obj->pgaHandle[2]= PGA2_base;//!< PGA 句柄

    //初始化 CMPSS 句柄
    obj->cmpssHandle[0]= CMPSS1_base;//!< CMPSS 句柄
    obj->cmpssHandle[1]= CMPSS3_base;//!< CMPSS 句柄
    obj->cmpssHandle[2]= CMPSS2_base;//!< CMPSS 句柄
    #endif

    #if (BOOST_TO_LPD == BOOSTX_TO_J1_J2)
    //配置中断源
    //通过分配14将充足的窗口配置为15个系统时钟周期宽
    //添加到 ADCSOCxCTL 寄存器的 ACQPS。
    // RB2/B1
    ADC_setInterruptSource (obj->adcHandle[1]、ADC_INT_number1、ADC_SOC_number2);

    //为 hvkit_rev1p1配置 SOC
    // ISENA - PGA1->A11->RA0
    ADC_setupSOC (obj->adcHandle[0]、ADC_SOC_NUMBER0、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN11、HAL_ADC_SAMPLE_WINDOW);

    // ISENB - PGA3->C7->RC0
    ADC_setupSOC (obj->adcHandle[2]、ADC_SOC_NUMBER0、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN7、HAL_ADC_SAMPLE_WINDOW);

    // ISENC - PGA2->B9->RB0
    ADC_setupSOC (obj->adcHandle[1]、ADC_SOC_NUMBER0、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN9、HAL_ADC_SAMPLE_WINDOW);

    // VSENA - A2/B6/PGA1_OF (A3)->RA1
    adc_setupSOC (obj->adcHandle[0]、adc_soc_number1、adc_trigger_EPWM1_SOCA、
    ADC_CH_ADCIN2、HAL_ADC_SAMPLE_WINDOW);

    // VSENB - B4/C8/PGA4_OF (B5)->Rb1
    adc_setupSOC (obj->adcHandle[1]、adc_soc_number1、adc_trigger_EPWM1_SOCA、
    ADC_CH_ADCIN4、HAL_ADC_SAMPLE_WINDOW);

    // VSENC - B2/C6/PGA3_OF (B3)->RC1
    adc_setupSOC (obj->adcHandle[2]、adc_soc_number1、adc_trigger_EPWM1_SOCA、
    ADC_CH_ADCIN6、HAL_ADC_SAMPLE_WINDOW);

    // VSENVM - B1->Rb2。 HVkit 板在 Vbus 反馈上具有电容器
    //不需要很长的采样时间就能得到一个准确的值
    adc_setupSOC (obj->adcHandle[1]、adc_soc_number2、adc_trigger_EPWM1_SOCA、
    ADC_CH_ADCIN1、HAL_ADC_SAMPLE_WINDOW);

    // Vstrap - B3->RB3。 HVkit 板在 Vbus 反馈上具有电容器
    //不需要很长的采样时间就能得到一个准确的值
    ADC_setupSOC (obj->adcHandle[1]、ADC_SOC_Number3、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN3、HAL_ADC_SAMPLE_WINDOW);
    #endif

    #if (BOOST_TO_LPD == BOOSTX_TO_J1_J2)
    ASysCtl_selectCMPHPMUX (ASYSCTL_CMPHPMUX_SELECT_3、4);//
    ASysCtl_selectCMPLPMux (ASYSCTL_CMPLPMUX_SELECT_3、4);

    ASysCtl_selectCMPHPMUX (ASYSCTL_CMPHPMUX_SELECT_2、4);//
    ASysCtl_selectCMPLPMux (ASYSCTL_CMPLPMUX_SELECT_2、4);

    ASysCtl_selectCMPHPMUX (ASYSCTL_CMPHPMUX_SELECT_1、4);//
    ASysCtl_selectCMPLPMux (ASYSCTL_CMPLPMUX_SELECT_1、4);

    //使用 ePWM X-BAR 将 TRIP9配置为 CTRIP1H 和 CTRIP1L
    XBAR_setEPWMMuxConfig (XBAR_TRIP9、XBAR_EPWM_MUX00_CMPSS1_CTRIPH_OR_L);// A 相
    XBAR_ENABLEEPWMMUX (XBAR_TRIP9、XBAR_MUX00);

    XBAR_setEPWMMuxConfig (XBAR_TRIP7、XBAR_EPWM_MUX02_CMPSS2_CTRIPH_OR_L);// B 相
    XBAR_ENABLEEPWMMUX (XBAR_TRIP7、XBAR_MUX02);

    XBAR_setEPWMMuxConfig (XBAR_TRIP8、XBAR_EPWM_MUX04_CMPSS3_CTRIPH_OR_L);// C 相
    XBAR_ENABLEEPWMMUX (XBAR_TRIP8、XBAR_MUX04);

    #endif

    BR、
    hyu

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

    除非代码中的 HAL_ADC_SAMPLE_WINDOW 值发生了显著改变、否则此摘录不会影响性能(假设所有连接仍然有效)。

    此致、
    Jason Osborn

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

    我目前在 代码中为 HAL_ADC_SAMPLE_WINDOW 使用值14。 我可以使用哪些替代值?

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

    首先要明确的是、我要说明的是、除非您手动大幅更改了相应的值、否则 HAL_ADC_SAMPLE_WINDOW 不太可能存在问题。 如果 ADC 输入滤波器在定制电路板上与原始基准等效、则默认值应该没有问题。

    此致、
    Jason Osborn