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:CAN#39;t 使电机在我自己的电路板上以 INSTASPIN FOC 标识运行。

Guru**** 2526700 points
Other Parts Discussed in Thread: DRV8303, DRV8301

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/788800/tms320f280049c-can-t-get-motor-running-with-instaspin-foc-identification-on-my-own-circuit-board

器件型号:TMS320F280049C
主题中讨论的其他器件:DRV8303DRV8301

#define USER_MOTOR_TYPE_VER                MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAINS_VER      (3)
#define USER_MOTOR_RR_Ohm VER_VER                  (空)
#define USER_MOTOR_Rs_Ohm VER                  (0.135367796)
#define USER_MOTOR_LS_D_H_VER                (0.000455653295)
#define USER_MOTOR_LS_q_H_VER                (0.000455653295)
#define USER_MOTOR_RAGE_FLUX_VpHz_VER          (0.210337803)
#define USER_MOTOR_RES_EST_CURRENT_A_VER     (3.2)
#define USER_MOTOR_IND_EST_CURRENT_A_VER     (-2.0)
#define USER_MOTOR_MAX_CURRENT_A_VER         (16.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz_VER    (20)
#define USER_MOTOR_磁 化电流_A_VER (空)
#define USER_MOTOR_FLUX_EXC_FREQ_Hz_VER      (5.0)
#define USER_MOTOR_FREQ_MAX_Hz_VER           (300.0)
#define USER_MOTOR_NUM_ENC_SLOTS_VER       (2500.0)

 //更新控制寄存器1
 drvRegName = DRV8303_RegName_Control_1;
 drvDataNew =(DRV8303_PeakCurrent_0p25_A  |\
               DRV8303_Reset_Normal        |\
               DRV8303_PwmMode_Three 输入  |\
               DRV8303_OcMode_CurrentLimit| \
               DRV8303_VdsLevel_0p730_V);
//               DRV8303_VdsLevel_0p403_V);
 DRV8303_writeSpi (handle、drvRegName、drvDataNew);

 //更新控制寄存器2
 drvRegName = DRV8303_RegName_Control_2;
 drvDataNew =(DRV8303_OctwMode_Both       |\
               DRV8303_ShuntAmpGain_10VpV  |\
               DRV8303_DcCalMode_Ch1_Load  |\
               DRV8303_DcCalMode_Ch2_Load  |\
               DRV8303_OcOffTimeMode_Normal);
 DRV8303_writeSpi (handle、drvRegName、drvDataNew);

现在、电机可以运行基于 is04_signal_chain_test 的信号链测试。 我们使用 drv8303来驱动电机。这些参数由 drv8301-evm 和 is05_moter_id 给出。

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

    我想知道如何设置这些参数。

       USER_params[bax_table_vertal].BWC_rps                   = 2350;
       USER_params[bax_table_vertal].BWdelta                   =(float_t) 10.0;
       USER_params[车桥表垂直].Kctrl_WB_p_kgm2           = 4500.00049;

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

    对于定制板固件、您是否为 DRV8303添加了 HAL 驱动程序? 还是您使用的是 DRV8301驱动程序? 对于 lab04、您是否能够使用数据记录器或其他方法验证反馈信号是否看起来符合预期?

    肖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已为 DRV8303添加了 HAL 驱动程序、但我认为它与8301驱动程序相同。 我认为我已经验证了反馈信号、因为我可以驱动电机、但无法识别它。
    我们的电路板和 drv8301-EVM 的区别之一是、我们将8301的 SN 输出连接到同相引脚
    运算放大器的输出电压。 但我已经使用了带有负的换算系数。
    Current_SF =-HAL_getCurrentScaleFactor (handle);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果电机 ID 实验室运行不好、通常意味着反馈电路存在问题。 您说您能够运行电机、但您似乎没有获得相应的图形来确认、对吧?

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

    我已根据实验室文档获得了相应的图形。

    我认为 gMotorVars.Rs_Ohm = 0.876959562  在我运行识别时过高。 当我使用电动汽车电路板运行识别时、它仅为0.13。

    我还想知道如何设置这三个参数。

       USER_params[bax_table_vertal].BWC_rps = MATH_two_PI *(float_t) 40.0;
       USER_params[bax_table_vertal].BWdelta =(float_t) 10.0;
       USER_params[wk_table_vertal].Kctrl_wb_p_kgm2 =(float_t) 3.0
               * user_params[hax_table_vertal].motor_numPolePairs *(float_t)(0.001)
               /(float_t)(2.0 * 0.000001);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当电机运行时、gMotorVars.Speed_Hz 出错。 我还会检查 gEstOutputData、所有数据都是错误的。 我认为这会导致识别失败。 我很困惑电机为什么可以运行、但 gEstOutputData 错误。 我该怎么做才能解决这个问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果这三个值根据硬件板正确计算、您可以检查 USER_ADC_FULL_SCALE_VOLTGE_V、USER_ADC_FULL_SCALE_VOLTGE_V 和 USER_VOLTGE_FILTER_POLE_Hz。
    2.根据电机规格、将 USER_MOTOR_RES_EST_CURRENT_A 和 USER_MOTOR_IND_EST_CURRENT_A 设置为正确的值、建议电机的额定电流为10%~20%。
    3.您可以使用 BWC_rps 和 BWdelta 的默认值、如果您知道电机的惯性和磁通、则只需设置正确的 Kctrl_WB_p_kgm2。 如果不是、您可以按如下方式设置这些值。 这三个值用于速度闭环、不会影响电机识别。
    pUserParams->BWC_rps = MATH_two_PI *(float32_t) 40.0;
    pUserParams->BWDelta =(float32_t) 10.0;

    // 3.0 * pUserParams->motor_numPolePairs * 0.1/(2.0 * 0.00001);
    pUserParams->Kctrl_wb_p_kgm2 =(float32_t) 3.0 *
    pUserParams->motor_numPolePairs *
    (float32_t)(0.001)/
    (float32_t)(2.0 * 0.000001);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们正确设置了这三个值。
    我们正确设置电流。
    我们使用 BWC_rps 和 BWdelta 的默认值。

    电机在识别过程中会产生很大的噪声、并且无法运行。 gMotorVars.RoverL_rps = 31415.9277、gMotorVars.Rs_Ohm = 599.619385。 我认为这些结果是异常的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您认为根据自己的电路板正确设置了比例电流和电压以及滤波器极点频率、则必须使用 lab03和 lab04来检查电路板的信号链。 请注意、电压无法自动验证、您需要检查在收费图中查看的感应电压是否相同
    2.确保该符号用于读取 HAL_readADCDDataWithOffset()中的电流,并且增益已根据需要正确配置 DRV 器件。 否则、USER_ADC_FULL_SCALE_CURRENT_A 将与 user.h 中的设置值不匹配
    3.请使用电流探头检查电流是否是您在 Rs 识别期间设置的 USER_MOTOR_RES_EST_CURRENT_A 值、这将帮助您检查增益和 USER_ADC_FULL_SCALE_CURRENT_A 是否正确。
    4.请确保 PWM 配置正确、因为您将 DRV8303的 PWM 模式设置为三个输入。 默认情况下、所有 MCSDK 都使用6个输入。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    正如我们对您的答复、您应该再次检查以下各项是否正确、并帮助提供更多经过测试的信息(如电机电流波形)、如果您可以在 TI EVM 板上识别和运行您的电机、这些信息可能有助于我们解决此问题。
    使用 lab03和 lab04检查电流/电压反馈电路。
    2.检查 user.h 中的最大电压/电流
    3.根据电机规格设置正确的识别电流和频率。