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.

DRV8873: Current Sense Questions

Part Number: DRV8873
Other Parts Discussed in Thread: DRV8874, DRV8874-Q1, INA181,

Hi Team,

My customer is bringing up the DRV8873 chip and has a few questions about the current sense.

1) For current sense Rs resistor, we have 1.1kOhm. So this cancels out the current mirror factor of 1/1100, and the voltage measured at Rs is the motor current. However, the voltage measured at Rs is about half (not exactly half) of the motor current measured using a current probe. Am I missing a factor somewhere?  We are measuring the current at the rising edge of both PWMs.

2) How long does it take for the current sense output to decay to zero after the PWM goes low? I'm seeing that even after the HS switch is turned off (PWM=0), the corresponding current sense output is not zero (still decaying very slowly, after a few microseconds).

Slew rate we have set to the highest.
Disabled open load protection.
Disabled current regulator/TRIP. 
We are in independent PWM mode.

Thanks,
Mitchell

  • Hi Mitchell,

    the voltage measured at Rs is about half (not exactly half) of the motor current measured using a current probe.

    What is the actual current through the motor? Is it in the mA range?

    2) How long does it take for the current sense output to decay to zero after the PWM goes low? I'm seeing that even after the HS switch is turned off (PWM=0), the corresponding current sense output is not zero (still decaying very slowly, after a few microseconds)

      there will be some propagation delays +dead time+ VOUT falling time from when the control PWM goes low to when the OUT voltage goes low. This delay is around 100-300µs depending on your driver setting and voltage.

    However, there is a delay from when OUTx goes low until the IPROPI signal goes low. As shown below, in worst case, this delay is around 15µs.

    During the current ramp down, is IPROPI voltage properly following the motor current? This should be the case if everything is working fine. If there is a slow current decay, this could mean the motor may be high inductance causing the current to decay slower.

  • Hi Pablo, I'm working with the DRV8873 chip now, and my co-worker originally reached out to Mitchell with the questions.

    What is the actual current through the motor? Is it in the mA range?

    The actual current is in the 400-600 mA range for the tests we are running now.

    there will be some propagation delays +dead time+ VOUT falling time from when the control PWM goes low to when the OUT voltage goes low. This delay is around 100-300µs depending on your driver setting and voltage.

    However, there is a delay from when OUTx goes low until the IPROPI signal goes low. As shown below, in worst case, this delay is around 15µs.

    100-300 us of delay from control PWM going low to OUT voltage low seems too long.  Based on the data sheet, I would expect much less for a 15V bus and the fastest 53.2 V/us slew rate:

    PWM low -> OUT low delay = t_PROPAGATION_DELAY + t_DEADTIME + t_RAMP = 1.5 us + 500 ns + (15 V / 53.2 V/us) = 1.5 us + 0.5 us + 0.3 us = 2.3 us.

    This is roughly what we measure with a scope.

    OUT -> IPROPI delay = t_IPROPI = 2.2 us.

    We also see something close to that with a scope (see below).

    During the current ramp down, is IPROPI voltage properly following the motor current? This should be the case if everything is working fine. If there is a slow current decay, this could mean the motor may be high inductance causing the current to decay slower.

    See the below scope captures with a 45%/55% duty cycle for IN1/IN2 (left) and 55%/45% duty cycle for IN1/IN2 (right):

    • Yellow = OUT1

    • Pink = OUT2

    • Blue = inductive current probe on OUT2

    • Green = IPROPI2 (left) and IPROPI1 (right) with R_sense = 1.1k.

       

    The inductive current probe makes sense.  When we forward or reverse drive the motor, it shows the current ramping up.  When we are high-side recirculating, the current decays.  There is a small blip around t = 0 in the inductive probe current because our OUT1/OUT2 rising edges are not perfectly synchronized.

    I don't understand what IPROPI1 and IPROPI2 are reporting.  When OUT1 and OUT2 go high, there is a ~3us delay after the FETs switch, and then the IPROPI reports the current growing, not decaying as expected.  When one of the outputs goes low and we forward or reverse drive the motor, IPROPI reports a discontinuous jump, instead of a gradual current ramp like the inductive probe.

    Also, the magnitude of the IPROPI current seems to be off.  During high-side recirculation, the inductive probe decays from 500 to 400 mA, while IPROPI grows from 150 to 200 mA.

    We also have a low side sense resistor, and it reports the expected current ramp when driving the motor:

    Edit: I took a scope capture with a 10 kHz PWM input to compare:

    Here, we still see a ~3us delay after the FETs switch on and OUT1 goes high until IPROPI1 starts to report the coil current.  But now, when driving the motor, IPROPI1 shows the current ramp (just like the inductive probe).  It does seem to drop off about 1 us before OUT1 drops.  So maybe with a 40 kHz PWM IPROPI1 doesn't have enough time to report the current ramp before the mirror FET switches off.  The current growing during high side recirculation still doesn't make sense.

  • I found this very helpful link, which goes into more detail on how the IPROPI circuit works.  It clears up a few things below:

    • Why IPROPI drops out 1 us before OUT1 goes low.
    • The 2.5-3 us delay from OUT going high until IPROPI starts ramping is as designed.

    However, the remaining questions are:

    • Why is IPROPI reporting a growing current during high-side recirculation?
    • Why doesn't IPROPI drop immediately to 0 when the power FET is off?  It drops somewhat and then slowly ramps down.
    • Why is the scaling of the IPROPI current relative to the inductive probe off by >2x?
  • Hi Ruslan,

    The actual current is in the 400-600 mA range for the tests we are running now.

    This is a very low current. At these lower currents, there might be some accuracies or tolerance issues that may cause the measured current to be slightly different than the expected values. The DRV8873 is meant to drive 10-A currents. Is there a specific reason why you chose a high power device to drive a low power motor?

    PWM low -> OUT low delay = t_PROPAGATION_DELAY + t_DEADTIME + t_RAMP = 1.5 us + 500 ns + (15 V / 53.2 V/us) = 1.5 us + 0.5 us + 0.3 us = 2.3 us

    Apologies, it seems I did my math wrong here. you're calculated values seem correct.

    Why is IPROPI reporting a growing current during high-side recirculation?

    Are you driving two loads independently or have OUT1 and OUT2 connected together? The reason I am asking is because TI does not recommend connecting both outputs (OUT1 and OUT2) when in independent control mode. There can be synchronization issues. I don't know if this the reason for the abonormal IPROPI voltage but to confirm, can you change it to PWM control mode and drive the loads. You may need to reconfigure the control logic.

    Why doesn't IPROPI drop immediately to 0 when the power FET is off?  It drops somewhat and then slowly ramps down

    This can be because the IPROPI follows the current through the inductive load. The current mirror circuit of the IPROPI mechanism monitors the current of the HIGH side FETs. There will be non-zero IPROPI voltage when the current of the FET flows from drain to source. When the H-bridge changes state from Driving to High-side recirculation, the IPROPI voltage will not drop to zero immediately because the current through it is still flowing from drain-to-source. I hope this makes sense.

    Why is the scaling of the IPROPI current relative to the inductive probe off by >2x?

    The relationship is given in equation (1) on the datasheet.

  • Is there a specific reason why you chose a high power device to drive a low power motor?

    For these tests, we are keeping the current low while debugging.  We have higher peak currents up to 6A, so we needed the 10A current rating of the DRV8873.  But usually the current will be lower and we cannot sustain very high currents without burning out the motor.

    Are you driving two loads independently or have OUT1 and OUT2 connected together?

    OUT1 and OUT2 are driving the same motor.  They are complements of each other in duty cycle (when OUT1 is 45%, OUT2 is 55%).  We like independent mode because you can get current recirculation when IN1 and IN2 are low.  Also, we can ensure good synchronization between IN1 and IN2 rising edges to minimize issues.  But I will try PWM mode and report what IPROPI looks like.  I don't expect there to be a difference, since the DRV8873 has the same truth table logic in Independent and PWM mode when IN1 and IN2 are high => high side recirculation.

    This can be because the IPROPI follows the current through the inductive load. The current mirror circuit of the IPROPI mechanism monitors the current of the HIGH side FETs. There will be non-zero IPROPI voltage when the current of the FET flows from drain to source. When the H-bridge changes state from Driving to High-side recirculation, the IPROPI voltage will not drop to zero immediately because the current through it is still flowing from drain-to-source. I hope this makes sense.

    I'm not following - I was referring to changing state to low side recirculation.  When OUT1 and OUT2 are low, the high side FETs are off, but the current mirror doesn't drop to 0.  In fact, it appears to show the same current decay as the inductive probe.

    The relationship is given in equation (1) on the datasheet.

    We are using a 1.1K resistor for R_sense.  This should cancel out the current mirror scaling, so a 1V IPROPI signal should correspond to 1A.  On the last plot, when we are driving the motor, you can see the inductive probe current grows from 300 mA to 1100 mA; IPROPI grows from 270 mA to 330 mA before dropping out.

    I noticed that the DRV8874 spec sheet has a timing parameter diagram for IPROPI and a 6 us typical delay for the t_DELAY.  Is there an equivalent spec for the DRV8873?

  • Hi Ruslan,

    I'm not following - I was referring to changing state to low side recirculation.  When OUT1 and OUT2 are low, the high side FETs are off, but the current mirror doesn't drop to 0.  In fact, it appears to show the same current decay as the inductive probe.

    I was just trying to say that when the H-bridge is in High-side re-circulation (IN1=IN2=1), the IPROPI values will follow the actual motor current because the current mirror monitors the current on the High-side FETs only. When in Low-side re-circulation, the IPROPI current will not be same as the actual motor current. It doesn't necessarily mean the current will drop to zero. In the FAQ you linked above, I took the waveform using a resistive load. Can you do me a favor and replace the motor load with a resistive load and you'll see that the current is dropping to zero when going to Low side re-circulation.

    I noticed that the DRV8874 spec sheet has a timing parameter diagram for IPROPI and a 6 us typical delay for the t_DELAY.  Is there an equivalent spec for the DRV8873?

    There is now timing diagram for the DRV8873 but the diagram on the DRV8874 can also be applied to the DRV8873 except the parameter values will be different.

  • Can you do me a favor and replace the motor load with a resistive load and you'll see that the current is dropping to zero when going to Low side re-circulation.

    I switched to a 10 ohm power resistor as the load, with a 15V supply voltage, so we expect 1.5A.  I also switched to PWM mode.  Here is the scope capture

    • Yellow = OUT1
    • Pink = OUT2
    • Blue = inductive current probe
    • Green = IPROPI2

    It looks like we might have inadvertently added an RC effect to the IPROPI line, I'm looking into that now.

    Edit: We removed some caps that were used for an anti-aliasing filter.  Now a PWM mode scope capture with the motor looks reasonable:

    I also repeated the original 45% duty cycle with independent mode, and it matches expectation now:

    There is now timing diagram for the DRV8873 but the diagram on the DRV8874 can also be applied to the DRV8873 except the parameter values will be different.

    If you have parameter values, they would be useful to know.

    After fixing our board, the behavior looks reasonable.  However, my concern is with the IPROPI t_DELAY.  When I try a 49% duty cycle, it's almost 20 us.  That is too long for our application, since we may want to use a PWM frequency closer to 100 kHz.  It seems that the current mirror circuit wasn't designed for frequencies that high when measuring lower currents?  Do you have a part suggestion that will better fit our needs?  Or are we better off designing our own current sense with the DRV8873?

  • Hi Ruslan,

    I'm out of the office this morning. Will reply back later this afternoon US time.

  • Hi Ruslan,

    Edit: We removed some caps that were used for an anti-aliasing filter.  Now a PWM mode scope capture with the motor looks reasonable:

    Good to hear. We don't explicitly mention this on the datasheet but you should avoid adding large filtering capacitors on the IPROPI line. 

    However, my concern is with the IPROPI t_DELAY.  When I try a 49% duty cycle, it's almost 20 us

    How are you measuring the IPROPI delay? looking at your waveform, the IPORPI delay is not 20us.

  • How are you measuring the IPROPI delay? looking at your waveform, the IPORPI delay is not 20us.

    That is for 45%/55% duty cycles for IN1/IN2, so the measured current is 500-1000 mA.  For 49%/51% duty cycles, the drive phase is very short, so the measured current is smaller (< 200 mA) and we incur very large delays - 15 us deadtime and 5 us to ramp:

  • Ruslan,

    I understand now. Thank you for the confirmation.

    The deadtime is around 500ns, not 15µs. In this FAQ, it is explained that the DRV8873 IPROPI delay depends on the output current. Since this is a much lower current, that the other waveforms, the delay is longer. A higher output current will result in shorter delays. If you plan on driving 500mA-1000mA then the shorter duty cycle difference will not work. 49%/51% duty cycle is only about 2us of driving time. You won't be able to get a reasonable IPROPI measurement during this short time.

    If you require a more consistent IPROPI delay, the DRV8874 may be a better option. This device has an IPROPI delay of around 2us regardless of the output current. Below are two scopeshots with different output currents. Notice that the delay is around 2.1us.

    Yellow: IN

    Magenta: V_OUT

    Blue: IPROPI

    Green: I_OUT

    Low current (10mA)

    High Current (400mA)

  • Thanks Pablo, DRV8874 looks like a better fit in terms of current sense delay.  The datasheet for that part states a 6 us typical t_DELAY, while your plot shows closer to 2.1 us.  If we can get 2.1 us, that will likely work for us, but 6 us may be too long.  Which of these values should we expect?

    For the DRV8874, it seems IPROPI doesn't give any direction information since it's a sum of two currents.  If you're driving forward or reverse, it will give the same reading, correct?

    If so, can you give a recommendation for a similar part that has current sensing included, with short, bounded delays (<5 us) but with direction information (like the DRV8873)?

  • Hi Ruslan,

    Where did you find the 6us specification? In the datasheet is specified as 1.6us.

    For the DRV8874, it seems IPROPI doesn't give any direction information since it's a sum of two currents.  If you're driving forward or reverse, it will give the same reading, correct?

    The IPROPI current is equal to the sum of the current flowing from drain-to-source on both Low-side FETs. So you are correct, the IPROPI measurement is an absolute value.

    If so, can you give a recommendation for a similar part that has current sensing included, with short, bounded delays (<5 us) but with direction information (like the DRV8873)?

    Unfortunately, there isn't another device like the DRV8873 with split IPROPI that can source the current you require. If all you need is to determine the direction of rotation, you can use the INx information to determine this.

  • Where did you find the 6us specification? In the datasheet is specified as 1.6us.

    Page 6 of the DRV8874-Q1 datasheet says 6 us.

    If all you need is to determine the direction of rotation, you can use the INx information to determine this.

    Unfortunately, I don't think that will work for currents close to zero.  It takes time for the current to react to IN1x changing from forward to reverse drive, so you can't assume an IPROPI direction based on INx state.  For our application, we have short peak currents, followed by long periods of low current, and we need measurements for both.

  • Hi Ruslan,

    I get where my confusion is coming from. We are looking at different datasheets. I was looking at the DRV8874 and you at the DRV8874-Q1 datasheet. The -Q1 means it is an automotive rated device. Are you looking for an automotive rated driver?

    Unfortunately, I don't think that will work for currents close to zero.  It takes time for the current to react to IN1x changing from forward to reverse drive, so you can't assume an IPROPI direction based on INx state.  For our application, we have short peak currents, followed by long periods of low current, and we need measurements for both.

    The best way to get real-time current sensing is to add a sense resistor in series with the motor. You can add a bi-directional low-side sensing amplifier circuit or use a dedicated amplifier IC like the INA181. Attached is a schematic showing how this implementation will work. Drawing19.pdf

    If the REF voltage of the amplifier is set to logic supply mid voltage rail (for example 1.65V for 3.3V VCC supply). In this example, if the amplifier output is equal to 1.65V, this will represent a 0-A current. If  less than 1.65V, it will represent a negative current according to the polarity of the amplifier inputs. If greater than 1.65V, the current is positive. This can be implemented in any driver (DRV8874 or DRV8873). Let me know if you have any questions.

  • Are you looking for an automotive rated driver?

    Yes, currently we are, unless we relax our requirements.

    Thanks for the drawing.  I know we can add our own inline current sensing, but we were hoping to use an integrated solution since the DRV887x series meet almost all of our requirements and has integrated current sense.  But we may end up having to use the inline sense resistor.

  • Hi Ruslan,

    Another device you can use is the DRV8243H-Q1which is similar to the DRV8873. It monitors the current through the high-side FETs and can be configured for independent half-bridge control mode. However, this device is in pre-production and has not yet been released to market.

  • Thanks, we will keep that chip in mind.

    I've looked into some workarounds with the DRV8873 chip to make it work for us.

    I've switched to PH/EN mode to ensure that the current is always either driven or in slow decay mode.  This also ensures that we stay in high side recirculation and get non-delayed current readings as often as possible.  However, one of the drawbacks of this mode is that the OUTx signals are very jittery for short duty cycles on EN/IN1.  See below:

    • Blue = EN/IN1 (4% duty cycle on 20 kHz PWM, so 2 us high time)
    • Yellow = OUT1 (OUT2 is always high)
    • Green = IPROPI2

      

    Comparing to other duty cycles, we can see that the DRV8873 output (and therefore the motor current) is more consistent at higher and lower duty cycles:

    • Pink: EN/IN1
    • Yellow: OUT1
    • Green: IPROPI2
    • Blue: Inductive current probe

    Is there a way to get more consistent OUTx behavior at low duty cycles in PH/EN mode?

  • Hi Ruslan,

    Are you using your own board design or EVM?

    I think what's happening here is that the device may be having difficulties driving at such low duty cycles. I'm going to investigate this to understand exactly what is happening. That's why I asked if you are using the DRV8873SEVM or your own board.

  • Are you using your own board design or EVM?

    We are using our own board.

  • Hi Ruslan,

    I'm going to reach out to our design engineers. They might have an explanation for what is happening here.

    In the meantime, can you redo these tests but replace the load with a resistive load and with no load. I want to double check if this behavior is being caused by the motor load.

  • Here are the scope captures with no load and a 20 Ohm power resistor load.  You can see the multimodal behavior is still there, especially with the resistive load.

  • Hi Ruslan,

    Thank you for the waveforms. The jittering behavior seems to be independent of the load. It's still present even with no load.

    Are you able to share the schematic and layout? I want to take a closer look at the board design files.

  • You can share the files via private message if you don't want to share in the public forum.

  • I've also reproduced similar behavior on the DRV8874 EVM board.  Since the transient specs are different, the jitter is now the worst for a 1 us drive time.

    • Pink: EN/IN1
    • Yellow: OUT1
    • Green: IPROPI
    • Blue: Inductive current probe

  • Hi Ruslan,

    Thank you for providing the information.

    Since this can replicated on the EVM and without a load, I believe this may caused by a limitation on the motor driver. The driver may not be able to properly driver the outputs at such low pulses. I will be in the lab tomorrow and will try to investigate this more. Will give you an updated tomorrow.

  • Hi Ruslan,

    I was not able to make it to the lab yesterday. Will need some more time to run the tests.

  • Let me know when you can replicate this behavior.  If this is intrinsic to the motor driver, then we can rule out PH/EN mode as an option.

  • Hi Ruslan,

    I will be in the lab tomorrow trying to replicate this behavior.

  • Hi Ruslan,

    I apologize for the late reply.

    I tested this in the lab and similar results except that The jittering only happened when the both of the inputs is PWMing. In the case that I only PWM one of the input and keep the other either logic High or Low, the jittering is not present. I believe what is happening is that the H-bridge is going to various states (drive, coast, and braking) due to both inputs PWMing. This is expected behavior which is shown in the control logic table on the datasheet.

    I suggest either driving it in PH/EN mode or drive it when only one of the inputs is switching.

  • Thanks Pablo, we have seen the jittering when both inputs are PWMing as well, which we attributed to driving one load with independent mode.

    However the plots above were for PH/EN mode and only EN/IN1 was being PWM'ed.  And the jitter is worst for shorter drive times (around 2 us), when the output has just enough time to reach 15 V.  In my plots you can see for a 2 us drive time on EN/IN1, the DRV output is jittery with no load and even more jittery with a 20 ohm load.  Were you able to confirm this behavior on the DRV8873?

  • Ruslan,

    I was able to replicate in PH/EN actually. Interestingly, I noticed that the jittering only happened when you go to high-side re-circulation (braking). In the case of PH/EN, the H-bridge goes from driving phase to braking. During the transition from braking (EN=0) to driving phase (EN=1), there will be a dead time inserted to protect h-bridge from cross-condition. There will also be other time delays such as rising time and then finally falling time and another dead time when switching from driving back to braking phase. I believe what is happening here is that the voltage can be very unstable during the dead time (specially when the OUTx is HIGH which is the case in PH/EN). That can the cause of the jittering. Another thing to note is that the total amount of delays (dead time + rise time) is near the same as the EN1 pulse signal. You can see this in your 3% duty cycle (1.5us) waveform.

    So to fix the jittering, you have to configure the driver to PWM mode. Set one of the inputs to 0V and the other PWM. For example IN1=0V and IN2=20kHz (5% duty cycle). This way, the H-bridge is going from coasting to driving and is not going to the braking state. I tried this on the EVM and got very good waveforms. 

  • I don't totally follow your suggestion.  In PWM mode, we have:

    If I set IN1 = 0, and PWM IN2, then I will switch between drive and coast.  However, to get the same behavior with reverse drive, I will need to set IN2 = 0 and PWM IN1.  That's not very convenient, since both IN1 and IN2 must be capable of PWM and logic level outputs.

    You could instead PWM both inputs with complementary duty cycles (45% IN1 vs 55% IN2) but one PWM cycle will have a coast, drive, and brake (high side recirculation) phase in that case.

  • Hi Ruslan,

    I understand the inconvenience of needing IN1 and IN2 to be capable of PWM when switching between drive and coast. However, the jittering doesn't show up when switching between drive and coast. 

    You could instead PWM both inputs with complementary duty cycles (45% IN1 vs 55% IN2) but one PWM cycle will have a coast, drive, and brake (high side recirculation) phase in that case.

    You can try that but I think you will get similar results since the drive phase will be very short (specially if you plan to drive up to 100kHz PWM frequency).

    To summarize this thread, the problem with the jittering is mainly being caused by a combination of the short ON pulse and switching from driving to high-side braking. One way to smooth out the jittering is bu increasing the ON pulse or switching to coasting during current decay.