工具/软件:Code Composer Studio
我们一直在使用 INStaspin FOC (在 TMS320F28052F 上)进行无传感器电机控制。
电机有2个极对、工作电压为40V、最大电流为10A、最大速度为3.5krpm。 PWM 为30kHz、系统以60MHz 运行。
我要使电机以2.5krpm 的转速旋转、然后在轴上残酷地停止它
我要实现的目标是监控电流消耗、使其电平始终保持在2安培以下
为此,我在 ctrl.h 中监视最大速度差 PID (PID_setMinMax(obj->pidHandle_spd、outMin、outMax);),并使用公式 Is_a = sqrt ( IQ_A x IQ_A + ID_A x ID_A )
_iq is_a、Id_a_temp、IQ_a_temp; is_a =_IQ (2.0); ID_a_temp =_IQmpy (CTRL_getid_in_pu (handle)、 _iq (USER_IQ_FULL_SCALE_CURRENT_A)); IQ_A_temp =_IQsqrt (_IQmpy (is_A、is_A)-_IQmpy (ID_A_temp、ID_A_temp)); IQ_A_temp =_IQdiv (IQ_A_temp、 _iq (USER_IQ_FULL_SCALE_CURRENT_A)); if (IQ_A_temp < outMax) { outMax = IQ_A_temp; outMin =-outMax; } PID_setMinMax (obj->pidHandle_SPD、outMin、outMax);
这似乎在电机停止时起作用。 我观察到的是、在停止期间电流峰值、我不明白为什么? 有人能给我提示吗?
黄色曲线是分辨率为100mV/A 的电流
蓝色曲线是以 V 为单位的电压