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.

DRV8301-LS31 Kit Dutycycle nonlinearity

Other Parts Discussed in Thread: DRV8301

I use the DRV8301-LS31 for motor-control development. I have noticed a strange behavior when varying the dutycycle.
To test this i have removed any controlcard and connected an external function generator to the DRV8301 Board.

I drive the highside of Phase A with variable dutycycle and the lowside of Phase B with 100% dutycycle.

Frequency is 20kHz and EN_GATE is driven high. There is no load connected to the phase terminals and i measure the voltage
between the  PhaseA and PhaseB terminals with a multimeter.
Plotting the measured Voltage over the Dutycycle on the highside of Phase A i would suspect a linear relationship (eg 1% DC = 1% PVDD and so on)
But in reality with 1% DC there is a voltage jump to 8V and the relationship in general is not linear at all.
With a Motor connected the initial spike is not observable, but the nonlinear relationship between DC and Voltage (and RPM) remains.
Unfortunately i can not post my measurements at this point due to NDA.(I have asked for permission, if cleared i will post them here.)


Is this behavior due to the nature of the mosfets or some setting in the drv8301?

  • Fabian,

    By leaving the low-side input constantly high, you are switching for drive to Hi-Z. This may give strange signals if there is no load on the output.

    In 6PWM mode (default) the low-side should have the inverse signal if you wish to switch from high to low. You can use 3PWM mode to control the outputs (HIGH/LOW) with a single PWM.

  • Thank you for your reply.

    I am not sure i understand what you mean by inverse signal. I have implemented as follows:

    -Phase A: highside PWM, lowside 0

    -Phase B:highside 0, lowside 1

    -PhaseC: highside 0, lowside 0

    Is this what you mean?:

    -Phase A: highside PWM, lowside 0

    -Phase B:highside 0, lowside PWM (same DC as Phase A highside)

    -PhaseC: highside 0, lowside 1 (for high Z)

  • If you wish to drive current from A to B in 6PWM mode it typically look like this.

    Phase A: high-side = PWM, low-side = !PWM

    Phase B: high-side = 0, low-side = 1

    Phase C: high-side = 0, low-side = 0

  • O.k. with this method i now obtain a linear relationship between Dutycycle(DC) and Voltage without the Motor connected.

    However with the motor connected i run into PVDD Undevoltage under certain conditions (LED1 dimms down, my controller card shuts down and Faultn Pin goes high briefly).

    This only occures when I have to motor running with a certain DC and set a new DC that is significantly lower (Delta of around -40% to -45% ). I did not experience this with the previous method.

  • Fabian,

    If you are simply driving one phase of the motor without commutation you will be driving a fixed RC load. The resistance and inductance of motors are generally fairly low and I would imagine you are driving a lot of current when you increase the DC. This will cause the power supply to drop out (depending on it's current capability).

  • I am sorry, i didn't mention in my response that i am commutating the motor using the encoder feedback. without driving the low-side with the inverse PWM this worked, but now i experience the behaviour described.

  • I did find my error for anyone who might come to this place with the same issue:

    By setting a significantly lower DC the generator voltage becomes higher than the motor voltage. Since I use a DC-Powerbrick and not a rechargeable battery for example this supply was not able to sink the extra energy. The solution is to use a ramp when decelerating.