This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRV8834: Enable Causing Bad Output Coil Waveforms

Part Number: DRV8834


I am using a 5v bipolar stepper motor with the drv8834.

config is in indexer mode (permanently tied, not GPIO controlled)

m pins selected for full steps (permanently tied, not GPIO controlled)

Sleep pin connected to logic high to be permanently enabled.(permanently tied, not GPIO controlled)

nEnable is GPIO conytrolled.

I want to make sure that if necessary, I can make a single step by going enable, step, disable . I set up the mcu so that it would repeatedly run this sequence for the number of steps in a revolution, so that I could ascertain if I was losing steps. I used appropriate timing for the commands, including a 1ms delay between falling edge of step command and assertion of nEnable to disable output ( this delay was necessary to make it turn at all). I put a scope on the output of the drv8834 to the coils and witnesses the waveform was full of noise so that it was barely recognisable. This was due to the disable command, which if I removed, restored the waveform to the expected square waveform. However, effectively having the coils permanently enabled meant that the motor and its power regulator got extremely hot. Also, when the disable command was implemented at the end of the entire revolution, instead of after every step, the steps were lost even quicker than when there was a disable command after every step.

Is there a correct way to implement this? Should I instead be tieing the nEnable pin permanently low and controlling the Sleep pin with GPIO or controlling both Sleep AND nEnable with GPIO .

My aim is to be able to make a single step on the motor and turn the power off to the coils in between steps so that the motor doesn’t get too hot. and be sure that it doesn’t lose steps. It seems that this is impossible by using nEnable, because only having it permanently enabled seems to not lose steps and this is of course accompanied by very high motor temperatures.

Please advise the best way to achieve this accuracy and efficiency . Many thanks.


I need to be able to 

  • Alex,

    At what current are you regulating?  Please see section 8.3.1.  Do you have a mechanical load on the motor?  

    nENABLE should be the right control to use to disable the outputs.  But, disabling after every step is not the usual way to control a motor as you will not be able to hold a step.  It would be better to reduce the current using a different VREF value or adjust the sense resistor than trying to continuously enable/disable the drive.  Equation 1 in the section I mentioned above can be used to calculate your current and adjust accordingly.