Scaling up this h-bridge optoisolated parts help

Thread Starter

Steelmesh

Joined Aug 25, 2009
18
I successfully sizzled a n-fet for first test. I was able to spin up the motor, then it burned out and stuck on.

After that, I hooked up the current sensor, and successfully sizzled the IR2110-2 driver, it was cooking on top.

I picked up 1-4 amps during the last test, spun it up lightly a few times, then throttled it back down to 0%. After a couple seconds, I noticed a funky smell and something boiling on top of the IR2110.

Here is the circuit...any ideas?

The OpAmp is really the ACS756 current sensor:






Arduino Code
_____________________________________________

// Alpha Motor Control program written by Steelmesh
// IR2110 Driver
// 75321 N-mosfet
// ACS756 hall effect current sensor, two 0.1uf caps for VIN/VOUT
// Hall Sensor pins: (1)VCC- 5v Arduino, (2)GND- Ground Arduino, (3)VIOUT- Analog Input Arduino, (4) from power source, (5) to load

int LIN = 3; //Low PWM to IR2110 LIN
int hallIn = 2; //signal from Hall Sensor
int ampLimit = 10; //manual input
int sensorCal = 511; //manual input
int sensorSpec = 40; //40 mV per Amp

void setup()
{
Serial.begin(9600);
}

void loop()
{
int throttleIn = analogRead(4); //Read throttle, declare integers
int pulse = constrain(throttleIn, 200, 800);
pulse = map(pulse, 200, 800, 0, 254);

int ampRead = analogRead(hallIn); //Read hall sensor output
ampRead = constrain(ampRead, sensorCal, 1023); //constrain to manual sensor calibration
int actualAmp = ampRead - sensorCal; //Declare new int for conversion
actualAmp = (actualAmp * 4.9) / sensorSpec; //4.9 * Analog signal =~ mV, divide by example: "ACS756 spec: 40mV/1A"
int hallMv = analogRead(hallIn) * 4.9; //debugging to view mV


Serial.print("Pulse: ");
Serial.print(pulse);
Serial.print(" ");
Serial.print("Amps: ");
Serial.print(actualAmp);
Serial.print(" ");
Serial.print("Hall mv: ");
Serial.print(hallMv);
Serial.println("");


if (actualAmp > ampLimit) //current limiter function
{
pulse = 0; //turn off via pulse
analogWrite(LIN, pulse);
Serial.println("OVERLIMIT!!");
delay(100);
}
else
{
analogWrite(LIN, pulse); //Within 'if' statement to ensure if actualAmp > ampLimit, it won't command analogWrite(throttle function)
}

delay(100); //Serial.print sake
}

___________________________________________________-
 

shortbus

Joined Sep 30, 2009
10,045
Breadboards like you are using are bad for this type of circuit. This is due to the increased capacitance and inductance they have. Since you are not using the high side output, you should also remove the bootstrap components (C1 and D) from the high side drive.
 

ronv

Joined Nov 12, 2008
3,770
You need a clamp diode across the motor.
10Ufd. for the boost capacitor is to big, but I'm not sure you want to remove them because the chip has a shut down circuit if the boost voltage is to low. I've not seen this chip used this way but it might work, but I think Vs will need to be grounded. Make C boost about .01Ufd. The most important is the clamp diode.
 

shortbus

Joined Sep 30, 2009
10,045
@ronv, the ir2110 is a separate low - high side driver, not a half-bridge diver. Like you I would use a low side driver, but the OP already had the ir2110.
 

Thread Starter

Steelmesh

Joined Aug 25, 2009
18
You need a clamp diode across the motor.
10Ufd. for the boost capacitor is to big, but I'm not sure you want to remove them because the chip has a shut down circuit if the boost voltage is to low. I've not seen this chip used this way but it might work, but I think Vs will need to be grounded. Make C boost about .01Ufd. The most important is the clamp diode.
Okay, I made all these changes...I slowly turned the pot, its starts spinning, then goes to full throttle stuck on. Killed another mosfet...how can I limit the current to the fet?
 
Top