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.

[参考译文] TMS320F28054M:电机 ID 结果错误、在0速附近急动旋转

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/955697/tms320f28054m-wrong-motor-id-results-jerky-rotation-near-0-speed

器件型号:TMS320F28054M
主题中讨论的其他器件:BOOSTXL-DRV8305EVMCSD88599Q5DCCSD88584Q5DCMOTORWARE

有2种几乎相同的设计、一种设计完美无瑕、另一种设计不完美。 工作板的原理图如下所示:

与 BOOSTXL-DRV8305EVM -电流反馈滤波器(我们的100R+3.3nF 与56R+2.2nF)相比、分压器比率不同、电压滤波器截止频率错误。 尽管如此、它仍然运行良好、即使在100RPM 电机平稳旋转且具有大量可用扭矩的情况下也是如此。 使用的 user.h 参数(在升压板上学习):

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24)
#define USER_ADC_FULL_SCALE_VOLTGE_V (33)
#define USER_IQ_FULL_SCALE_CURRENT_A (41.25)
#define USER_ADC_FULL_SCALE_CURRENT_A (55)
#define I_A_offset (0.287211)
#define I_B_offset (0.286317)
#define I_C_offset (0.284386)
#define V_A_offset (0.045690)
#define V_B_offset (0.045514)
#define V_C_offset (0.044920)
#define USER_SYSTEM_FREQMHz (60.0)
#define USER_PWM_FREQ_kHz (45.0)
#define USER_R_OVER L_EST_FREQ_Hz (300)
#define USER_VOLTGE_FILTER_POLE_Hz (335.648)
#define USER_MOTOR_TYPE Motor_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (0.0187090952)
#define USER_MOTOR_LS_d (0.0000114935112)
#define USER_MOTOR_LS_q (0.0000114935112)
#define USER_MOTOR_RATed_FLUX (0.01622281)
#define USER_MOTOR_磁 化电流(NULL)
#define USER_MOTOR_RES_EST_CURRENT (6.0)
#define USER_MOTOR_IND_EST_CURRENT (-6.0)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (50) 

在该电路板上了解到的 user.h 参数:

#define USER_IQ_FULL_SCALE_VOLTAGE_V (24)
#define USER_ADC_FULL_SCALE_VOLTAGE_V (33.0)
#define USER_IQ_FULL_SCALE_CURRENT_A (41.25)
#define USER_ADC_FULL_SCALE_CURRENT_A (27.5)
#define I_A_OFFSET (0.287211)
#define I_B_OFFSET (0.286317)
#define I_C_OFFSET (0.284386)
#define V_A_OFFSET (0.045690)
#define V_B_OFFSET (0.045514_FREQ_SYSTEM

)#define 0.044MHz (60.0)
#define USER_PWM_FREQ_kHz (45.0)
#define USER_R_over_L_EST_FREQ_Hz (300)
#define USER_VOLTAGE_FILTER_POLE_Hz (335.648)
#define USER_MOTOR_TYPE Motor_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (0.035178)
#define USER_MOTOR_LS_d (0.000020464)
#define USER_MOTOR_LS_q (0.000020464)
#define USER_MOTOR_RATed_FLUX (0.010968)
#define USER_MOTOR_磁 化电流(NULL)
#define USER_MOTOR_RES_EST_CURRENT (6.0)
#define USER_MOTOR_IND_EST_CURRENT (-6.0)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (50) 

请注意不同的 USER_ADC_FULL_SCALE_CURRENT_A 值、但无论哪种电机旋转方式都很好、只有 id 在55A (约10mR)下给出错误结果。

不确定 USER_ADC_FULL_SCALE_CURRENT_A 是否为正-负电流应在此处(27.5 --27.5 = 55A)或仅为正(27.5A)。

下面不工作:

我们知道的差异:

1) CSD88584Q5DC (40V 版本)与 CSD88599Q5DC (60V 版本)之间的关系、如果这是个问题、将会非常令人惊讶。

