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.

DRV8889-Q1: OUTPUT Current

Part Number: DRV8889-Q1

Tool/software:

Hello TI Team


Set PPS: 200
Microstep: 32
Current: 200mA
1. Testing the output terminal AOUUT+ and observing the output current, I found that the waveform shows individual bars at each step (as shown in the red box). What causes this phenomenon? How can I explain this phenomenon?
2. While the motor is running, I intentionally stalled it. Observing the output voltage and current, there are no abnormalities. How can I explain this?
3. How can I detect when the motor stalls due to resistance during operation? Besides the stall detection method, are there any other parameters that can be used as indicators?

  • Hi Hung,

    Thanks for your question.

    1. Testing the output terminal AOUUT+ and observing the output current, I found that the waveform shows individual bars at each step (as shown in the red box). What causes this phenomenon? How can I explain this phenomenon?

    This is normal expected waveform. For each step / microstep the current level is regulated using tON and tOFF chopping. This causes the small ripple at the chopping frequency at the microstep current level. If you zoom in further you'll observe multiple tON and tOFF chopping cycles within a microstep. 

      

    2. While the motor is running, I intentionally stalled it. Observing the output voltage and current, there are no abnormalities. How can I explain this?

    This is how a stepper motor behaves. The current will always be the same regardless of the load unlike a brushed DC motor where the stall current will significantly increase. At higher speeds the current waveform will actually improve when the motor is stalled because there will be no back EMF. 

    3. How can I detect when the motor stalls due to resistance during operation? Besides the stall detection method, are there any other parameters that can be used as indicators?

    In a stepper when it is stalled its back EMF will become 0. However because the coils are driven continuously it is not easy to measure the BEMF of a stepper motor. This is why stall detection uses special algorithm to observe the impact of BEMF indirectly. See this application note, https://www.ti.com/lit/an/slvaei3/slvaei3.pdf. Thank you.

    Regards, Murugavel  

  • Hi Team

    1. How do I calculate the DAC output voltage of 500mV from the following data? Is it calculated from measurement or from the TRQ_COUNT value of 38? 38*12.89mv = 489mV?
    2. Is the TRQ_COUNT value obtained by reading the average TRQ_COUNT value of the entire device? Or can it be calculated through signal measurement? How can I obtain the TRQ_COUNT value?
    3. Currently, the average TRQ_COUNT value of our entire device is around 15-20, which is a relatively small range for detecting stalls. Is there any way to increase the average TRQ_COUNT value?
    Currently, VREF is set to 0.72V, and the actual operating current is 200mA.

  • Hi team

              

  • Hi Hung,

    1. How do I calculate the DAC output voltage of 500mV from the following data? Is it calculated from measurement or from the TRQ_COUNT value of 38? 38*12.89mv = 489mV?

    I assume this question is for the DAC output in the DRV8889-Q1EVM, correct? The DAC outputs 3.3 V when the torque count is 255, this is the full-scale. So torque count will be (VDAC/3.3) * 255. So for VDAC = 500 mV, torque count will be (0.5/3.3) * 255 around 39.  

    2. Is the TRQ_COUNT value obtained by reading the average TRQ_COUNT value of the entire device? Or can it be calculated through signal measurement? How can I obtain the TRQ_COUNT value?

    Torque count is the value of the CTRL7 register. It is updated internally every electrical half-cycle zero crossing of the current sine wave of the B coil. 

    3. Currently, the average TRQ_COUNT value of our entire device is around 15-20, which is a relatively small range for detecting stalls. Is there any way to increase the average TRQ_COUNT value?
    Currently, VREF is set to 0.72V, and the actual operating current is 200mA.

    If the DCR resistance of the stepper motor is higher than 10 Ω the torque count may be lower especially if the motor is running with a slower speed. The torque count may increase if the motor current is reduced a little bit or its speed increased a bit. You can also try using 1/8 step mode if you were using 1/16 or 1/32 step modes. Else, you may have to use a lower DCR stepper motor. For further questions please share the stepper motor datasheet, STEP rate PPS or Hz, microstep setting, VM supply voltage. Thank you.

    Regards, Murugavel 

  • Hello TI Team

    Our motor specifications are as follows:
    Resistance: 20±7%Ω
    Min. starting pulse rate: 700Hz
    Min. response pulse rate: 1000Hz
    Pull-out torque: 49mN·m
    Inductance: 6mH
    Voltage: 12V
    Exciting method: 2-2Phase
    Exciting mode: Bipolar

    1. I'm currently experimenting with increasing IFS, and the results show that TRQ_COUNT increases with increasing current. I'm keeping all other conditions constant, and I'm trying to change this variable. Is this reasonable? Why does TRQ_COUNT increase with current? Could you explain the theory behind this?
    2. I'm currently experimenting with increasing PPS, and the results show that TRQ_COUNT increases with increasing PPS. I'm keeping all other conditions constant, and I'm trying to change this variable. Is this reasonable? Why does TRQ_COUNT increase with PPS? Could you explain the theory behind this?
    3. I'm currently experimenting with increasing the number of microsteps. Testing has shown that TRQ_COUNT decreases as PPS increases, even reaching 0 at 256 microsteps. All other conditions remain unchanged. I understand this may be due to excessively fine cutting and high resistance, leading to stall detection. Could you explain the underlying mechanism?
    4. We're currently experiencing an issue with WHUD development. During user use, the motor may experience a loss of sync, causing the eye to shift. We suspect this may be due to increased resistance for some unknown reason. Therefore, we'd like to monitor TRQ_COUNT to determine if there's resistance, and reset it to zero if there is. Is this a suitable approach? Do you have any suggestions for resolving this loss of sync issue?

  • Hi Hung,

    Thanks for the motor specifications and additional information. The motor has higher DCR > 10 Ω. Good news is, it is not to the extent it is completely out of range for stall detection. Please refer back to the application not I shared in one of my previous posts. The stall detection torque count indirectly looks at the BEMF of the motor. The BEMF of the motor impacts the tOFF time of the current regulation in the smart tune ripple control STRC decay mode. In order to get good torque counts every microstep must have several tOFF cycles for the internal calculation. Keeping this in mind let's look at the questions you had.

    1. I'm currently experimenting with increasing IFS, and the results show that TRQ_COUNT increases with increasing current. I'm keeping all other conditions constant, and I'm trying to change this variable. Is this reasonable? Why does TRQ_COUNT increase with current? Could you explain the theory behind this?

    As described in the application note torque count reflects the load torque. Load torque affects the phase difference between the current sine wave and the BEMF sine wave. At minimum load torque the phase difference will be close to 90 °. If the torque count increases with increasing current shows that the flux was not maximum at the previous value and there was still room for increased motor torque. After this point is reached increasing current may not have an effect or it may even reduce the torque count if it was too high to affect tON and tOFF times. You can identify a sweet spot for your motor and the setup mechanism and optimize the torque count for unloaded condition.

    2. I'm currently experimenting with increasing PPS, and the results show that TRQ_COUNT increases with increasing PPS. I'm keeping all other conditions constant, and I'm trying to change this variable. Is this reasonable? Why does TRQ_COUNT increase with PPS? Could you explain the theory behind this?

    As the PPS is increased the motor runs faster generating higher amplitude BEMF. Better SNR of the BEMF helps with torque count calculation. As the PPS is further increased the time per microsteps will reduce and the number of tOFF cycles available per microstep may reduce drastically and the torque count will start going down. You can identify the optimum speed for you motor for best unloaded torque counts. This may be affected by VM voltage as well. 

    3. I'm currently experimenting with increasing the number of microsteps. Testing has shown that TRQ_COUNT decreases as PPS increases, even reaching 0 at 256 microsteps. All other conditions remain unchanged. I understand this may be due to excessively fine cutting and high resistance, leading to stall detection. Could you explain the underlying mechanism?

    Correct. Finer microsteps means reduced number tOFF cycles per microstep causing insufficient calculation data. Around 128 and higher the count may become 0.

    4. We're currently experiencing an issue with WHUD development. During user use, the motor may experience a loss of sync, causing the eye to shift. We suspect this may be due to increased resistance for some unknown reason. Therefore, we'd like to monitor TRQ_COUNT to determine if there's resistance, and reset it to zero if there is. Is this a suitable approach? Do you have any suggestions for resolving this loss of sync issue?

    Are you describing the loss of position while the motor is in standstill? This might mean the hold torque was insufficient. While the motor is held in position the coils need some current to have enough braking force to avoid motor shaft slipping.

    If this happened while the motor was running this may be detected by stall detection because there would be a decrease in torque count at this time. If this happens reseting to zero position would regain known position, yes. Thank you.

    Regards, Murugavel 

  • HI Team

                1.Regarding the back EMF measured in the figure below, how do we know that Q2 and Q1 are in balance? And how do we know that Q2's back EMF                 is  greater than Q1's?

                2.Is the back-EMF test method a standard test method?

  • Hi Hung,

    The BEMF will be a sinewave represented as a blue trace in the below image snippet. In a stepper motor the BEMF has a distinct relationship in phase difference with the corresponding coil current waveform. This phase difference is also known as load angle. The load angle indirectly represents the load torque on the motor. This is a property of stepper motors. The DRV8889-Q1 stall detection uses this property to detect a motor stall. 

    Please refer to section 4.1 Algorithm Details of the application note. We use the TOFF measurements during these quadrants to get a measure of the load angle, hence torque count. Thank you.

    Regards, Murugavel 

  • HI Team

    Thank you for your patience in responding.
    1. I've adjusted the input voltage to 9V and 16V, or increased the input current, and have noticed that when measuring the voltage relative to ground on the AOUT A channel, these changes affect the turn-on time (as shown in the red box below). Could you explain this principle?

  • Hi Hung,

    Sure! 

    This is due to the current through the coil L and R series circuit and its time constant and the supply voltage. With supply voltage for the driver as VM the steady state DC current through the coil with resistance R would be (VM/R) and when the coil is switched on the current in the coil will rise (tON) based on this steady state current, the L/R time constant Τ and Itrip current level set by the VREF voltage. 

    Using the formula from electrical circuit theory for current through an inductor with time constant L/R, which can be found in the internet or electrical circuits text books the time tON can be calculated. I'm copying it here (see below formula) for your convenience. Substitute V by VM, R resistance of stepper, I the Itrip current setting, t is tON and Τ is the time constant of the motor coil (L/R). Using this formula, you can see when VM is increased tON will decrease and vice versa. 

    Formula:
    The current (I) as a function of time (t) during charging is given by: I = (V/R)(1 - e^(-t/τ)). 
     
    Regards, Murugavel 
  • Hi TI Team

                 1.How do we measure and verify the following curve?

                 2.The open load detection is performed as soon as the machine is powered on and before the step is sent out. When the step is executed, the open                    load detection is not performed. Is this correct?

  • Hi Hung,

    1.How do we measure and verify the following curve?

    I assume your question is about stall detection and you want to understand how BEMF is measured to detect stall, correct? We use smart tune ripple control decay mode which provides variable tOFF which has a relationship with BEMF voltage. This is described in this application note, https://www.ti.com/lit/an/slvaei3/slvaei3.pdf.

    2.The open load detection is performed as soon as the machine is powered on and before the step is sent out. When the step is executed, the open                    load detection is not performed. Is this correct?

    The open load OL detection is performed both when the outputs are enabled as well as during step pulses applied with the motor running. This is why the motor must not stopped with step pulse = 0 while one of the windings is 0. See below. Thank you.

    Regards, Murugavel