H-Bridge Device eventually shorting and burning up when driving DC motor

I am at a loss to understand why this device in my motor driver circuit works for 10 or 20 seconds and then burns up? I am using this H-Bridge motor driver to drive a small 12V gear motor. The motor draws approx. 80 to 100ma at 12V. Everything seems to work from an Arduino programming standpoint, but when I upload a simple forward reverse sketch to test it, it will work for a bit then smokes. I've gone thru 4 of these devices and each eventually fries. Below is my circuit but there is nothing unconventional about it.


https://drive.google.com/file/d/1e6pQRPDU4fmN1NlNHlU43J6FggrgOCpg/view?usp=sharing

My first thought is that the Gearmotor at some point when stopped and reversed is causing EMF current (and potentially shorting the MOSFETs in the bridge) but looking at the schematic of the MP6513 device, flyback diodes are built into each MOSFET. My next thought is that the datasheet warns that you need to put a capacitor on the VCC to avoid voltage spikes to the device. I currently have a 47ufd on its VCC but perhaps this is not adequate and I need to increase it to 100 or 220ufd?

I've double and triple checked my PCB (had one made up for this circuit) for shorts in traces and there are none. This is definitely related to just the H-Bridge motor driver. The rest of my circuit works perfectly. the other crazy thing is that the breadboard I built with another device DRV8871 works just fine, but for some reason, this device in my final PCBA doesn't.

Any notions or advice would be appreciated.

thanks

Mark

mbiasotti:
I am at a loss to understand why this device in my motor driver circuit works for 10 or 20 seconds and then burns up?

Everything seems to work from an Arduino programming standpoint, but when I upload a simple forward reverse sketch to test it, it will work for a bit then smokes.

I reckon more information is needed here. Just mentioning 'forward reverse sketch' and burns up after 10 or 20 seconds doesn't provide much information at all.

Does it burn up when you only use a sketch that drives the motor only in a single direction? When driven only in a single direction, then does the motor keep working without the 6513 burning up?

One test would be to just use this 6513 to drive the DC motor at 12 volt - one direction only - for testing ..... and use a method to measure the current being supplied to the motor by the 6513 for this condition.

  1. Measure the resistance of your motor and use Ohm's law to compute the STALL current the motor will draw. It will draw this current value EACH time you reverse the motor direction!

  2. Exactly which part/parts burned on your board. Where are they located on a schematic of your board?

Paul

Southpark:
I reckon more information is needed here. Just mentioning ‘forward reverse sketch’ and burns up after 10 or 20 seconds doesn’t provide much information at all. …

The motor does turn forward and reverse for about 20 to 30 seconds but then eventually the MP6513 smokes. The sketch is here

/* Basic sketch for trying out the Adafruit DRV8871 Breakout

Hook 10K pot upto to 3V and Gnd with middle leg on A0
*/

#define MOTOR_IN1 6
#define MOTOR_IN2 7
#define pot_pin A0
#define blower 8
#define LED 5

void setup() {
//Serial.begin(115200);

//Serial.println(“DRV8871 test”);

pinMode(MOTOR_IN1, OUTPUT);
 pinMode(MOTOR_IN2, OUTPUT);
 pinMode(pot_pin, INPUT);
 // PWM adjust for pins 9 and 10 - uncomment one that works best

// TCCR1B = TCCR1B & B11111000 | B00000001; // set timer 1 divisor to 1 for PWM frequency of 31372.55 Hz
 //TCCR1B = TCCR1B & B11111000 | B00000010; // for PWM frequency of 3921.16 Hz  // this one works best with DVR8871 and 5v motor
 // TCCR1B = TCCR1B & B11111000 | B00000011; // for PWM frequency of 490.20 Hz (The DEFAULT)
 // TCCR1B = TCCR1B & B11111000 | B00000100; // for PWM frequency of 122.55 Hz
 // TCCR1B = TCCR1B & B11111000 | B00000101; // for PWM frequency of 30.64 Hz

// TCCR2B = TCCR2B & B11111000 | B00000111; // for PWM frequency of 30.64 Hz
 //TCCR0B = TCCR0B & B11111000 | B00000011; // for PWM frequency of 976.56 Hz (The DEFAULT)
}

