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.

DRV8840: yet another nFAULT misbehaviour

Part Number: DRV8840

Hi,

I'm using DRV8840 to control a 12V DC motor and the nFAULT signal is not operating according to the data sheet.

The first issue is an unexpected triggering of the nFAULT that happens when the direction is changed. The current is steady, about 1.4 A, no peaks and when the polarity is reversed, nFAULT is driven low. Interestingly it only happens in one way (from clockwise to ccw, but not from ccw to cw). Despite the incorrectness of this behaviour, it is perfectly regular and predictable, so I changed my SW to reset the device whenever the motor is activated or reversed and now I live with this.

The real issue is when it is NOT triggered.

Under a certain faulty mechanical condition, the driven motor can be blocked, and the microcontroller must take an action. I counted on nFAULT to warn me, but it refuses to do so.

When the motor is blocked, the current quickly surpasses 6 A and the driver is shut off, but nFAULT remains high without a glitch. In this condition, if I remove the mechanical block and enable the motor again, it will respond even without reset.

The behaviour is the same with DECAY = 1 or 0.

Find below the corresponding piece of my current schematics. All the nets at the right side are connected to the microcontroller via a 22R resistor.

Any help is welcome.

Regards

Alex

  • Hi Alexandre,

    Have you monitored the VM voltage? Is it possible you are experiencing an undervoltage condition?

    Do you have any scope captures that can assist with debugging (current, VM voltage, output voltages)?
  • Hi Rick,

    I've made more tests and captured some screens, there are basically two different kinds of "misbehavior":

    1 - Sometimes, when the motor is reversed with no significant load, the signal nFAULT is driven low and the driver remain inactive until the nRESET is pulsed. This is a minor problem for me, since it is very predictable. I can handle it by software.

    Previously, I was simply inverting the PHASE pin. This morning I've changed the procedure, now I turn off ENBL, wait for 30ms, change PHASE, wait another 30ms and then turn ENBL on again. The number of "false positive" nFAULTS in this situation has been zero since then. I'll keep testing.

    2 - The major issue is that, there is a certain condition, after the motor is working for some seconds, that it may be mechanically blocked. After the mechanical block I could not detect the nFAULT pulse and had to use other means to cut the motor power.

    This morning I disassembled my equipment so I could make some potentially destructive tests (everyone survived, thanks). I placed a 0,47 ohm shunt resistor in series with the motor, removed all the software safeguards, activated the motor, mechanically blocked it for a while, then released it again. Check the picture:

    From the moment the motor was blocked, the driver took almost half a second to drop nFAULT (that's why I couldn't find the signal in the first place, I was expecting it much sooner).

    The worrying part, however, is that, differently than stated in the data sheet, after some hundred ms after lowering nFAULT and cutting the output power, the DRV8840 will try to restart the motor by itself, and this attempts will continue every half second until something breaks.

    If a "false positive" overcurrent makes the driver keep itself off after nFAULT, why can't a REAL overcurrent event do the same ? What am I missing ?

    About the VM voltage, it dropped no more than 1V when the motor was mechanically blocked (picture below):

    Best regards

    Alex

  • Hi Alex,

    This may not be a "real overcurrent" event. The DRV8840 will enter overcurrent at 6A or greater. If the current is greater than 6A but less than the overcurrent limit, an overtemperature event will probably occur.

    This appears to be an overtemperature event because:
    1) It take many milliseconds while an overcurrent event usually takes microseconds
    2) The device re-enables the outputs after the temperature falls to a safe level, and will repeat the process indefinitely.

    For the "false positive", you may be above the limit of the overcurrent detection in one direction and below the limit in the other direction. There is a circuit for each FET, so there can be a slight variance.
  • Thanks for your response Rick,

    I've made another measurement keeping my SW safeguards on to ensure the motor will be shut off. That's the result:

    The voltage level on the shunt was about 3.44V, on 0,47 ohm we have a little bit more than 7 A. Data sheet says that the overcurrent protection trip level is 6 A (page 9).

    Why didn't the OCP kicked in ?

    What can I do to make it work ?

    Thank you very much

    Alex

  • Hi Alex,

    Thank you for the additional information.

    The datasheet does not say the overcurrent will trip at 6A. It says it will trip at a minimum of 6A. The actual trip value can be higher but will be low enough to protect the device.

    Your motor is marginal when it comes to overcurrent. Across process and temperature, the overcurrent may or may not trip.

    Are you trying to determine if the motor is blocked? There could be another way to do this using current chopping. Please see the application note: www.ti.com/.../slva858.pdf and reference design: www.ti.com/.../tidu302a.pdf

    Both documents are similar and describe how you can add a few components to determine when the circuit is regulating current. This can be used in many cases to identify a stall motor.
  • Thanks Rick,

    Unfortunately I can't change the current hardware version, but will keep for future reference. If everything does fine it will be soon.

    Best regards

    Alex