2) DRV8323H (默认情况下使用与 RS 版本相同的设置)与 DRV8323RS (默认设置)之间的关系、不能考虑其重要性的任何原因。

3)另一个分压比

4)原理图显示40V/V 增益、我们尝试了40和20。

我们所做的:

1) 1)将分压器更改为36K + 5K1 = 26.6V 满量程、使用较高的满量程分压器、学习完成时没有错误、但 Rs (约10mR)、(0.008V/Hz)区域中的磁通和 Ls (约0.16mH)的结果错误。 现在、使用新的分频器学习从嗡嗡声开始、给出大约50mR、然后缓慢开始旋转电机。 当状态机从旋转向上移动到 LS 测量电机突然停止并开始再次旋转时。 该停止具有不同的值、非常软或硬点击。 之后、它会旋转一段时间、id 以错误结束。

2) 2)已将电压滤波器截止频率更改为356Hz、但没有任何变化、即使这看起来很重要。

3) 3)将电源几乎直接连接到 FET、在该板上有一个更大的接地平面和电源平面、因此电流会低于 DRV、可能会导致一些问题、但没有任何变化。

4) 4)将 USER_IQ_FULL_SCALE_VOLTAGE_V 更改为 许多不同的值、除了具有某些组合的非启动代码外、没有任何明显的变化。

5) 5)将 USER_IQ_FULL_SCALE_CURRENT_A 反向和值、因为我们不确定哪个值是正确的。

6)尝试了许多 USER_MOTOR_RES_EST_CURRENT、包括2A (约为标称电流的10%、id 无法旋转电机)、6A (大部分时间都使用)、9A、12A

7) 7)尝试不同 的 USER_MOTOR_IND_EST_CURRENT 电流-1、-1.5、-2、-6A

8) 8)尝试了不同 的 USER_MOTOR_FLUX_EST_FREQ_Hz、20、30、40、50、 100Hz。 20是最差的、电机旋转了一段时间、然后产生可怕的噪声、其他的结果大致相同。

9)尝试了不同 的 USER_R_OVER L_EST_FREQ_Hz (100、200、300Hz)、没有发现任何改进。

10) 10)尝试了不同的电机、所有电机上的行为都相同。

11)已尝试不同的总线电压(12、18、24V)、在所有电压上的行为都相同。

12)尝试仅使用陶瓷电容器并添加180uF 电解电容器(与工作板上相同)、未注意到任何变化。

13)放置其他板上的电机参数并旋转电机(在缓慢转速时始终存在相同的问题、有时也会出现更高的问题)。

14)使用具有短导线的锂离子电池与实验室电源和较长导线的电池(工作板无关、在这里没有明显变化)。