void loop() {
 // following section is for adjust pot speed for motor
 /*
   int pot_value = analogRead(pot_pin);
   digitalWrite(MOTOR_IN2, LOW);   // ramp up forward
   analogWrite(MOTOR_IN1, (pot_value / 4));
  // Serial.print(“motor speed value =”);
  // Serial.println(pot_value / 4);

/
// following section is for adjust  speed for blower and LED brightness
/

   int pot_value = analogRead(pot_pin);
   analogWrite(blower, (pot_value / 4));
   analogWrite(LED, (pot_value / 4));
  // Serial.print(“motor speed value =”);
  // Serial.println(pot_value / 4);

/
 // following section is for ramp up ramp down and reverse
 /

   digitalWrite(MOTOR_IN1, LOW);   // ramp up forward
   for (int i = 29; i < 35; i++) {
   analogWrite(MOTOR_IN2, i);
   delay(500);
   }

// forward full speed for one second
   delay(500);

// ramp down forward
   for (int i = 35; i >= 29; i–) {
   analogWrite(MOTOR_IN2, i);
   delay(500);
   }

// ramp up backward
   digitalWrite(MOTOR_IN2, LOW);
   for (int i = 29; i < 35; i++) {
   analogWrite(MOTOR_IN1, i);
   delay(500);
   }

// backward full speed for one second
   delay(500);

// ramp down backward
   for (int i = 35; i >= 29; i–) {
   analogWrite(MOTOR_IN1, i);
   delay(500);
   }
 */

// the following is to test the forward reverse responsiveness
//*
 analogWrite(6,0);
 
 analogWrite(MOTOR_IN1, 120);   // ramp up forward
 digitalWrite(MOTOR_IN2, LOW);
 delay(2000);
 digitalWrite(MOTOR_IN1, LOW);   // ramp up forward
 analogWrite(MOTOR_IN2,120);
 delay(2000);
//*/
}



I'm just using the last part of the sketch that is uncommented. This is a standard procedure for reversing a motor and works with other motor controllers

Paul_KD7HB:

  1. Measure the resistance of your motor and use Ohm's law to compute the STALL current the motor will draw. It will draw this current value EACH time you reverse the motor direction!

  2. Exactly which part/parts burned on your board. Where are they located on a schematic of your board?

It is the MP6513 that is burning up, the rest of my circuit behaves normally and survives the failure of the MP6513. I measure the stall current of my motor by measuring the current with my multimeter in-line with the gearmotor and connected to my benchtop PS at 12V. I stall the shaft with pilers and the current reads approx. 350ma, well below the 800ma this device is rated for

Southpark:
Does it burn up when you only use a sketch that drives the motor only in a single direction? When driven only in a single direction, then does the motor keep working without the 6513 burning up?

@Southpark - I am not able to test the single direction since I've burned up all my available devices and have more on order that will be here in a few days...

Can you draw a schematic , take a photo and post it ?

mbiasotti:
@Southpark - I am not able to test the single direction since I've burned up all my available devices and have more on order that will be here in a few days...

Thanks for mentioning that mb.
Also - thumbs up in the way you order extra in that way - for testing. For the moment, just review the arduino code ------ as in how it controls your driver system. For example, does it just drive the motor in 1 direction for 20 seconds, and then reverses the direction abruptly, and then runs the motor in that reverse direction for 20 seconds?
Or does it keep flipping the direction forward and backwards and runs the motor very shortly for just 1 second per direction? Or does the controlling software allow the motor to stop for a little while prior to reversing the direction?
Another approach is to order a driver with a higher rating.

mbiasotti:
I am at a loss to understand why this device in my motor driver circuit works for 10 or 20 seconds and then burns up? I am using this H-Bridge motor driver to drive a small 12V gear motor. The motor draws approx. 80 to 100ma at 12V. Everything seems to work from an Arduino programming standpoint, but when I upload a simple forward reverse sketch to test it, it will work for a bit then smokes. I've gone thru 4 of these devices and each eventually fries.

The specs for the MP6513 say its got 0.5 ohm switching MOSFETs, so the high and low side switches total
1 ohm. At 1A that means you are dissipating 1W in a tiny tiny SOT23-6 package - I'm not surprized its
struggling, 1W is too much for a tiny package, 1A is nothing for a motor. A motor thats "100mA"
typically means its no-load current is 100mA. the current under load or stall conditions will be far
higher - perhaps a couple of amps at times, well beyond what this device could survive.

The key specification for any motor is the stall current, as the driver has to survive this everytime the motor
is fired up, as the initial current surge before the motor gets up to speed is of this magnitude.

You've not identified the actual motor, so we can't see the full specifications.

BTW if you hard-reverse a motor then twice the stall current is pulled initially, as the back-EMF initially
adds to the new drive voltage.

The key point is if you can figure out the stall current for your motor, then you'll be able to select
a driver chip capable of surviving driving it. Even quite small motors may pull several amps at stall,
and medium sized things like cordless drill motors can pull perhaps 50A of stall current - motors use
loads of current, basically.

