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.

DRV8302: BLDC Motor Sensorless drive

Part Number: DRV8302
Other Parts Discussed in Thread: DRV832X

I am using a DRV8302 to drive a BLDC motor. I would like to run it in sensor less mode. I have configured the PWM mode as 3 PWM.

I am feeding 3 timer outputs from MCU to the DRV8302 three input pins, INH_A, INH_B, INH_C. 

INL_A, INL_B, INL_C are connected to ground (since mode of DRV8302 is 3 PWM)

The idea here is:- to sense backemf, ie when one channel is driven high, second channel driven low and the third channel is not driven and is fed to amplifier to sense voltage.

So channel A is driven high, channel B is driven low and channel C is used for Back EMF measurement.

ie when INH_A is held high, INH_B is held low and INH_C is held in high impedance state, Top push pull MOSFET (pair1) shall be turned ON by Gate A,  bottom push pull MOSFET (pair2) shall be turned ON by Gate B and no push pull MOSFET (pair3) shall be turned ON by Gate C. That is current flows through the Winding A of Motor, and goes out through winding B of the motor and Winding C is used to measure the Back EMF.

But I am not able to do this. When I drive channel A high, I see current flows through winding B and Winding C. That is because the bottom push pull MOSFET ( of pair2 & pair 3) are turned on by Gate B and Gate C for the current to flow down to the ground.

How can I sense backemf using DRV8302 if this is the operating mechanism?. 

Please share your thoughts on this to help me.

Thanks & Regards

