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-F280039C:F280039C 和 DRV8323RS -实验2中的模数过流跳闸

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1421879/launchxl-f280039c-f280039c-and-drv8323rs---moduleovercurrent-trip-with-lab-2

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

工具与软件:

我 将以下电路板与配合使用  universal_motorcontrol_lab_f28003x 软件...

  • LAUNCHXL-F280039C
  • BOOSTXL-DRV8323RS

我已经完成了实验1、该实验通过了所有测试。

我现在将运行实验2、但是当我设置它时  flagEnableRunAndIdentify 我遇到模块过电流跳闸(motorVars_M1.faultMtrPrev.bit)。 moduleOverCurrent )。

我已按照  《电机控制 SDK 通用工程和实验用户指南》的第3.2.2节(LAUNCHXL-F280039C 设置)和第3.2.10节(BOOSTXL-DRV8323RS 设置)配置了电路板。

我正在使用以下电机

store.tmotor.com/.../f90-fpv-motor.html

遗憾的是、只为该电机指定很少的数据、因此我将使用的定义 无人机_DJI920KV .

我曾尝试更改参数 USER_MOTOR1_VOLT_MAX_V Rs_Ohm 和 USER_MOTOR1_OVER_CURRENT_A、 但仍然出现过流。

如何解决此过流故障、为什么 会发生此故障 ?

#elif (USER_MOTOR1 == Drone_DJI920KV)
// Refer to the description of the following parameters for Teknic_M2310PLN04K
#define USER_MOTOR1_TYPE                   MOTOR_TYPE_PM
#define USER_MOTOR1_NUM_POLE_PAIRS         (7)
#define USER_MOTOR1_Rr_Ohm                 (NULL)
#define USER_MOTOR1_Rs_Ohm                 (0.04f)//(0.115332372f)
#define USER_MOTOR1_Ls_d_H                 (1.76480826e-05f)
#define USER_MOTOR1_Ls_q_H                 (1.76480826e-05f)
#define USER_MOTOR1_RATED_FLUX_VpHz        (0.00605002558f)
#define USER_MOTOR1_MAGNETIZING_CURRENT_A  (NULL)
#define USER_MOTOR1_RES_EST_CURRENT_A      (3.0)
#define USER_MOTOR1_IND_EST_CURRENT_A      (-2.5)
#define USER_MOTOR1_MAX_CURRENT_A          (20.0)
#define USER_MOTOR1_FLUX_EXC_FREQ_Hz       (120.0)
#define USER_MOTOR1_NUM_ENC_SLOTS          (1000)       // N/A
#define USER_MOTOR1_INERTIA_Kgm2           (5.06154e-06)

#define USER_MOTOR1_FREQ_NEARZEROLIMIT_Hz  (5.0f)          // Hz

#define USER_MOTOR1_RATED_VOLTAGE_V        (12.0)
#define USER_MOTOR1_FREQ_MIN_Hz            (10.0)          // Hz
#define USER_MOTOR1_FREQ_MAX_Hz            (2000.0)        // Hz

#define USER_MOTOR1_FREQ_LOW_Hz            (10.0)          // Hz
#define USER_MOTOR1_FREQ_HIGH_Hz           (1200.0)        // Hz
#define USER_MOTOR1_VOLT_MIN_V             (3.0)           // Volt
#define USER_MOTOR1_VOLT_MAX_V             (30)   //(12)       // Volt

#define USER_MOTOR1_FORCE_DELTA_A          (0.05)          // A
#define USER_MOTOR1_ALIGN_DELTA_A          (0.01)          // A
#define USER_MOTOR1_FLUX_CURRENT_A         (0.5)           // A
#define USER_MOTOR1_ALIGN_CURRENT_A        (1.0)           // A
#define USER_MOTOR1_STARTUP_CURRENT_A      (3.0)           //
#define USER_MOTOR1_TORQUE_CURRENT_A       (2.0)           // A
#define USER_MOTOR1_OVER_CURRENT_A         (30)          //(16.5)

#define USER_MOTOR1_SPEED_START_Hz         (20.0f)
#define USER_MOTOR1_SPEED_FORCE_Hz         (20.0)
#define USER_MOTOR1_ACCEL_START_Hzps       (10.0f)
#define USER_MOTOR1_ACCEL_MAX_Hzps         (100.0f)

