DRV8824-Q1: DRV8824 oscillating over a wide range of operating conditions

Part Number: DRV8824-Q1
Other Parts Discussed in Thread: DRV8824, DRV8461, DRV8434, DRV8436, DRV8452, DRV8424

Tool/software:

  1. I am debugging a DRV8824 circuit and am encountering oscillations ... I'd like to figure out where they are coming from.
  2. The circuit is implemented as per the DRV8824 datasheet, as is the layout. I've double-checked all components part numbers and they are correct. The board is 6 layers, with all of the layout as per the datasheet on L6, with just the four drive lines (AOUT1|2 and BOUT1|2) on L1 through vias from L6.
  3. The motor is a Lin Engineering WD-416-07-05 (0.6A/phase, 5.4Ohms/phase, running at 24V). I have also tried another motor from a radically different supplier, with very similar specs, and the results are the same.
  4. What I observe is this:
    1. The outputs AOUT1|2 BOUT1|2 oscillate when I enable the DRV8824 (i.e., the half-bridges are ON and see the motor) without commanding the DRV8824 to step. It also happens when stepping.
    2. If I use two 47Ohm power resistors in place of the stepper motor's two windings, I avoid the oscillations if I keep the power rail below 21V.
    3. If I connect either stepper motor, I get oscillations at all voltages I tested (12V up to 28V), once the DRV8824 is enabled, with or without commanding it to step.
    4. My programmed current setting is (30k/(10k+30k))*3.3V/(5*0.82Ohms) = 600mA, AVREF and BVREF are verified to be 2.5V.
    5. When stepping in the non-oscillating condition with VMA = VMB = 14.4V, V_ISENA and V_ISENB are at around 0.24V, well below the DRV8824's xISENSE trip voltage of ~0.660mV. Once oscillating, the (DC) voltage on ISENSA|B drops to almost zero.
    6. VCP is very happy (e.g., 26V for a power rail of 14V).
    7. The (current) oscillations make their way all the way back to the external power supply; i.e. I see the current from the external PSU varying at the same frequency as the DRV8824's outputs, at twice the magnitude of an individual DRV8824 output.
  5. Various things I tried, to no avail:
    1. Increased the bulk capacitance to 220uF (from 20uF) -- no change.
    2. Used three different power supplies (one linear and two switching) to power VMA & VMB from 14.4V to 28V -- no change.
    3. Minimized inductance from the power supplies by twisting the power leads to the DRV8824 circuit -- no change.
    4. Varied the length of wire between the DRV8824 and the resistors or motor -- no change.

To repeat, I am seeing oscillations in a circuit that I believe has been implemented properly, with reasonably chosen components, even when I'm not stepping; i.e. the 'DC load' on the DRV8824 is driving it to oscillate.

I'm attaching the schematic and a bunch of screen captures with descriptions in the screen capture. Note that there are voltage and frequency measurements on the right side of the 'scope captures.

I'll also note that if the stepping is really slow (say, < 100steps/sec), the motor is able to step, since the oscillations only occur when the half-bridge is fully enabled; the phase windings are switching directions, and there is enough current to energize the windings in a static sense and perform a step. But faster stepping at higher rates is impossible.

I'd appreciate help in resolving this -- am happy to create additional test scenarios, capture additional probe points, etc.

Thank you,

Schematic:

DRV8824 NOT oscillating when driving 47Ohm resistors in place of stepper motor, and power rail = 14.4V, stepping at a very slow speed:

Now with stepper motor attached, power rail = 14.4V, no stepping, DRV8824 outputs are oscillating:

Closeup of oscillation:

Stepping at slow speed, power rail = 14.4V, with stepper motor connected:

