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.

DRV8847: biploar stepper motor driver's problem for CW and CCW mode

Part Number: DRV8847


I'm using a DRV8847 as a bipolar stepper motor driver.I want to let the motor work in both CCW dir and CW dir.For the CCW dir,I followed the motor's datasheet(pic below),and the sequence is A-B-C-D-A...,for the CW mode,the sequence is D-C-B-A-D...
I used a key on the board to change the direction. It seems fine when the loop times is long(for example,the A-B-C-D loops 512 times for 360deg),but when the direction changed(for example 16 times A-B-C-D followed by 16 times D-C-B-A),the direction always not changed.
My test program is as below

//CCW dir
for (i = 0;i < loop_times;i++)
{
SEQUENCE A;
delay;
SEQUENCE B;
delay;
SEQUENCE C;
delay;
SEQUENCE D;
delay;
}

//CW dir
for (i = 0;i < loop_times;i++)
{
SEQUENCE D;
delay;
SEQUENCE C;
delay;
SEQUENCE B;
delay;
SEQUENCE A;
delay;
}

Is there something wrong with the driver?
Is there something need to do when I changed the direction?
or is there any suggestion about this issue?
Thanks for your reply.

  • Hello,

    The loop time difference indicates the motor speed difference. If the winding current is low and cannot provide enough torque to make the motor run into new position before next STEP signal input, the motor could miss a step or run with a wrong direction.

  • Thanks for your reply. I tried to change the delay time between each sequence and loop times, things get better. But sometimes, wrong direction problem exist. You mentioned winding current, is this mean there is something  wrong with by design or device selection? Is there any suggestion?

  • Hello,

    F=ma; Torque=Iα; in the equation, a or α is acceleration or angular acceleration.

    If the speed is changed very quick, a or α is high. It needs high Force or Torque. We have to make sure the winding current is higher enough to provide enough force or torque to support such high a or α.