#define USER_MOTOR1_SPEED_FS_Hz             (3.0f)

// only for encoder, no available on this motor
#define USER_MOTOR1_ENC_POS_MAX            (USER_MOTOR1_NUM_ENC_SLOTS * 4 - 1)
#define USER_MOTOR1_ENC_POS_OFFSET         (668)

// Only for eSMO
#define USER_MOTOR1_KSLIDE_MAX             (0.55f)
#define USER_MOTOR1_KSLIDE_MIN             (0.10f)

#define USER_MOTOR1_PLL_KP_MAX             (7.25f)
#define USER_MOTOR1_PLL_KP_MIN             (1.75f)
#define USER_MOTOR1_PLL_KP_SF              (20.0f)
#define USER_MOTOR1_PLL_KI                 (2.8125E-06f)    // Not used, reserve

#define USER_MOTOR1_BEMF_THRESHOLD         (0.5f)
#define USER_MOTOR1_BEMF_KSLF_FC_SF        (1.0f)
#define USER_MOTOR1_THETA_OFFSET_SF        (1.0f)
#define USER_MOTOR1_SPEED_LPF_FC_Hz        (200.0f)

// for IS-BLDC
#define USER_MOTOR1_RAMP_START_Hz           (5.0f)
#define USER_MOTOR1_RAMP_END_Hz             (30.0f)
#define USER_MOTOR1_RAMP_DELAY              (1)

#define USER_MOTOR1_ISBLDC_INT_MAX          (0.015f)
#define USER_MOTOR1_ISBLDC_INT_MIN          (0.010f)

// for Rs online calibration
#define USER_MOTOR1_RSONLINE_WAIT_TIME      (60000U)    // 5min/300s at 5ms base
#define USER_MOTOR1_RSONLINE_WORK_TIME      (24000U)     //2min/120s at 5ms base

// Current and Speed PI Regulators Tuning Coefficient
#define USER_MOTOR1_GAIN_SPEED_LOW_Hz        (60.0f)
#define USER_MOTOR1_GAIN_SPEED_HIGH_Hz       (150.0f)

#define USER_MOTOR1_KP_SPD_START_SF          (1.5f)       // 0.1~100.0
#define USER_MOTOR1_KI_SPD_START_SF          (1.5f)       // 0.1~10.0

#define USER_MOTOR1_KP_SPD_LOW_SF            (2.0f)       // 0.1~100.0
#define USER_MOTOR1_KI_SPD_LOW_SF            (2.0f)       // 0.1~10.0

#define USER_MOTOR1_KP_SPD_HIGH_SF           (1.0f)       // 0.1~100.0
#define USER_MOTOR1_KI_SPD_HIGH_SF           (1.0f)       // 0.1~10.0

#define USER_MOTOR1_GAIN_IQ_LOW_A            (2.0f)
#define USER_MOTOR1_GAIN_IQ_HIGH_A           (6.0f)

#define USER_MOTOR1_KP_IQ_START_SF           (1.5f)       // 0.1~10.0
#define USER_MOTOR1_KI_IQ_START_SF           (1.5f)       // 0.1~10.0

#define USER_MOTOR1_KP_IQ_LOW_SF             (2.0f)       // 0.1~10.0
#define USER_MOTOR1_KI_IQ_LOW_SF             (2.0f)       // 0.1~10.0

#define USER_MOTOR1_KP_IQ_HIGH_SF            (1.0f)       // 0.1~10.0
#define USER_MOTOR1_KI_IQ_HIGH_SF            (1.0f)       // 0.1~10.0