Another view of slow-stepping with oscillations, zoomed in on the oscillation:

  • Hi Andrew,

    Thanks for your post.

    What I observe is this:
    1. The outputs AOUT1|2 BOUT1|2 oscillate when I enable the DRV8824 (i.e., the half-bridges are ON and see the motor) without commanding the DRV8824 to step. It also happens when stepping.

    This is normal expected behavior. You are referring to output voltages at AOUT1,2 and BOUT1,2. The DRV8824 is a constant current chopper regulated stepper driver. The stepper current is regulated by turning on tON and turning off tOFF the output voltages based on the motor current setting with the VREF, supply voltage and the motor L & R time constant. At power on or wake up from sleep the output currents for coil A and coil B are stabilized at 71 % of the full-scale current setting. See below. A fixed PWM frequency of 50 kHz is used for voltage / current chopping, the duty cycle is determined by close loop control. This will happen as soon as the driver is enabled without STEP pulses (holding current) and with STEP pulses (step or microstep currents per step). All constant current chopper stabilized stepper drivers (almost all of them today) will exhibit this behavior. You should capture the current waveform using a current sensor for each winding which is of relevance for stepper motors.

    If I use two 47Ohm power resistors in place of the stepper motor's two windings, I avoid the oscillations if I keep the power rail below 21V.

    The current regulation chopper expects L and R of stepper to be in a certain range for proper tON component in the PWM. With a resistive load L is absent and it impairs the current regulation. Stepper drivers are not meant to be tested with resistive loads.

    To repeat, I am seeing oscillations in a circuit that I believe has been implemented properly, with reasonably chosen components, even when I'm not stepping; i.e. the 'DC load' on the DRV8824 is driving it to oscillate.

    This is normal behavior as mentioned earlier. What matters are the current through the two coils. The currents would be a fixed value when STEP pulses are not input (STEP = 0) and current levels would match the step / microstep mode used when STEP pulses are present. 

    All of the scope captures you shared are normal and match expected waveforms. The below waveform from the datasheet page-20 was captured with 1/8 step mode. In summary output voltage PWM is expected behavior. It is smoothed to desired current by the L & R time constant of the motor. Stepper drivers are not meant to driver pure resistive loads even for testing purposes. 

    Based on the speed vs. torque plot of the motor referenced it should be running fine at much higher than 100 PPS (pulse per second or steps/s). See below from the vendor. There may be other reasons such as load inertia in your setup that may have prevented the motor from spinning at higher PPS. To debug such issues we need to get the coil A and coil B current waveforms. 

    Lastly, the DRV8824 is an year 2009 released product. Since then we have several new stepper devices with new generation technology. The DRV8824 will definitely work for your application. But for smoother performance we recommend considering our newer stepper drivers such as the DRV8424, DRV8434, DRV8436, DRV8452, DRV8461 depending on voltage, current and features of the drivers. Thank you. 

    Regards, Murugavel 

     

  • Hello Murugavel, and thank you for the response.

    Re "You should capture the current waveform using a current sensor for each winding which is of relevance for stepper motors." All of the current waveforms in the 'scope captures are for the individual windings -- there's a current probe on each winding in the 'scope captures.

    Understood re resistive vs actual / inductive loads. But I see no real smoothing when a motor is attached to the DRV8824 -- quite different from e.g. when a VFD drives an AC (induction) motor. Hence my confusion.

    I should have mentioned I'm only single-stepping.Can you elaborate on your statement "The currents would be a fixed value when STEP pulses are not input (STEP = 0) and current levels would match the step / microstep mode used when STEP pulses are present." I'm only single-stepping, what should this "fixed value" be? 0.71*programmed current? And a DC value when STEP = 0? Or a chopped value when STEP=0? I see chopped currents for STEP = 0 and STEP = 1.

  • Hello Andrew,

    Thanks for the follow up.

    All of the current waveforms in the 'scope captures are for the individual windings -- there's a current probe on each winding in the 'scope captures

    Yes. Thanks for the clarification.

    Stepping at slow speed, power rail = 14.4V, with stepper motor connected:

    Another view of slow-stepping with oscillations, zoomed in on the oscillation:

    These are current waveforms in full-step mode. Looks normal. 

    Now with stepper motor attached, power rail = 14.4V, no stepping, DRV8824 outputs are oscillating:

    Closeup of oscillation:

    These are hold currents with no STEP input. They're normal as well.

    Understood re resistive vs actual / inductive loads. But I see no real smoothing when a motor is attached to the DRV8824 -- quite different from e.g. when a VFD drives an AC (induction) motor. Hence my confusion.

    I understand. I think this could be due to L/R time constant differences between these two types of motors.

    I should have mentioned I'm only single-stepping.Can you elaborate on your statement "The currents would be a fixed value when STEP pulses are not input (STEP = 0) and current levels would match the step / microstep mode used when STEP pulses are present." I'm only single-stepping, what should this "fixed value" be? 0.71*programmed current? And a DC value when STEP = 0? Or a chopped value when STEP=0? I see chopped currents for STEP = 0 and STEP = 1.

    This is good to know. When the device is powered up or woken up from sleep the first DC level of the current would be 71% of the set current in both A and B coils as per the Table 2, I shared in the last message. For every step 0->1->0 pulse the indexer will advance up or down the table depending on the DIR and the DC level would be the next corresponding level from the table for the step mode used. The chopped values would be present whether STEP is 0 or 1.  The falling edge of the STEP input would advance the indexer table. So normal state of STEP input should be 0 and one step pulse would be 0->1->0. For a STEP input 0->1 there won't be a change. For a STEP input 1->0 the indexer would advance by one step depending on the DIR logic level - motor clockwise or counter clockwise.  

    Regards, Murugavel 

  • Hello Murugavel.

    Thank you for your continued fast responses and support. I did already understand the stepper modes, I was more wondering whether there was every a "DC mode" of the currents through the H-bridge, but as you have pointed out, it's always chopped. That makes sense.

    Not only are things working, but now I understand how and why :-) Much obliged!