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-F28069M:InstaSPIN FOC:识别电机参数和运行血泵时出现故障

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/592217/launchxl-f28069m-instaspin-foc-trouble-identifying-motor-parameters-and-running-blood-pump

器件型号:LAUNCHXL-F28069M
主题中讨论的其他器件:DRV8301

几天以来、我一直在尝试使用设置的 LaunchpadXL F28069和 BoostXL DRV8301驱动程序来运行 PMSM 泵电机、但至今未成功。 我完成了 InstaSPIN FOC 实验项目、只成功地配置电机、以便有时产生未经优化的非原发性运动、并使我的电机加热至极端温度。 问题是我找不到正确的电机参数、并且我只能获得有限的电机信息。 我在 DRV8312-Dev-C-KIT 上看到了使用一些设置和更平滑一点的电机转动、但我无法可靠地重现这些结果。

电机规格:
该设备是一个非常小的医用血液泵、用于植入心脏左心室、该泵实际上包含两个用于转动磁叶轮的 PMSM 电机。 您可以在此专利应用中看到泵内部的一些技术图: www.google.de/.../US7976271

建议的工作范围为大约1000-5000rpm。 遗憾的是、我没有详细的电机规格或数据表。 原始制造商的控制硬件在2580rpm 时测得的正常运行功耗为3.8W。 在使用原始控制器进行测试期间、以下电机相位的示波器读数让我相信泵用电机的额定电压为12-15V:

我之前曾尝试使用带24V 电压的 BoostXL 板运行电机、这说明了热量的累积。 更改为12V 时、Launchpad 电路板的首次启动令人惊讶地在600rpm 转速下提供了迄今为止最佳的结果、但仍然很慢且充满电、但我无法使用相同的配置重现结果。 (为此、我使用 lab11d 来同步运行两个电机、我还成功地在24V 的 DRV8312-Dev-C-Kit 上以1500-2500 rpm 的转速平稳运行单个电机、具有高发热能力)

电机识别:
我使用了其中一个便宜的中国组件测试仪、结果如下:

Rs=2.6 Ω

Ls=0.0004H

labs02c/d 的识别过程提供了截然不同的结果。 (注意:识别是在马达处于负载状态时执行的、即泵充满水、因为叶轮必须在液体介质中自由浮动)。 运行识别过程时、泵永远不会移动:

我使用了电机配置电子表格来计算一些系统参数:
#define USER_IQ_FULL_SCALE_FREQ_Hz (275.0)
#define USER_IQ_FULL_SCALE_VOLTAGE_V (94.0)
#define USER_IQ_FULL_SCALE_CURRENT_A (18.0)
#define USER_ADC_FULL_SCALE_CURRENT_A (33.0)
#define USER_PWM_FREQ_kHz (15.0)
#define USER_R_OVER L_EST_FREQ_Hz (100.0)

#define USER_PWM_FREQ_kHz (45.0)

#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (3)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (空)
#define USER_MOTOR_LS_d (空)
#define USER_MOTOR_LS_q (空)
#define USER_MOTOR_RAGED_FLUX (空)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (2.0)
#define USER_MOTOR_IND_EST_CURRENT (-2.0)
#define USER_MOTOR_MAX_CURRENT (2.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (25.0)


lab02c 结果:
电机 M1 (红色):
Rs=2.26 Ω
Ls=1.658e-11至8.49e-9
磁通= 0.3至0.7VpHz

电机 M2 (蓝色):
Rs=2.8 Ω
Ls=3.3e-8至0.0164
磁通= 0.67至1.33VpHz

我已经尝试过这些参数的不同组合以及 PWM 频率和磁通频率的不同值、但在大多数情况下、电机只会在没有运动和预热的情况下产生高频噪声。

到目前为止、转子每隔几秒移动一个步进的最佳再现性结果是采用以下配置。 但我不知道这是如何帮助我实现流体电机运行的。 (我将这些共享定义应用于 M1、M2电机定义)

#define USER_PWM_FREQ_kHz_COM       (15.0)


