High Power Stepper Motor Driver 36v4 Stall Detection

Hello everyone!

In one project I am using Pololu’s High Power Stepper Motor Driver 36v4 for controlling stepper drivers. I have a working code for running the motors but, due to the mechanical configuration of my system, sometimes the motors loose steps.

These drivers include STALL detection, so I supposed I could implement a simple algorithm that could make the motors go to home position once detected STALL, an re-do the failed movement.

I have used the following code from the Arduino library:

bool check_stall(HighPowerStepperDriver drv){
return (drv.readStatus() & (1 << (uint8_t)HPSDStatusBit::STD));

This code should return a True when stall has been detected. However, even applying a big charge to the motor and cause it clearly loosing steps, no stall is detected. When printing the status register of the driver, no stall flag has been raised.

I configure the driver with the resetSettings(); function, which makes the drivers go to default settings.

Has anybody been able to use the STALL detection with these drivers? Have I misunderstood when the STALL flag is set?

Thank you all!


Unfortunately, we have not done much with the stall detection on that driver, so we cannot offer any specific advice, but if you have not done so already, I recommend reading through the DRV8711 datasheet. Information about the internal stall detection can be found on page 24, and there are a few considerations mentioned there that might be relevant for you. For example, the time between step inputs must be greater than the SMPLTH time, the motor must be moving at some minimum speed, it does not work in full-step mode, and you will probably need to find the correct setting of the SDTHR bits for your setup experimentally.