#define USER_MOTOR1_KP_ID_SF                 (1.0f)       // 0.1~10.0
#define USER_MOTOR1_KI_ID_SF                 (1.0f)       // 0.1~10.0

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

    您好!

    过流故障通常是由电机参数不良导致的、正如您所说的、该电机上没有很多数据。 在这里有几个选项:

    1. 构建级别2要求 USER_MOTOR1_FREQ_LOW_Hz、USER_MOTOR1_FREQ_HIGH_Hz 、USER_MOTOR1_VOLT_MIN_V 和 USER_MOTOR1_VOLT_MAX_V 具有合适的 电机基本参数值  通过根据实验和电机规格调整这些值、您可以继续保持此构建级别。

    2. 如果此信息未知、则 有时转到构建级别3会有所帮助 如果 基本电机参数值良好)。

    3. 如果基本电机参数未知或者构建级别3也无法正常工作、则可能需要跳至构建级别4以使用电机识别例程。 有关该过程的更多信息、请参阅用户指南。

    此致、
    Jason Osborn

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

    谢谢 Jason

    我尝试了构建级别3和电机跨度、尽管它 运行得 有点粗糙 并且扭矩很小(可能是因为电机参数错误?) .  

    我尝试了构建级别4、电机旋转了一些、然后开始旋转、但我认为它没有完成校准。   

    如何判断校准是否 已成功完成?

    我看了看故障和 标志设置为'startupFailed'和'currentUnbalance',所以我认为它失败了?

    我曾尝试 更改一些电机参数、但现在它再次在"ModuleOverCurrent"上失败。

    我认为 InstaSPIN FOC 无需知道所有这些参数即可校准电机?  

    这是一个至关重要的要求、 因为   我将要使用的电机的规格很少或者根本没有。

    InstaSPIN 是应该解决这个问题、还是我误解了它?

    另外、在构建级别4的用户指南中、它讨论了交流电源、但我不知道这是指什么...

    3.5.4.3运行代码

    1.在50/60Hz 下将交流电源输出设置为0V、打开交流电源、将输入电压从0V 缓慢增加至220V 交流

    构建级别4指出这些参数是必需的、 但我只知道 以下参数...

    #define USER_MOTOR1_TYPE MOTOR_TYPE_PM  
    #define USER_MOTOR1_NUM_POLE_PAIRS (7) // 12N14P 配置
    #define USER_MOTOR1_KV1500 (0.062) //这适用于 Rs_Ohm  电机(未指定 KV1950电机)

    实际上、相电阻并不是很正确、因为 该值 适用于具有较低 KV 额定值 的电机(  KV1950电机没有规格)。

    我不知道 以下参数(或  user_mtr1.h 中定义的任何其他参数)...

    #define USER_MOTOR1_MOTORI Rr_Ohm  
    #define USER_MOTOR1_Ls_d_H  
    #define  USER_MOTOR1_Ls_q_H  
    #define USER_MOTOR1_RATED_FLUX_VpHz

    如何进行操作、或者不知道 所有电机参数是不可能进行的?

    以下是唯一可用的电机规格、实际上没有 KV1950版本的规格...

    store.tmotor.com/.../f90-fpv-motor.html

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

    我联系了电机制造商以获取 KV1950版本的规格(见下图)。

    我已经发现这个电机是三角形。   软件和 InstaSPIN 是否适用于三角形电机?

    我还向制造商询问了 相位电阻的相关信息。  他们说、"内部电阻"是在2根电机导线(总共有3根导线)之间测量的。   他们还说、要获得相电阻、内部电阻必须乘以1.5。  因此、 相位电阻为67mR (即45mR x 1.5)

    以下参数是我唯一能够 确定的参数(不确定是否全部计算正确):

    • USER_MOTOR1_SSIClk Rs_Ohm = 0.067
      • 45mR 的内部电阻(在两根导线之间测量)
      • 电机采用三角形绕线、因此定子电阻为45mR * 1.5 = 67mR
    • USER_MOTOR1_RATED_FLUX_VpHz = 0.002537803
      • 1950rpm 时、反电动势为1V
      • 因此、1000rpm (1000rpm/1950rpm)下的反电动势为0.5128V
      • 额定磁通=反电动势* 60 * 1/1000 * 1/PolEPair * 1/√3
      • 额定磁通= 0.5128 * 60 * 1/1000 * 1/7 * 1/√3
      • 额定磁通= 0.002537803
    • USER_MOTOR1_MAX_CURRENT_A = 53.6
      • 电机峰值电流额定值为53.6A
    • USER_MOTOR1_RATED_VOLTAGE_V = 22.2
      • 电机电压额定值为5S-6S
      • 3.7V x 6 = 22.2V
    • USER_MOTOR1_FREQ_MAX_Hz = 3500
      • 最大频率=(最大 rpm *总极数)/ 120
      • 最大频率=(30,000 * 14)/ 120
      • 最大频率= 3500

    即使使用这些更新后的参数、InstaSPIN 似乎也不会表征电机(对于构建级别4)。

    在校准期间、电机最终开始抖动、然后缓慢旋转、但在校准完成之前停止旋转(可以听到电机中的 PWM 频率升高)。 ‘m标志表示"startupFailed"、"currentUnbalance"和"oduleOverCurrent"故障。

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

    请参阅 这个 e2e 线程、Y 形配置与 Δ 形配置的要求没有变化-除了估计值(对于 FAST 应该是正确的)不会完全匹配制造商提供的规格。  

    参考下图:

    您的用户 motor .h 文件中带有注释的参数是否与提供的规格相匹配? 这些地址用于识别过程。

    此致、
    Jason Osborn

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

    你好、Jason

    我根据电机制造商网站上显示的信息计算了一些参数:

    • 峰值电流指定为53.6A (持续60秒)。
    •  最大电机转速约为30000rpm (根据安装了各种螺旋桨的测试结果)  

    1. USER_MOTOR1_FREQ_MAX_Hz -我是否计算正确(见下文)?

    最大频率=[(Max rpm * Total Poles)/ 120]=[(30,000 * 14)/ 120]= 3500Hz

    2.  USER_MOTOR1_NUM_ENC_SLOTS -这不适用,因为电机上没有安装编码器位置传感器

    3.  USER_MOTOR1_INERTIA_Kgm2 -我没有 这些信息

    参数值如下所示:

    #define USER_MOTOR1_MAGNETIZING_CURRENT_A  (NULL)
    #define USER_MOTOR1_RES_EST_CURRENT_A      (5.4) // 10~30% of rated current of the motor i.e. 53.6A x 10% = 5.4A
    #define USER_MOTOR1_IND_EST_CURRENT_A      (-5.4)// 10~30% of rated current of the motor i.e. 53.6A x 10% = 5.4A
    #define USER_MOTOR1_MAX_CURRENT_A          (5.4) // 10~30% of rated current of the motor i.e. 53.6A x 10% = 5.4A
    #define USER_MOTOR1_FLUX_EXC_FREQ_Hz       (350) // 10~30% of rated frequency of the motor i.e. 3500 x 10% = 350Hz
    #define USER_MOTOR1_NUM_ENC_SLOTS          (1000)       // N/A (sensorless)
    #define USER_MOTOR1_INERTIA_Kgm2           (5.06154e-06) // unknown
    #define USER_MOTOR1_FREQ_MAX_Hz            (3500) // Max frequency = [(Max rpm * Total Poles) / 120] = [(30,000 * 14) / 120] = 3,500 Hz

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

    快速:  如果您错过了文档中的相关内容、快速识别将适用于未与负载(即自由旋转)耦合的电机。

    惯性:  在这种情况下、由于电机尺寸和重量均由制造商提供、因此我们应该能够计算出看起来更好的惯性值。 理想情况下、我们只考虑与旋转轴紧密耦合的重量、但数量应接近。

    实心圆柱(转子)的惯性矩在数学上被定义为:

    • 惯性=(质量*半径^2 / 2)
    • =(46.6g *(4mm / 2)^2)/2
    • = 9.32×10^-8 kg m^2 (注意单位转换!)
      • 对于代码、如果保持格式一致、则为9.32e-08。

    因为您的电机非常小、这在我看来是对的。 调整您的惯性值、并告知我这是否会根本提高性能。 实际惯性值将略低于此值(因为这不仅是与转子紧密耦合的质量)、而且应该是比默认值更好的起点。

    此致、
    Jason Osborn

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

    请注意、我之前没有考虑过它、但低电感电机需要微调才能使电机 ID 正常工作。 考虑以下步骤:

    就参数格式而言、本用户指南有点过时(注意它所讨论的任何参数的单位)、但它在概念上是正确的。

    此致、
    Jason Osborn

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

    谢谢 Jason

    电机与任何东西都不耦合、它可以自由旋转。

    我已经使用了您计算出的惯性、但校准没有运行、因为我马上会收到一个模块过流故障。

    您计算的惯性使用电机的总重量、是否仅使用转子的重量(未指定、因此未知)?

    以下是我使用的参数...

    #define USER_MOTOR1_TYPE                   MOTOR_TYPE_PM
    #define USER_MOTOR1_NUM_POLE_PAIRS         (7)
    #define USER_MOTOR1_Rr_Ohm                 (NULL)
    #define USER_MOTOR1_Rs_Ohm                 (0.067f)//(0.115332372f)  Internal Resistance of 45mR.  Stator resistance is 45mR * 1.5 = 67mR (delta winding)
    #define USER_MOTOR1_Ls_d_H                 (1.76480826e-05f)
    #define USER_MOTOR1_Ls_q_H                 (1.76480826e-05f)
    #define USER_MOTOR1_RATED_FLUX_VpHz        (0.002537803f) // 1V at 1950rpm, therefore 0.5128V at 1000rpm (1000rpm/1950rpm). Flux = 0.5128 * 60 * 1/1000 * 1/PolePair * 1/√3 = 0.5128 * 60 * 1/1000 * 1/7 * 1/√3 = 0.002537803
    
    #define USER_MOTOR1_MAGNETIZING_CURRENT_A  (NULL)
    #define USER_MOTOR1_RES_EST_CURRENT_A      (3) // 10~30% of rated current of the motor i.e. 53.6A x 10% = 5.4A
    #define USER_MOTOR1_IND_EST_CURRENT_A      (-2.5)// 10~30% of rated current of the motor i.e. 53.6A x 10% = 5.4A
    #define USER_MOTOR1_MAX_CURRENT_A          (20) // 10~30% of rated current of the motor i.e. 53.6A x 10% = 5.4A
    #define USER_MOTOR1_FLUX_EXC_FREQ_Hz       (350) // 10~30% of rated frequency of the motor i.e. 3500 x 10% = 350Hz
    #define USER_MOTOR1_NUM_ENC_SLOTS          (1000)       // N/A (sensorless)
    #define USER_MOTOR1_INERTIA_Kgm2           (9.32e-08) // Inertia = (mass * radius^2 / 2).  Inertia =  (46.6g * (4mm/2)^2)/2 =  9.32×10^-8 kg m^2 (notice the unit conversion!)
    #define USER_MOTOR1_FREQ_MAX_Hz            (3500) // Max frequency = [(Max rpm * Total Poles) / 120] = [(30,000 * 14) / 120] = 3,500 Hz
    

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

    谢谢 Jason、

    我已开始阅读第 6.10.1.8.1节(识别低电感 PMSM 电机)。

    我了解将分压电阻或电压反馈更改为 ADC 转换器的最大位数的部分、以及参数 USER_ADC_FULL_SCALE_VOLTAGE_V ( 在软件中实际上是 USER_M1_ADC_FULL_SCALE_VOLTAGE_V)。

    但是我在软件中找不到手册中提到的以下参数(或类似参数):

    • USER_IQ_FULL_SCALE_VOLTAGE_V  
    • USER_R_OVER_L_EST_FREQ_Hz
    • USER_MOTOR_FLUX_EST_FREQ_Hz
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    • USER_IQ_FULL_SCALE_VOLTAGE_V 不再存在。 前面提到的针对此参数的建议现在可以忽略。
    • USER_R_OVER_L_EST_FREQ_Hz 对应于 USER_M1_R_OVER_L_EXC_FREQ_Hz。
    • USER_MOTOR_FLUX_EST_FREQ_Hz 对应于 USER_MOTOR1_FLUX_EXC_FREQ_Hz。

    此外、为了确认-如您发布的原始链接中所述、该电机是否用于赛车无人机?

    此致、
    Jason Osborn

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

    尽管它有任何帮助、我已经在运行实验2时捕获了相电压和电流的示波器轨迹、该实验会导致模数过流故障。

    A 相电压和电流

     B 相电压和电流

     C 相电压和电流

    ABC 电压和 A 相电流