Hey everyone,
I'm trying to use the built-in stall detection feature of the DRV8434S stepper motor driver to detect end-of-travel in a linear actuator I'm designing. The driver is able to drive the NEMA 17 motor I'm using perfectly well, and I'm able to use the SPI interface to set the drive current and microstepping levels. The problem comes when I try to read the TRQ_COUNT register, which corresponds to the mechanical load on the motor - it only reads 4095, the default value according to the datasheet.
I've ensured that all the requirements described by the datasheet for stall detection are met: The driver is in Smart Tune Ripple Control, EN_STL is 1, and no fault condition is present.
I've spent six hours trying to fix this problem - so far I've tried:
- changing the
STALL_THregister from its default of 3 to 50 - Adding or removing the current limit
- Changing the current decay mode
- Changing the microstep mode
- Changing the speed of the motor
- Changing the ripple threshold, turning Spread Spectrum and Torque Scale on and off
- Turning on Stall Representation (Causes the nFLT pin to go low during a stall, the pin stayed high when the motor was stalled)
- Switching out the driver for a brand-new one
- Activating the Stall Learn feature (never registered as a successful learn)
- Probing the SPI connection with an oscilloscope to confirm that the correct address/data are being sent (they are, the device is returning all 1's for TRQ_COUNT)
I'm at a complete loss. Can anyone point out what I might be missing? I can't post on the TI forums for help, so you all are the best I've got. Thanks in advance!