15)验证 ADC 是否提供了正确的值(禁用了所有 FET、对每个相位施加了外部电压;仅启用了低侧 FET、通过电子负载施加了4A;在这两种情况下、均可在合理的情况下设置值)。

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

    您可以参考以下3个文档、根据硬件板修改 hal.c、hal.h 和 user.h 文件中的相关参数和器件配置代码。 确保您自己硬件板的电流和电压感应电路适合运行电机。

     

    instaspin_labs.pdf、网址为"\ti\motorware\motorware_1_01_00_18\docs\labs"

    motorware_hal_tutorial.pdf、网址为"\ti\motorware\motorware_1_01_00_18\docs\Tutorials"

    《InstaSPIN-FOCTm和 InstaSPIN-MOTIONTm用户指南 》http://www.ti.com/lit/ug/spruhj1h/spruhj1h.pdf 

     

    1.在 hal.c 中更改 PWM 和 ADC 配置请参阅指南 motorware_hal_tutorial.pdf。

     

    2.根据 user.h 中的硬件板设置正确的参数

    #define USER_IQ_FULL_SCALE_VOLTAGE_V          (xx)

    #define USER_VOLTGE_FILTER_POLE_Hz              (xx)

    #define USER_ADC_FULL_SCALE_VOLTGE_V      (xx)

    #define USER_IQ_FULL_SCALE_CURRENT_A          (xx)

    #define USER_ADC_FULL_SCALE_CURRENT_A      (xx)

    3.确保 hal.h 中 HAL_readAdcData()中电流系数的符号与电流感应电路匹配。 请参阅 InstaSPIN 用户指南(SPRUHJ1H、 http://www.ti.com/lit/ug/spruhj1h/spruhj1h.pdf)中的第5.2.2章"电流反馈极性"、以设置电流换算系数的符号。

     

    静态内联空 HAL_readAdcData (HAL_Handle handle、HAL_AdcData_t * pAdcData)

      _IQ Current_SF = HAL_getCurrentScaleFactor (handle);

    4.按照 instaSPIN 实验室指南使用 lab01b 和 lab01c 验证您的硬件 、因为您使用的是您设计的电路板、然后运行后续实验

     

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

    你好,Yanming!

    感谢您的回复!  

    我们检查了您发送给我们的文档。  

    1) 1)我们检查了 PWM、它是正确的、我们还检查了 ADC、它返回了相电流和电压的正确值。 此外、总线电压正确。

    2)我们运行了 lab_1b、电机正在旋转、但它使用了大量电流(至少来自电源的5A 电流、更多的是相位电流)

    3) 3)我们在 user.h 文件中仔细检查了参数、认为我们的参数是正确的

    4) 4)我们还在 Hal_AdcReadData 中尝试了反相电流反馈极性、但电机开始产生较大的噪声、并且未旋转

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

    对于 lab01b、您需要根据电机在 user.h 中更改以下参数。 使用数据记录器或 PWMDAC 作为实验室指南来检查感应电流和电压。 然后使用 lab01c 运行电机、如果您根据电机和运行频率设置正确的基准电流、电机应该会非常平稳地运行。 如果不是、这意味着电流感应中存在一些问题、则必须在尝试运行后续实验之前进行修复。

    #define USER_MOTOR_FREQ_LOW (10.0)// Hz -建议将电机额定频率设置为10%
    #define USER_MOTOR_FREQ_HIGH (100.0)// Hz -建议将电机额定频率设置为100%
    #define USER_MOTOR_FREQ_MAX (120.0)// Hz -建议将电机额定频率设置为120%
    #define USER_MOTOR_VOLT_MIN (3.0)//电压-建议设置为额定电机电压的15%
    #define USER_MOTOR_VOLT_MAX (18.0)//伏特-建议设置为额定电机电压的100%

    您上面显示的电压感应电路似乎不适合 InstaSPIN-FOC、电容太小。 有关电路设计、请参阅相关的 Booster Pack 和 InstaSPIN 用户指南。 滤波器频率应为300~800Hz。  

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

    我们已将滤波器更改为365Hz、满量程电压为26.6V、几乎与参考设计中的情况完全相同。 我们甚至检查了原始 ADC 计数是否正确地表示电压和电流(如果添加偏移、它几乎是在上)。 在本实验中、电机旋转非常平稳、但消耗大量电流。 主要的神秘之处在于、几乎相同的电路板会产生与参考电路板截然不同的结果、尤其是当您考虑到上面显示的第一个电路板即使在不同的值下、甚至在错误的满量程电流设置(55 vs 27.5A)下也能很好地控制电机时。

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

    您可以使用示波器捕获电机的电压和电流波形、然后与数据记录或 PWMDAC 生成的波形进行比较、这将帮助您了解感应电流和电压是否适合电机控制。 lab01b 是一种不使用感应电流和电压的开环控制。

    您可以检查电机的规格、其中应包括卸载电流和额定电流。 如果电机运行 lab01b、则电流值应介于这两个电流之间。 如果 lba01b 中的电流远远大于卸载电流、您还需要检查硬件的驱动电路。