DRV8434AEVM: DRV8434A: TRQ_CNT 0V when stall in Torque count mode

Part Number: DRV8434AEVM
Other Parts Discussed in Thread: DRV8434A, DRV8434S, DRV8711

Tool/software:

I'm using DRV8434AEVM to protype a setup togerhter with a STM32 eval board and a small stepper motor for a V8 idle air control. Stepping at 330Hz. No Learning mode completed yet.
After initial STM board setup I set nSLEEP and ENABLE=1, and MODE=0. This results in STL_REP=0, nFAULT=1. TRQ_CNT=2,5V. If I then start to step motor away from end position, TRQ_CNT drops to 0V after 8 steps. When I later hit the end position STL_REP=1, nFAULT=0, but TRQ_CNT is unchanged at 0V.

Is this normal?

Becuase then I change direction, switch to Learning mode, and go back to end position. Same thing again. When end position is hit STL_REP=1, nFAULT=0, and TRQ_CNT is unchanged at 0V. But STL_REP will not change bacl to 0 if I continue to step towards end position. So it seems like learning failed.

But DRV8434A obviously seems to detect that end position is found since STL_REP changes immediately when end pos is hit, But it seems like the Torque Count value is so low that it won't show.

Any suggestion on how to get learning to work?

  • Suddenly behaviour changed. With MODE=0 (Torque count mode) and running motor until it stalled, STL_REP remained at 0, nFAULT at 1 and TRQ_CNT=0V. 
    I then changed stepper speed to 1kHz which caused TRQ_CNT=2.5V when stalled.

    And now when I set MODE=HighZ (learning mode) and run motor towards end pos so that it stalls STL_REP remain at 0, nFAULT at 1 but TRQ_CNT increase to 2.5V.

    So again it seems like learning mode doesn't work at all

  •  Hi Mats,

    Thanks for reaching out to us via this forum.

    Did you review the detailed description of stall detection in the datasheet in section 6.3.9.4 Stall Detection pages 22-26 including the flow diagram? These e2e posts one, two may also be helpful to you.

    I'm using DRV8434AEVM to protype a setup togerhter with a STM32 eval board and a small stepper motor for a V8 idle air control. Stepping at 330Hz. No Learning mode completed yet.

    Small stepper motors tend to have very high coil DCR (DC resistance) and high L and tend to have low BEMF which may not support reliable stall learning or detection. Please share the stepper datasheet. What was the microstep mode used at 330 Hz. I assume VM = 12 V. What is the IFS current setting / VREF voltage and TRQ_DAC setting? If possible please share the coil current waveform.

    After initial STM board setup I set nSLEEP and ENABLE=1, and MODE=0. This results in STL_REP=0, nFAULT=1. TRQ_CNT=2,5V. If I then start to step motor away from end position, TRQ_CNT drops to 0V after 8 steps. When I later hit the end position STL_REP=1, nFAULT=0, but TRQ_CNT is unchanged at 0V.

    Is this normal?

    Seems like a very low TRQ_CNT (0 V) likely due to high DCR stepper motor. However at the end position the device appears to have detected it. This may not work consistently if the DCR is too high, > 10 Ω stall detection could be inconsistent. 

    So again it seems like learning mode doesn't work at all

    Likely stall may be marginal for this motor. Please share the requested information. We'll review and determine the cause for improper stall detection. Thank you.

    Regards, Murugavel 

  • Hi Murugavel,

    Thanks for your comments. Unfortunaltely I can't get specs for the stepper as it's integrated into a throttle body. But I measured the DCR to 50 ohm, so it's well above 10ohm. Unfortunately I was not able to measure coil current waveform with my current instrument.

    M0/M1 is High-Z so it's set for 128 microsteps. Tried 256 with no noticable different result. VM is 12V.

    I've also tried to set x8 to enable 8x torque count scaling but then motor doesn't step at all.

    Regarding Equation 2 in 8.2.2.2 Current Regulation:  I've put a 10k potentiometer as voltage divider to be able to test various VREF voltages, but can't see how it affects behaviour.

    What is TRQ_DAC ? It's only metioned as setting in 8.2.2.2 but never explained what it represents. It's also descibed as "(%)". But what does that mean? Should it be a value [0 .. 100] or [0 .. 1] ? 

    I think my biggest problem is that I don't know what to expect when a parameter changes in some direction. Like how does TRQ_DAC=10% affect system compared to TRQ_DAC=90%, or how will selection of microstep affect behaviour.

    Test code is now reduced to just run stepper from end to end in Torque Count Mode so that changes to different parameters can me measured.
    After driver is enabled it outputs TRQ_CNT = 2.5V, but it almost immediately drops to zero when stepping starts. I interpret that as that the driver considers stepper to be full loaded/stalled.

    Do you think there is a chance to get driver to work with this 50ohm stepper? Or do I have to go for some other solution (what that could be) ? 

  • Hi Mats,

    But I measured the DCR to 50 ohm, so it's well above 10ohm. Unfortunately I was not able to measure coil current waveform with my current instrument.

    Coil current waveform would reveal whether proper current regulation is happening. Based on 12 V and 50 Ω, the coil current must be set less than V/R or 240 mA or VREF must be set < 317 mV. I'd recommend to have a margin to give room for BEMF at the target velocity of the motor which would reduce the available voltage to the coil VM - VBEMF. So IFS target 180 mA or 240 mV. Ensure the DECAY mode is set to Smart Tune Ripple Control decay mode, STRC.

    M0/M1 is High-Z so it's set for 128 microsteps. Tried 256 with no noticable different result. VM is 12V.

    For such high DCR motors the sweet spot for stall detection is 1/8 or 1/16 step modes. Please try with this setting with above recommended current setting.

    I've also tried to set x8 to enable 8x torque count scaling but then motor doesn't step at all.

    I assume you left the ENABLE pin floating. To ensure it is in HiZ the voltage on this pin must be 2 V +/- 0.2 V. See specifications below. This is implemented in the EVM and works as expected. We expect the motor to step normally when this pin is HiZ for x8 torque count mode.

    What is TRQ_DAC ? It's only metioned as setting in 8.2.2.2 but never explained what it represents. It's also descibed as "(%)". But what does that mean? Should it be a value [0 .. 100] or [0 .. 1] ? 

    My mistake, please ignore. This is in the DRV8434S not for the A. It is only a VREF scaler for calculating coil current. 

    After driver is enabled it outputs TRQ_CNT = 2.5V, but it almost immediately drops to zero when stepping starts. I interpret that as that the driver considers stepper to be full loaded/stalled.

    This tells me the decay mode was correctly set to STRC. Its just that the tOFF in current regulation cycles is not present or has poor SNR due to high DCR of the motor. The driver is not able to calculate the torque count and reports zero. Perhaps you may get better results with the step mode and VREF setting I recommended above.

    See this application note for details on how stall is detected in this device.

    Do you think there is a chance to get driver to work with this 50ohm stepper?

    This would depend on L of the motor, motor BEMF constant, VM voltage, IFS setting, microstep setting and step rate PPS. Please test with the recommended values. If you do not get any torque count with those settings it may not be possible to have stall detection with the DRV8434A.

    What is the L of this motor? What was the step rate PPS used? Running too fast and letting motor to generate overwhelming BEMF will not help with stall detection. If the step rate is too slow insufficient BEMF will not help with stall detection. You can experiment with different speeds and try to identify a sweet spot for reliable stall detection functionality. Thank you.

    Regards, Murugavel 

  • Hi Murugavel,

    Thank you for the extensive reply. I ran into another issue that needs to be resolved before I can test your suggestions above. I use a 10k precision potentiometer to produce VREF. What I used to do was to trim VREF voltage on the potentiometer midpoint before attachning to board. Now I measured VREF with potentiometer attached, and voltage is stuck at 1.08V regardless what I set potentiometer to (unless it's at end positions when VREF goes to 0 or VCC).
    Doc says that VREF is an input with a 500k pulldown to GND, so I don't understand why VREF pin behaves this way. Any idea?  

  • Hi Mats,

    Now I measured VREF with potentiometer attached, and voltage is stuck at 1.08V regardless what I set potentiometer to (unless it's at end positions when VREF goes to 0 or VCC).
    Doc says that VREF is an input with a 500k pulldown to GND, so I don't understand why VREF pin behaves this way. Any idea? 

    You're correct the VREF input is high input resistance. The leakage current specification for this pin is in the datasheet - see below.

    Assuming the potentiometer is not damaged you should be able to measure proper variable voltage on VREF with a 10 kΩ potentiometer. During this measurement did you enable VM supply voltage? If the answer is yes, it is likely the device may have been damaged by handling ESD etc. 

    Regards, Murugavel 

  • Hi Murugavel,

    Found the Vref problem. It was the other CPU on the DRV8434AEVM board that interfered with Vref thru a 0-ohm resistor. Now I can set Vref to 240mV and M0/M1 to 1/16 (M0 = 1.96V)
    But how do I "Ensure the DECAY mode is set to Smart Tune Ripple Control decay mode, STRC.". Isn't it always on? Can't find how to enable/disable it.

    Below a scope trace what happens when nSLEEP is released. What bugs me is that nFAULT immediately is pulled low before any stepping is performed. And it doesn't go high on a nSLEEP reset pulse (31us).  
    Read Table 7-7 "Fault Condition Summary" to get an idea what could cause nFAULT to immediately activate, but can't see what could cause nFAULT to immediately be activated.

    Regards
    Mats

  • Hi Mats,

    Thanks for the update. Glad you resolved the Vref issue.

    But how do I "Ensure the DECAY mode is set to Smart Tune Ripple Control decay mode, STRC.". Isn't it always on? Can't find how to enable/disable it.

    This is the default decay mode. You can set it with the CTRL2 register DECAY [2:0] bits. 

    Below a scope trace what happens when nSLEEP is released. What bugs me is that nFAULT immediately is pulled low before any stepping is performed. And it doesn't go high on a nSLEEP reset pulse (31us).  
    Read Table 7-7 "Fault Condition Summary" to get an idea what could cause nFAULT to immediately activate, but can't see what could cause nFAULT to immediately be activated.

    Is the motor connected to the outputs, both A and B phases? You may want to check for correct coil connections with an ohm meter. It appears to be an open load OL fault  see below from the datasheet.

    Regards, Murugavel 

  • Hi Murugavel,

    You can set it with the CTRL2 register DECAY [2:0] bits.

    This is the DRV8434A chip. I can't see that it has any CTRL2 register that can be accessed form outside. In 7.3.5.1 "Smart Tune Ripple Control" is says "Smart tune Ripple Control operates by setting an IVALLEY level alongside the ITRIP level." But there is no description how this could be done, so I assume chip does this automatically. Or ?

    Measured again on motor connectors on DRV8434AEVM board, and I get 50ohm over both connectors when morot is attached, and some 100Mohm when unattached. 

    I then measured voltage over one coil just after nSLEEP has been deactivated above. Alternating current is 218mA, which should be well above open load current threshold.


    Is this a normal waveform when motor is in a static condition (not stepping)?

  • Hi Mats,

    This is the DRV8434A chip. I can't see that it has any CTRL2 register that can be accessed form outside. In 7.3.5.1 "Smart Tune Ripple Control" is says "Smart tune Ripple Control operates by setting an IVALLEY level alongside the ITRIP level." But there is no description how this could be done, so I assume chip does this automatically. Or ?

    My bad. I mixed up with another device again. The DRV8434A  operates only in STRC mode. Nothing else to be set. 

    Measured again on motor connectors on DRV8434AEVM board, and I get 50ohm over both connectors when morot is attached, and some 100Mohm when unattached. 

    Thanks for the confirmation.

    I then measured voltage over one coil just after nSLEEP has been deactivated above. Alternating current is 218mA, which should be well above open load current threshold.


    Is this a normal waveform when motor is in a static condition (not stepping)?

    Was this current waveform or voltage waveform when motor is in static conditions (hold current)? What was the microstep setting used? Voltage waveform will always be a rectangular waveform with tON and tOFF that matches with the ITRIP current regulation. It also depends on the indexer position when the motor is stopped with STEP = low. See below capture of coil A current blue and AOUT1 voltage yellow waveform for the DRV8434A. 

    With STEP at 2000 PPS 1/8 Step mode:

    Correct, this should not be OL issue. It looks like stall detection was not properly set. Can you set to Stall Threshold mode STL_MODE = high and TRQ_CNT/ STL_TH pin to 0 V? Although nFAULT was reported that should not have affected motor operation as STALL detection is for report only. Thank you.

    Regards, Murugavel 

  • Hi Murugavel,

    The above measurement was when motor was stepping with 1/16th step.
    I then set to Stall Threshold mode STL_MODE = high and TRQ_CNT/ STL_TH pin to 0 V, and measured current thru one coil while stepping at 1/16th. Motor is stepping even thou current signal (176mA peak) doesn't look like yours above. Any idea why current during 1/2 period is toggling between 0 and sine-wave?



  • Hi Mats,

    This looks like a current probe issue. What were you using for the current probe? Perhaps you may have to reduce the bandwidth for measurement. 

    Regards, Murugavel 

  • Hi Murugavel,

    I'm not measuring with an inductive probe. I inserted a 1ohm resistor in each coil circuit and measure the voltage on each side of one the resistors. Then I do the math in Excel to get the voltage over the resistor which (by knowing the resistance) gives me the current.
    And I can see in the exported voltage values how voltage is jumping back 'n forth between 0 and sine-curve voltage. So it seems like something in the driver is reacting os soon as current flows in one of the directions. 
    I have reduced sampling 10 times and the pattern remains that current in one direction works but not the other.

    Regards
    Mats

  • Hi Mats,

    Understood, thanks for the clarification. While measuring the voltages to perform math and extract the current samples accurately, the tON and tOFF PWM cycles must be considered and subtracted correctly. These PWM toggles are reasonably fast edges requiring very fast sampling to make sure they're not missed and properly subtracted to get a clean current waveform samples. I think this is why the computed current waveform looks contaminated. It is not possible to have such current waveform artifacts. Ofc there may be other reasons such as high back EMF causing distorted sine wave. I do not think this is the actual current waveform in your system.

    Perhaps, a solution could be to perform LPF (low pass filter) with both voltage samples across the 1 Ω resistor to get rid of high frequency alias artifacts and then perform the math to get the filtered current waveform. I'm pretty sure the current waveform in your setup will look to be a reasonable sinewave similar to the capture I shared. 

    I have had decent current waveforms in the past with these low cost current probes, https://www.amazon.com/dp/B06W2KFZLW?ref_=ppx_hzsearch_conn_dt_b_fed_asin_title_1 and https://www.picotech.com/accessories/current-probes/60-a-current-probe-bnc.    

    Regards, Murugavel 

  • Hi Murugavel ,

    Got the Hantek CC-65 probe, and now I get this waveform when motor is doing 16th steps with 5ms/step. Probe is set for 100mV/A -> Peak current 316/2mA = 158mA. Curve looks good, so still no explanation why nFAULT and STL_REP immediately goes low when nSLEEP goes high.

  • Hi Mats,

    Thanks for the update. The current waveform looks good.

    so still no explanation why nFAULT and STL_REP immediately goes low when nSLEEP goes high.

    The issue may be the high DCR of the motor coils 50 Ω. I think the torque count is too low for reliable stall detection with this motor. 

    With STL_MODE = GND, what is the measure voltage on TRQ_CNT/ STL_TH pin? This must be measured while the motor is running with steady speed and no impending stall. While in this mode, you can stall the motor manually and see if the TRQ_CNT goes down close to 0 V when the motor is stalled. 

    After noting this torque count value, change STL_MODE = DVDD. Input an analog DC input voltage between 10 to 40 % of the torque count value. In this mode, immediately after starting the motor, issue an nFAULT reset pulse to clear any previously recorded faults. Allow the motor to stall. It should report a stall fault.

    Note: A very low torque count when the motor is running normally at target speed means the motor parameters are not conducive for reliable stall detection with the DRV8434A. Try increasing the motor current to, up to 250 mA peak current as see if it improves the torque count. 

    The nFAULT pulse is a high to low then low to high transition on the nSLEEP pin. It should be around 30 μs. See below. Thank you. 

    Regards, Murugavel  

     

  • Hi Murugavel,

    I now set STL_MODE = GND, with motor having a good distance to end position.
    At (A) below nSLEEP is set to 1 (when MODE already is set to GND). nFAULT almost immediately drops to 0, TRQ_CNT/STL_TH goes to 2.48V. 
    At (B) a nSLEEP reset pulse acc.to above is issued (31,04us) without any efffect on nFAULT
    At (C) stepping starts (5ms/step)
    At (D) 35.4ms after (C) which corresponds to 7 steps then TRQ_CNT drops from 2.48V to 0V

    What I don't understand is why nFAULT goes active almost immediately after reset before any steps has been made indicating "a fault is detected".
    But what fault? It's not "VM Undervoltage Lockout (UVLO)", "VCP Undervoltage Lockout (CPUV)". And it can't be "Overcurrent Protection (OCP)" since motor is stepping. 
    The only case I see is "Open Load (OL)", but measured current 158mA is well above "Open load current threshold" of 75mA. But this value is only defined with "TYP" value. No MIN or MAX. What is MAX? 

    And since TRQ_CNT = 0 when motor is running then I have no value to provide as DC input voltage.

    Regards
    Mats




  • Hi Mats,

    Thanks for the follow up.

    At (A) below nSLEEP is set to 1 (when MODE already is set to GND). nFAULT almost immediately drops to 0, TRQ_CNT/STL_TH goes to 2.48V. 
    At (B) a nSLEEP reset pulse acc.to above is issued (31,04us) without any efffect on nFAULT
    At (C) stepping starts (5ms/step)
    At (D) 35.4ms after (C) which corresponds to 7 steps then TRQ_CNT drops from 2.48V to 0V

    Please try by changing the above sequence from A, B, C and D to A, C, B....... The stepper motor you are using is a high DCR 50 Ω not suitable for stall detection with the DRV8434A. In addition to that 5 ms/step or 200 PPS is too low a step rate to produce a good enough amplitude BEMF voltage to help with stall detection. You could try higher PPS if you can, especially you are in 1/16 step mode, you may need > 1000 PPS perhaps > 2000 PPS to get meaningful torque count voltage. Thank you. 

    Regards, Murugavel 

  • Hi Mats,

    You can also try the 8x torque count mode because the motor you have is a high DCR motor. 

    Regards, Murugavel 

  • Hi Murugavel,


    I've tried all your suggestions, played around with different PPS and step modes, but none work. The closest I got was with 1/ 4 step mode and 1000 PPS where I got a change from 0 to 2.5V on TRQ_CNT when it hit one end. Only problem with this config was that stepper seemed to miss steps because I was gettingdifferent number of steps end-2-end every time.
    Does TI have some other chip with stall detection that could work for a stepper with high DCR ?
    Or is there some other way to detect stall? 

  • Hi Mats,

    Thanks for trying various settings. 

    The closest I got was with 1/ 4 step mode and 1000 PPS where I got a change from 0 to 2.5V on TRQ_CNT when it hit one end. Only problem with this config was that stepper seemed to miss steps because I was gettingdifferent number of steps end-2-end every time.

    This happens due to mechanical bounce when an energized motor spins in to an obstacle. In some applications the end stop itself may not be a hard stop, for example a work gear with backlash. What I have seen designers use as a work around is once the motor stops at an end point, stop step inputs then drive a few steps (or microsteps) in the same direction (empirically determined) to compensate for the bounce. This bounce typically is inconsistent so variations are seen. Usually a small position overdrive will remove all the bounce. Another option would be to run the motor with slightly reduced torque by deliberately reducing its current by 20 or 30 % by reducing VREF.   

    Does TI have some other chip with stall detection that could work for a stepper with high DCR ?

    We do not have any other chip with stall detection for steppers with high DCR. It is in the works and likely a product in 2027. We have the stepper gate driver that requires external FETs. This driver has back EMF output which can be used for detecting stall. It may be an overkill for smaller stepper motors. Thank you.

    Regards, Murugavel 

  • Hi 


    We have the stepper gate driver that requires external FETs

    Do you mean DRV8711 ?

    Regards

    Mats

  • Hi Mats,

    Yes. I meant the DRV8711. Thanks.

    Regards, Murugavel 

  • Hi Mats,

    I'll close this thread. Thanks.

    Regards, Murugavel