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.

DRV8818 problem after reset or after sleep.

Other Parts Discussed in Thread: DRV8818, DRV8818EVM

I have a problem with my DRV8818 after a reset and when I wake it up after sleep.

The first step dos not work. If I step it a number of times I have no problems in the following steps. The motor runs fine. But if I only make 1 step after a reset or after a wake up, the motor only makes a little noise and does not move. I have 500 microsecond between reset and the first step and I have 2 millisecond between wake up and the first step.

Anyone here that has any experience in this? 

  • Hi Poul,

    This problem does not appear to be reported before. Doing a search of the forum does not show anything either.

    Are you using your own board or the DRV8818EVM? If your own board, can you capture the first and next few step commands and the xOUT1 and xOUT2 voltages?

    The scope captures may help determine the cause.  Thank you.

  • I am using my own board.

    I have two set of scope captures.

    One where I put the driver to sleep between each step. You see the sleep command on the purple line.

    And the next one where I have no sleep command. (The motor seems to run fine)

    The other signals are Yellow; step command (micro step) and Green; Bout1 

    Does this make any sens to You?

  • Hi Poul,

    Sorry for the delay getting back to you.

    Can you confirm the problem is only when putting the device in sleep or reset after each single step sequence (as shown in the first scope capture)? Does the problem also appear if you issue 8 steps pulses between sleep?

    If you are resetting or entering sleep after a single step command, this makes sense. Both sleep and reset set the indexer back to the HOME state. When using 1/8 microstepping as it appears you are, a single step will move the motor 1/8 of a full step (typically 1/8 of 1.8 degrees). Once reset or sleep is cycled, the motor will likely move back to the original full step position.

     

  • I am micro-stepping. And I am issuing 8 step pulses between each sleep. (One full step) I need to make the stepper motor step one step forward and let it sit there for some millisec. before I step one more time. 

    I have tried to give 9 step pulses between each sleep. Did not help.

    I have tried to give 16 step pulses between each sleep. Did not help. 

    If I remove the sleep, the motor run fine. 

    Is my timing wrong? I have 2 millisec. between end of sleep and the first step puls. 

    By the way, I have tried to run in full step. One step puls for one step. Same problem. 

  • Hi Poul,

    Will look into this further.  It may be next week before the next response.

    Have you tried using nENBL instead of nSLEEP or nRESET? nENBL is intended to keep the state of the indexer logic while the outputs are disabled.

  • Hi Poul,

    I was able to confirm your findings, although the time between exiting sleep/reset and the first step command is much longer. I also tried 16 steps between sleep and saw the same thing. At 24 steps between sleep, the motor advanced.

    I also checked using nENBL; this works as expected using 8 microsteps then cycling nENBL.

    So here is my theory. Advancing one step, then entering sleep or resetting the device is effectively the same as moving one step in one direction then one step in the other direction.

    The current changes from 71, 71 to -71, 71, then returns to 71,71 after reset or sleep.  On the motor in our lab, one step does not move far enough to remain when the coils are de-energized and re-energized using sleep/reset. When re-energized, the motor snaps back to the original position, and the cycle repeats.

    Using nENBL works because the indexer logic (current values) are kept. When re-enabled the current begins exactly where it left off.

    Another method that has been used is to lower VREF during times where the motor is not advancing. This provides some torque to prevent the motor from moving while holding.

     

  • Hi Rick.

    I need the sleep mode. I use the motor controller in a system where I pick up some very small signals in a very narrow time band. And the charge pump in the the controller makes a lot of noise disturbing the signals I have to pick up. When putting the controller in sleep mode, I am able to pick up the signals without any interference.

    I have no problem moving the motor and making it stop when I desire, as long as I don't use sleep mode.

    Have You tested that the motor moves one step when 24 pulses is used?

    If I set up the controller to full step (One puls = one step) will I then see the motor move one step if I give 4 pulses after each sleep?

    Do You have an alternative step motor driver I can use, having in mind that I need to reduce noise (By sleep mode)?

    Any thing You can recommend?

    Poul 

  • Hi Rick.

    I am in big problems here. 

    I have a design based on DRV8818 and the fact that the data sheet states I can wake it up from sleep in 1 milisec. I have a customer who need to have this in September. Delay is not an option. 

    I do not have the time barely the money for a new design with a new driver.

    Who in the TI organisation should I contact to get help in this matter? 

  • Hi Poul,

    The controller is waking up properly.  Each time the device wakes up, the sequence of current is the same as the prior one.

    On the motor here, this causes the motor to oscillate. The motor moves one step forward when command and once step backwards when nSLEEP is asserted and de-asserted. The net result is that the motor never advances.

    When using 24 step pulses between sleep commands, it is difficult to determine if the motor moved only one step. The motor I have moved forward; yours may or may not.

    It appears as noise it the primary issue. There are a few options available that may help reduce the noise. This options assume that the number of full steps per rotation is divisible by 4.

    If you must use sleep:

    1) Sleep may work, if you can accept 4 full steps between sleep command. This should cause the motor to align at the same point that it was when sleep was issued. For the motor here, this would be every 7.2 degrees.

    2) If option 1 works but need finer movement,  a geared stepper could be used. For example, using 4 pulses with a 3.6:1 gearing on a 1.8 degree/step motor moves the stepper motor 7.2 degrees, but the shaft only 2 degrees. If using full steps, the indexer begins at the same point each time so the motor should not oscillate. There are other gear ratios available. A quick search found 3.6, 7.2, 9, 10, 18, and 36 to 1.

    If you can use nENBL:

    1) Use nENBL to disable the outputs when you are making your measurement. When the outputs are disabled, the charge pump should not operate as much (you should be able to see this on the scope).

    2) To further decrease charge pump operation, try increasing the VCP capacitor. You can try a .47uF capacitor. This will cause the ramp up time of the charge pump to be longer. Each time you use nSLEEP, you should wait twice as long before enabling the outputs.

  • Hi Rick.

    If the controller wakes up properly, why can't I get the motor moving 1 milisec after wake up?

    The controller dosn't wake up properly. 

    I have tried 4 full steps and 8 full steps between nSLEEP. I have tried to reduce and tried to increase the charge pump capacitor. Nothing works for me. I nearly got there by reducing the charge pump capacitor to 1nF and using 8 full steps with 20 milisec between each step. This made the motor move, but in a very jumpy way. And I do not have like 150 - 200 milisec to put between steps. I have 7!!! It will simply not work in my application. 

    The only thing that works is to avoid using nSLEEP comand. Then I get the motor running at the speed and with the step size I want. But then I get the electrical noise. 

    I do not have the space for a gearbox on the motor. All mechanical parts are ready for the project. 

    Poul

  • Hi Poul,

    Would you please send the motor specifications? Using 4 and 8 full steps between nSLEEP may be too fast for the motor to accelerate. Some motor manufacturers have specs such as Self start range or start/stop region, which designates the area that the motor can start/stop or change directions without using an acceleration profile.

    With the information provided, the controller appears to wake up properly. After 1ms, the output BOUT1 is being driven. Please capture the other outputs to make certain they are also being driven. If you have a current probe, please capture the currents.

    I have highlighted the time from the nSLEEP rising to the output driving below.