Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Help with IR2110 n-mosfet lower only driver for brushed DC motor driver Arduino PWM

Status
Not open for further replies.

Steelmesh

Newbie level 3
Joined
Jun 17, 2012
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,313
I am attempting to build a 35amp PWM motor controller for a brushed DC motor application (electric bike).

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 why I smoked it?

The OpAmp is really the ACS756 current sensor:

**broken link removed**

**broken link removed**

Arduino Code
_____________________________________________


Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// 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
}



__________________________________________________ _-
 
Last edited by a moderator:

I removed C1 and D there, and added a diode from the motor positive to ground...Now I am taking out mosfets..
 

Yikes, only reply I've gotten on this post was a Warning from the Mods.

ARE THERE SIMPLE ALTERNATIVES YOU BUILT FOR HIGH AMP DC MCU CONTROLLED CONTROLLER?
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top