Anand

  • Hi Anand,

    I think the issue here is that DRV8302's 3x PWM mode was one of our early versions of 3x PWM mode, so the truth table as shown below in the datasheet is:

    As you can see though, there are no possible states for GH_x = L and GL_x = L, which is the Hi-Z state used to sense BEMF. So it is not possible to have an undriven (or Hi-Z) channel, since one of the FETs will be on always.

    You will need to switch to 6x PWM mode and use one these two states to sense the BEMF on the BLDC motor and commutate to the next state. 

    3x PWM mode is likely used for sinusoidal current control rather than trapezoidal control in DRV8302 since it is not possible to produce an undriven phase. Newer gate driver devices such as DRV832x or DRV835x supports the Hi-Z state in 3x PWM mode. 

    Thanks,
    Aaron

  • Hi Aaron, I thank you for your response to my query.

    I set the DRV8302 to 6xPWM mode by connecting M_PWM pin to GND.

    INL_A, INL_B, INL_C are all connected to Ground.

    When I give pulse on the INH_A, the top MOSFET gets turned on for the Motor Winding A. But at the same time bottom

    MOSFET of  Motor Winding B and Motor Winding C also is ON, for the duration of the pulse.

    When I give pulse on the INH_B, the top MOSFET gets turned on for the Motor Winding B. But at the same time bottom

    MOSFET of  Motor Winding A and Motor Winding C also is ON, for the duration of the pulse.

    When I give pulse on the INH_C, the top MOSFET gets turned on for the Motor Winding C. But at the same time bottom

    MOSFET of  Motor Winding A and Motor Winding B also is ON, for the duration of the pulse.

    I also see on measuring GVDD voltage, it is only 2.3V and the fault LED of the DRV8302 is lit ON. Capacitor connected is 2.2uF. As for the other measurements, AVDD = 6.7V, DVDD = 3.3V, PVDD =12V.

    Does DRV8302 ave some known problem like this in PWMx6 mode?. Are there anything I can try out to fix this.

    Please share your thoughts on this.

    Regards

    Anand

  • Hi Anand, 

    GVDD voltage should be around 13.2V, so there may be damage to GVDD pin or gate driver output pins. Can you please check GVDD of another known good device and confirm that it is normally around 13.2V?

    Can you check impedance and capacitance from GVDD to GND on the bad device and a known good device? Perhaps the GVDD capacitor is shorted or there is internal pin damage. 

    Can you check to see if there are any shorts from GH_x to SH_x, GL_x to SLx on your PCB? 

    Can you check to see using a DMM diode test if there exists a 0.7V diode drop from GVDD to BST_x to ensure the bootstrap diodes are okay?

    Finally, can you share schematic of your application to see if there are any possible issues?

    Thanks,
    Aaron

  • Hi Araon,

    I have done the checks as per your suggestion. Please have my answers below.

    Question: GVDD voltage should be around 13.2V, so there may be damage to GVDD pin or gate driver output pins. Can you please check GVDD of another known good device and confirm that it is normally around 13.2V?

    Answer: After doing soldering rework of few caps, the voltage at GVDD is 10.92V and no-fault LED glows.

    Question: Can you check impedance and capacitance from GVDD to GND on the bad device and a known good device? Perhaps the GVDD capacitor is shorted or there is internal pin damage. 

    Answer: Now there is no fault indication now. But I checked the resistance from GVDD to GND and its 118K.

    Question: Can you check to see if there are any shorts from GH_x to SH_x, GL_x to SLx on your PCB? 

    Answer: I have measured in DMM, there are no shorts seen from GH_x to SH_x & from GL_x to SLx

    Question: Can you check to see using a DMM diode test if there exists a 0.7V diode drop from GVDD to BST_x to ensure the bootstrap diodes are okay?

    Answer: The voltage is 0.58V from GVDD to BST_x.

    There are also few observations that I would like to share with you. I simulate the motor winding using LED indications as shown the picture below.

    These are connected to the MOSFET push back topologies as below:-

    It was observed that when winding A is driven with a high pulse, the RED LED glows. It was also seen that the Blue LED in windings B and windings C also glowed. Initial thought was the Low side MOSFETs, Q8 and Q7 were turning ON. But we removed the series resistor that gets connected to Low side MOSFET of winding C. This means the gate drive to low side MOSFET (Q8) is floating. When tested, it was observed that when winding A is driven with a high pulse, the RED LED glows and the Blue LED in windings B and windings C also glowed. Then we removed Low side MOSFET (Q8) and High Side MOSFET (Q5) for winding C. This means there is no Push Pull MOSFET on winding C. Expectation was that the Blue LED of Winding C shall never glow. When tested, it was observed that when winding A is driven with a high pulse, the RED LED glow and the Blue LED in windings B and windings C also glowed. Then we measured the voltage that comes at SH_C. When a high pulse is given in Winding A, the voltage measured at the SH_C (Wrt to GND) is  sometimes 2V, 3V or 5V. When a low is given in Winding A, the voltage measured the SH_C (Wrt to GND) is  0.54V. This is the same in case with other windings (whichever winding we are energizing with the pulse, the SH_X on the other windings helps to turn the respective Blue LED). If I disconnect the wire to the LED from SH_C, the voltage at SH_C is 0.54V and stays there irrespective whether the other windings carry pulses, and this time no Blue LED glows for Winding C. Its through the SH_x pin of DRV, that the current was flowing to light up the Blue LED. The resistance from SH_x to ground was showing 1.8K and sometimes 14K to 18K. So it seems the SH_x pin through the DRV is providing a low resistance path to help current flow, even when the Push pull MOSFETs are not assembled/ soldered on the board. I think if this is the case, if SH_x is sinking LED current, had it been a motor with high amps, the DRV8302 would have heated up and damaged itself.

    How do we tackle this?. Is this a known problem with DRV8302?.

    The above is a picture of the setup. Till now I have not connected the Motor to the DRV8302. All testing is being done with the LED simulation to see the current flow directions.

    Please let me know what can be done next.

    Regards

    Anand

  • Hi Anand,

    I do not agree with using the resistor/LED setup to evaluate performance of the DRV8302. I believe the LEDs may be introducing sneak paths that are causing the LEDs to light up when not expected. 

    1) Can the LEDs cause a current loop if the forward voltage is high enough?

    2) There exists body diodes inside the HS and LS predriver FETs internal in the DRV8302 which can conduct current through SH_C as shown below and can charge the bootstrap cap, thus creating a circuit path for the LEDs to light up in phase C even with the push-pull topology removed. 

    3) There may be a small amount of leakage current out of SH_x because the trickle charge pump can be modeled as a current source, but I'll need to see how much leakage current could flow out of SH_x. This leakage current would flow through phase C's HS FET's body diode to PVDD or into the motor, which in this case is the blue LEDs. 

    4) Using a resistive load and LEDs rather than an inductive load at the phase outputs will affect the performance of the gate driver because when the associated input is low, the gate output will pull the gate current down to its respective source. Meaning current will flow out of GH_x/GL_x into SH_x/SL_x, so there will be current present out of SH_x that lights up the red LEDs at least. Using an inductive load helps dissipate this current. 

    5) DRV8302 defaults to a max gate drive current of 1.7A max source, 2.3A max sink current, so a 10-ohm resistor may be too small and a large amount of current sinking out of SH_x may be causing the LEDs to glow more than expected. 

    Thanks,
    Aaron