#define USER_MOTOR_TYPE_SHARED MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAINS_SHARED (3)
#define USER_MOTOR_RR_SHARED (空)
#define USER_MOTOR_Rs_Shared (2.2)
#define USER_MOTOR_LS_D_SHARED (0.0004)
#define USER_MOTOR_LS_q_SHARED (0.0004)
#define USER_MOTOR_RAGED_FLUX_SHARED (0.1)
#define USER_MOTOR_磁 化电流共享(空)
#define USER_MOTOR_RES_EST_CURRENT_Shared (2.0)
#define USER_MOTOR_IND_EST_CURRENT_Shared (-2.0)
#define USER_MOTOR_MAX_CURRENT_SHARED (2.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz_SHARED (25.0)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK_SHARED (2)
#define USER_PWM_FREQ_kHz_shared USER_PWM_FREQ_kHz_COM

#define USER_IQ_FULL_SCALE_FREQ_Hz_SHARED (275.0)// 800示例、具有缓冲器、用于8极6 krpm 电机在磁场减弱时运行至10 krpm;Hz =(RPM * Poles)/ 120
#define USER_IQ_FULL_SCALE_VOLTAGE_V_SHARED (94.0)
#define USER_ADC_FULL_SCALE_VOLTGE_V_SHARED (26.314)// 26.314 boostxldrv8301_RevB 电压调节
针对 boostxldrv8301_RevB 典型用法的#define USER_IQ_FULL_SCALE_CURRENT_A_SHARED (18.0)// 20.0示例
#define USER_ADC_FULL_SCALE_CURRENT_A_Shared (33.0)// 33.0 boostxldrv8301_RevB 电流调节

此时、我只是盲目地尝试参数配置、希望一些参数能提供更好的反馈、但几乎没有成功。

对于我可以做什么或在什么棒球场中做什么、您有什么建议、所需的电机参数是泵的低功耗、推荐速度和上述测量结果?

同步双电机驱动:
lab11d 允许与 PWM 信号的默认漂移同步驱动两个电机的相位半个周期。 是否可以将此移位更改为完整周期? 我们比较了原始控制器的相位、它似乎以全周期相移驱动两个电机。 hal_2mers.c 中的"halPeriod_cycles"变量在多个位置被引用,因此只需更改 HAL_MTR2行"pwm_setPhase (objmtr->pwmHandle[0]、(halPeriod_cycles>1)即可;"对于 HAL_MTR2、将其更改为"pwm_setPhase->pwmHandle[hal_dycles (hal_dycles)、pwmycle>0);hal_dycles (hal_dycles) (删除二进制右移、因此将偏移从半个周期增加到一个完整周期?)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于您的电机是电感极低的高速电机、因此您需要使用 lab02c 来首先识别电机参数、以获取正确的电机参数并首先在 user.h 中进行设置。 并在 user.h 中将 PWM 频率设置为45kHz、如下所示。
    #define USER_PWM_FREQ_kHz (45.0)
    #define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

    您需要设置正确的参数、以使电机在识别过程中平稳运行。
    #define USER_MOTOR_RES_EST_CURRENT (1.0)
    #define USER_MOTOR_IND_EST_CURRENT (-1.0)
    #define USER_MOTOR_MAX_CURRENT (3.0)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (60.0)

    Lab11d 使用周期移位来改善 ADC 采样当两个电机使用相同的 PWM 频率时、您可以将移位时间设置为大于电流和电压采样和转换的总和时间的任何值。 "halfPeriod_cycles">1"是移位时间的参考值,而不是关键设置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的建议。 遗憾的是、我仍然无法正确识别电机。 即使使用您提供的值或其他组合、在 lab02c 中识别期间电机仍不会转动。

    你有什么其他想法我可以尝试什么吗?

    最后、是否可以完全放弃使用 InstaSPIN 库、只需在两个 BoostXL DRV8301插件上使用 PWM 曲线手动设置3个电机相位? 我会失去速度和扭矩控制的所有优点、但在哑铃开环中运行电机将比此时的情况更好。