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.

DRV8828 microstepping: motor stops in every phase change

Other Parts Discussed in Thread: DRV8828, DRV8834, DRV8824, DRV8825, DRV8813, DRV8812, DRV8829

Hi there,

We are using two DRV8828 drivers to control a 2 phase stepper motor connected to a ball screw in order to achieve some sort of linear motion.

In the final application, the movement of the motor needs to be as smooth as possible, so we decided to implement a VRef microstepping control with 4096 microsteps. The speed of the motor is quite slow. It varies from 0.1 rpm to 600 rpm.

We have used a external DAC in order to achieve the VRef control and all the input lines of the DRV8828 are controlled by the GPIO of a F28069 microcontroller.

In the default configuration, we are using the Mixed Decay mode and the internal microstepping (I0 to I4 lines) set to 100%.

Well, following this brief description of the system, I describe the issue we are having:

The microstepping control seems to work pretty well. The movement between steeps is very smooth and the rotation speed is quite constant. However, we have noticed that every time that one of the phases changes, the motor stops for a little bit and then continues with a smooth movement. This is dramatic for us, particularly running at very low speeds, because we need the linear motion speed as constant as we can.

In the first place, we though that the mechanics of the systems may be causing the problem. so we decided to test it just with the stepper motor itself. the result was the same. The movement of the motor is great until one of the phases changes.

We have checked the VRef and Rsense voltages and everything seems to be fine:

This is the  picture of both Vref signals:

As you can see the half-sine waveforms are quite nice and not noisy.

These are the signal at Rsense:

They also look fine...

And here is a little video of the behaviour of the motor (my apologies, it is the best I can do at the minute)

http://youtu.be/7LrxjJYb_vs

We tried fast and slow decay modes but still the same...

Is there any way to solve this issue or it is inherent to the driver/motor? 

Thank you very much for your help

  • Javier,

     I think it would be challenging task to get smoother rotation during phase changes. For my analysis, I am assuming that you have synchronized PHASE input to DRV8828 with zero crossings of VREF signal. The phenomenon you observed could happen if PHASE input is little delayed from these zero crossings.  You may try to advance a bit the PHASE input to pull the motor faster at zero crossings. This would not be easy and straight forward because if phase advance angle is high, motor would start getting jerks or starting running faster at zero crossings. You will need to balance out the advance angle of PHASE input to get smoother operation.

     The another challenge would be that single value of phase advance angle may not work thought the speed range and needs to be fine tuned for certain speed ranges.

     I would be candid here to admit that above reasoning is solely based on my theoretical understanding of stepper motor operation and it is not verified by experiment. Please let me know if above analysis helped you to get solution to this issue.

     Best Regards

    Milan

  • Hi Javier,

    I think the reason should because of the linearity of Vref to current is distorted when one phase current goes to zero and the other phase reach MAX but also have a zero rate of current change. I'm working on an application note on this issue. Now the simplest way is to try like following:

    step 1. Add a fixed offset voltage to your DAC table. the value of the offset voltage should be within the range of 20mV ~ 150mV.

    step 2. To my experience, you can try 60mV first. that means if your DAC has 12bit/4096 resolution, and you VREF MAX is 2.5V. You can add 100 (60/2500*4096 = 98.3) to your code where every time you send your DAC value from look up the sine table. By this means, the MAX current will be a little higher, but the zero current issue could be eliminate mostly.

    step 3. if 60mV is not proper, you can try lower or higher in the 20~150mV range. Just note that: if the offset is not enough, the pause running will still be there. if the offset is over added, the motor will have a little jump at that previous pause point. There will be a number give you the best effect.

    Please let us know you result if you try this. This method had already successfully applied on other applications.

    Thanks.

    Wilson

    Motor Application Team 

  • Wilson,

    Thanks for providing your inputs.

    Javier,

    I would suggest to follow the Wilson's apporach becuase it has been experimentally verified.

    Best Regards

    Milan

  • Hi everyone,

    First of all, thank you very much for your kind answers. it is most appreciated.

    I followed Wilson's suggestions and it seems to improve a lot. It still stops a little bit when the phase changes, but it is starting to be within our tolerances.

    The only thing I am concern about is that, presuming that the offset value depends on tolerances in electronics components, in mechanics  motor  etc.  that we might need to do a calibration for each device in order to find the optimal offset value...but I guess this is something it could be done.

    Thank you very much again for taking the time to response.

    Regards,

    Javier

  • Hi Javier

    Glad to know this result.
    Fully understand your concern. Good news is that both analysis and experience shown that no calibration needed for every parts if the schematic is unchanged. Or to say, if the Rsense, decay mode, current level setting are not change, the offset value will be fixed from part to part.
    The reason is because what we compensate is the Tblinking time effect during current regulation. This effect keeps with little variation from part to part.
    Also, you can find the compensation is not so sensitive, if 60mV ok, 50 to 70mV should accaptable too.

    There are customers going into MP with this method.

    And all the parts with VREFA and VREFB to achieve highdegree micro stepping can be improved by this method. Such as DRV8812, DRV8813, DRV8828, DRV8829, DRV8834, DRV8824, DRV8825

    Also this problem will not show in applications less then 1/64 micro stepping.

    Thanks.
    Wilson
    Motor Application Team