你(们)好。
我需要你的帮助。
我正在为我的项目使用 DRV8711。我的要求是按顺序只需几秒即可停止步进电机的运行。(失速检测)
我将使用5个位置的步进电机。在第二个位置、我添加了一个机械挡块来停止电机。 因此、当机械挡块停止电机时、我生成了一个中断。
void Stepper_GPIOIntHandler (void)
{
GPIOIntClear (GPIO_PORTP_BASE、GPIO_PIN_1);
IF (GPIOPinRead (GPIO_PORTP_BASE、GPIO_PIN_1)
{
G_Cal_RSU_SucSmall.stall Arm_Motor = 1;
}
否则
{
if (STALL_Flag==1)
{
G_Cal_RSU_SucSmall.stall Arm_Motor = 0;
Motor_Stop_Sequence ();
RSU_STALL_Flag = 0;
}
}
}
当中断出现时、步进序列发生了 STALL=1 (电机运行)、进入 STALL=0 (电机停止)、但我需要在 STALL=0后停止步进、我使用了停止序列、但它不起作用。
我需要在几秒钟后停止电机、然后电机才会移动到下一个位置。
我的停止序列是
空 Motor_Stop_Sequence (空)
{
Stepper_Sleep 输入低电平;
Stepper_Step_Input_Low;
}
注:在上述代码中,电机将免费。 不移动下一个位置。\n 请 建议如何停止电机。
请检查我的上述停机顺序是否正确? 请提供一个解决方案、让失速0后在步进电机进入下一个序列后停止步进电机几秒钟。
客观:
当机械止动装置停止电机时、失速检测将启用。
谢谢!