器件型号: LAUNCHXL-F280039C
你好、导师、
注意添加降低 SPEED_ref_Hz 的方法后受控电机取消的问题。 以下代码导致 PWM 驱动器反弹电压上升/下降到 10Hz 附近、并在其中禁用低于 10Hz 参考速度的运行识别标志。 在 18 极电机中、当转速降至 90Hz 以下时、电压反弹会变得更糟、在 130Hz 下运行速为 640RPM。 减速电流似乎不稳定> 90Hz、但在加速时正常。
奇怪的是、这种相同的受控减速方法在低于 1.0f 安培的低电流下正常工作、几乎没有注意到示波器探头上有任何反弹。 然而、电机 8.0f-11.0f 放大器我们是否需要通过减小电流来阻止严重的电压反弹? 在何处调整减速电流、速度控制 Pi?
为什么我们只需禁用 motorVars_M1.flagEnableRunAndIdentify = false 就会使电机崩溃、因为占空比恢复到 50%、电机再生电压会使对接中的 MOSFET 整流器生效。 因此需要缓慢减速至停止、并且强制差值对它设置控制周期速度、SDK 或 UMCSDK 方法没有任何影响。 它在永久环路中具有 4 个–28µs 来进行调节、甚至缓慢地降低速度 Ref_Hz -= 0.05 每个周期都不会影响停止电压反弹。
// FAST/eSMO Start/Forced Speed
USER_MOTOR1_SPEED_START_Hz = 5.0f; //Hz
/* Sets delta acceleration / deceleration speeds */
USER_MOTOR1_SPEED_FORCE_Hz = 2.0f;
//
USER_MOTOR1_ACCEL_START_Hzps = 5.0f; // !Hz
USER_MOTOR1_ACCEL_MAX_Hzps = 10.0f; // !Hz
// motor1_drive.c:
runMotor1Control(motorHandle_M1)
{
if(bDecel)
{
/* reduce acceleration, slowly decelerate to a stop */
motorVars_M1.speedRef_Hz = motorVars_M1.speedRef_Hz -= 0.005f;
{
/* Disable PWM drive anywhere near low hertz speed obj->speed_Hz */
else if(motorVars_M1.speedAbs_Hz <= 2.0f) //USER_M1_FREQ_NEARZEROSPEEDLIMIT_Hz
{
DEVICE_DELAY_US(5000); //5ms
/* Set motor offline not running */
motorVars_M1.flagEnableRunAndIdentify = false;
//
DEVICE_DELAY_US(5000); //5ms
/* Restore user throttle pedal trajectory speed */
obj->speedRef_Hz = USER_MOTOR1_SPEED_REF_HZ; //((uint16_t)SpeedVal);motorVars_M1.
//
DEVICE_DELAY_US(5000); //5ms
//
}
/* update the trajectory speed */
TRAJ_setTargetValue(obj->trajHandle_spd, obj->speedRef_Hz);
//
if((fabsf(obj->speed_Hz) > obj->speedStart_Hz) ||
(obj->motorState == MOTOR_CTRL_RUN))
{
// Sets the acceleration / deceleration for the speed trajectory
TRAJ_setMaxDelta(obj->trajHandle_spd,
(obj->accelerationMax_Hzps * objUser->ctrlPeriod_sec));
// other control codes
return;
}
