无刷电机带上驱动器,掉电外力拖动有阻力
这个问题一直以为很好理解或者应该是总所周知的,但是竟然很多人好奇问专门做电机控制的工程师,但是竟然很多人说不明白,今天我就好好聊一聊。
原因
-
反电动势效应
当无刷电机在没有电源供电的情况下被外力拖动时,电机内部的转子仍然会转动。这时,电机的绕组切割磁力线,产生反电动势(Back EMF)。这个反电动势会在电机的绕组中产生电流,进而产生阻力。 -
短接制动
当三相绕组短接后,反电动势在绕组中产生电流。由于三相绕组是短接的,这些电流在绕组中形成闭合回路,短接电流在绕组中产生的磁场与转子磁场相互作用,产生电磁制动力。这种制动力与电机的转速成正比,即电机转速越高,产生的制动力越大。 -
电流路径的形成
· 定子绕组中的电流:反电动势在定子绕组中产生电压,这个电压驱动电流在定子绕组中流动。
· 驱动器电路的连接:无刷电机的三相绕组通过连接线与驱动器的三相输出端(U、V、W)相连。即使驱动器掉电,电机绕组中的反电动势仍然会通过这些连接线传输到驱动器。
· 在驱动器的功率开关元件(如MOSFET)上,通常存在体二极管。这些二极管在反向电压超过其导通电压时会导通,允许电流通过。
电流回路示例
- 反电动势在B相产生正电压,A相产生负电压,从而形成由B相流入A相的电流。
- 电流通过A相的体二极管,进入驱动器的电源轨,又B相的体二极管流入地。
- 进入电源轨之后,我们将驱动器上的元器件近似比作一个电阻型负载。此时电流已形成,由于有负载电阻的原因电流并不大,这里可以思考下为什么会有这么大的阻力。
解决办法
-
原因:
工作中大多驱动器的设计都会考虑到这些问题,会来看这个问题的同学多半是自己做的驱动器没有注意这个细节,专门跑到CSDN找原因的。请同学们们仔细看看自己的代码的PWM配置有没有将空闲引脚配置为低,如果为低仍有阻力,继续往后看,你的电流采样的偏置电压基准是否是在初始化时采集。回到上面的问题,电流明明很小为什么会产生明显的阻力?就是因为反电动势驱动驱动器上的元器件工作,上电就行初始化中会有将MOSFET导通的操作,形成短接制动的效果。
-
解决:
(1)将初始化的PWM引脚改为高组态
//STM32
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
//HPM5300
void disable_all_pwm_output(void)
{
/*force pwm*/
pwm_config_force_cmd_timing(DRV_BLDCPWM, pwm_force_immediately);
pwm_enable_pwm_sw_force_output(DRV_BLDCPWM, DRV_BLDC_UH_PWM_OUTPIN);
pwm_enable_pwm_sw_force_output(DRV_BLDCPWM, DRV_BLDC_UL_PWM_OUTPIN);
pwm_enable_pwm_sw_force_output(DRV_BLDCPWM, DRV_BLDC_VH_PWM_OUTPIN);
pwm_enable_pwm_sw_force_output(DRV_BLDCPWM, DRV_BLDC_VL_PWM_OUTPIN);
pwm_enable_pwm_sw_force_output(DRV_BLDCPWM, DRV_BLDC_WH_PWM_OUTPIN);
pwm_enable_pwm_sw_force_output(DRV_BLDCPWM, DRV_BLDC_WL_PWM_OUTPIN);
pwm_set_force_output(DRV_BLDCPWM,
PWM_FORCE_OUTPUT(DRV_BLDC_UH_PWM_OUTPIN, pwm_output_high_z)
| PWM_FORCE_OUTPUT