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.

DRV8881PEVM: Non-linearity in DRV8881P output versus PWM input

Part Number: DRV8881PEVM
Other Parts Discussed in Thread: TMS320F28379D

To whom it may concern,

We've been dealing with a critical issue using the DRV8881P H-bridge Driver chip where the output is not linear as we expected it to be when given a PWM from a TMS320F28379D C2000 MCU. Here is some more information:

The h-bridge behaves oddly at lower PWM duty cycles. Normally the Effective voltage follows V = (Duty%) * (Rail Voltage) and should average out to be a linear relationship. Below is a .zip file which includes a PWM sweep test we conducted with oscilloscope screenshots and data we collected by probing the H-bridge outputs, two of the lines (line 1 blue and line 2 yellow) are measuring the h-bridge output voltage, one of the lines (line 3 pink) is measuring the h-bridge output current on one of the h-bridge output lines. Each test was at a different PWM duty cycle and frequency.

HBridge PWM Sweep.zip

Below is what we see from a low-passed voltage output vs Duty% input. As you can see it does not follow a linear relationship at all:

Some additional information:

  • Bus voltage is 15VDC
  • H-Bridge current limit is set to ~1 amp
  • Motor has resistance of ~14 ohms and inductance of 1.2 mH
  • PWM update frequency we have tested at both 25kHz and 100kHz, PWM peripheral clock frequency is 100 MHz (MCU clock frequency / 2 = 200 MHz / 2 = 100 MHz)
  • This non-linear relationship has only been seen when the motor is connected. With a resistive load, it is linear

We are using the TMS320F28379D (C2000) MCU to generate the PWM signal.

It seems the DRV8881P H-bridge datasheet specifies a particular type of PWM where both lines are driving a duty cycle (see screenshot below)? However, the C2000 is currently programmed to output a duty cycle on only one line at a time, either IN1 or IN2, which indicates the forward or reverse direction. Perhaps this is part of the issue and we are generating the PWM incorrectly (dual duty cycle vs. single duty cycle)? In which case, I could use some assistance with the C2000 software to properly generate a PWM signal compatible with the H-bridge (example code and/or callouts to the TRM would be helpful).

So essentially this issue boils down to:

Why is the H-bridge output non-linear? Are we driving the PWM signal incorrectly? Is it an electrical issue? Did we select the wrong H-bridge chip? etc.

Thanks!

  • Hi Nigel, 

    Thank you for reaching out and I will be happy to assist. Rest assured that the duty cycle can be properly run with only 1 PWM signal, the dual PWM signal has to do with setting the decay mode such that you have active decay vs slow decay. 

    Going back to the issue of non linearity, it seems to me that this is a case of the inductance of the motor causing non linearity. Would you be able to test this setup with a different motor and see if you get similar results? The fact that:

    "This non-linear relationship has only been seen when the motor is connected. With a resistive load, it is linear" 

    Seems to make it extremely likely to be an issue with properties intrinsic to the motor, be it back emf or its inductance. 

    Best,

    Pedro Arango Ramirez

  • Pedro,

    Thanks for your response. We resolved the issue of the non-linearity. It had to do with the fact that we were driving the PWM incorrectly. We would drive the lines LOW (0) instead of driving them HIGH (1) when the lines were not driving a duty cycle. When driving them LOW (0) we experienced the back EMF inductance issue you described. See below screenshots for before/after the code change (yellow/cyan is the h-bridge output, pink/green is the h-bridge input PWM):