I think it's a waste of time to discuss this post until the OP follows instructions and posts a schematic.

(freewheeling diodes?)

Where is the photo of the PCB ?
Where is your Design Criteria ?
Where is the vendor link for the motor ?

"You've not identified the actual motor, so we can't see the full specifications."

Where is your test plan ?
Where are your test notes ? (with current measurements ?)
Did you have a scope to look at the backEMF voltage when you reversed direction?
What are the components mounted on ?

(perfboard or PCB ?)

@raschemmel - I did post my circuit schematic in my original post and I'm embedding links in my posts (perhaps they are hard to see for you. The motor is a 12V gear motor by Pololu rated at 160 RPM 0.71W 12VDC. BTW, I'm testing and further developing my Arduino code successfully with a DVR8871 (which is a very similar device to the MPS6513) with the same 12V motor and it behaves as expected. If you care to see the actual board it is here but I've tested it and there are no errors between it and the schematic. And also, can you bring down your accusatory tone please. Thanks.

@MarkT - as I explained in a previous post I did measure the stall current on this motor and it is not greater than 350ma in full stall with 12V applied. The MPS6513 is rated at 800ma. I don’t have a scope to see what is really going on.

As far as my Arduino sketch, Yes, I’m suddenly reversing this motor but do a “brake” (INT_1 and INT_2 HIGH) before reversing. As I stated in my previous post to raschemmel, I have developed my sketch on a DIP H-Bridge motor driver and also on a development board here with the same motor and everything works as intended.

My current thought is that for this particular device, the built-in snubber diodes are not doing there job for this device and I’m considering putting two 16v Zener diodes at the motor terminals (reversed to each other) to see if they would limit the voltage spike that might be occurring when the motor brakes, and or reverses…

I get what you are saying about the motor and the MPS6513 ability to handle its stall current and I’ll look into whether there is another device that is rated for high current…

For my prototype, I’m going to wire in the DRV8871 to my circuit and try it. It has a current limiting capability via ILIM which is probably why this chip works and the MPS6513 doesn’t…

@mbiasotti~~,~~
FYI, as you are discovering, there is a downside to completely skipping the bench prototype phase for the motor drivers. If this is a prototype then I suppose it comes down to the PCB cost. The 6513 has freewheeling diodes so and the motor operational current (60mA) (0.71W/12V) is within the chip's rating. Not to beat a dead horse but how much deadtime do you have between motor directions (exactlY) ? Is it possible the motor is still turning when the command to reverse is executed ? I didn't see a STOP command (followed by a delay) BETWEEN one direction and the other.

I have developed my sketch on a DIP H-Bridge motor driv r and also on a development board here with the same motor and everything works as intended.

Well I suppose that begs the question, "Can a TSOT-23-6 package dissipate as much power as a DIP rated for almost FOUR times the power ? (1.2A is almost TWICE the current rating of the 6513)
The DRV8871 development board (breakout bd to the rest of us) is rated for SIX times the current (3.6A) of the target IC (6513). Please identify the DIP used to perform your development testing of the H-bridge. I submit your test plan was flawed because the test IC DIP ratings far exceeded the device you planned to use. Engineering SOP dictates that the prototype testing criteria match the target device criteria .Does it make sense to test a load with a chip that can handle almost 4 times the current of the target device and then conclude that if it works with a 4W chip it should work with a 1.14W chip ? Not trying to be accusatory but I'm just not seeing the logic in it. If that's
being accusatory I'm sorry. You asked . That's my conclusion based on the data presented.

I'd typically assume a SOT23 sized device is rated for ~100mW in typical situation (no special thermal
management via multi-layer PCB and thermal vias). 1 ohm total on-resistance for a motor driver is a
lot, which really is the source of the problem as it is leading to the dissipation in the first place.

Best to pick a chip with a thermal heat slug and pay attention to thermal design of the PCB when significant
dissipation is possible.

And remember absolute maximum on a datasheet is exactly that, usually taken to mean don't venture
anywhere near this value.

Thermal ratings for surface mount components often have footnotes attached to them explaining the
PCB thermal design assumptions made to get that measurement, and again don't venture close to the
maximum, design conservatively.

Hi,

Please read the post at the start of any forum , entitled "How to use this Forum".
OR
http://forum.arduino.cc/index.php/topic,148850.0.html.

It will show you how to attach files to your post.
Some platforms have problems with loading off forum images.

Tom... :slight_smile:

It seems the OP is MIA...