Maker Pro
Maker Pro

BLDC Power Inverter Problem.. Need Help Urgently

Sufiyan Adhikari

Apr 8, 2016
6
Joined
Apr 8, 2016
Messages
6
Hello Friends,
I am new to the forum and new to electronics.
Soo, practically a noob here, please forgive me for the shabby diagram and poor knowledge.

But i am trying to run a BLDC motor using an Arduino based control.

Bellow is the schematic of the power inverter I am using.
M using IRF4905 P channel Mosfet.
One more thing to say is that, source of high side Mosfet is connected to 26v, and drain to load, opposite to whats shown in the diagram.
Once I connect the power supply, No I am getting continuity between source an drain with all the connections removed. Need urgent help.
Connecting the power supply just blew away all my High Side Mosfets. dont know what to do. its the second time its happening. need urgent help.
 

Attachments

  • diagram.jpg
    diagram.jpg
    27.6 KB · Views: 121
Last edited:

Arouse1973

Adam
Dec 18, 2013
5,178
Joined
Dec 18, 2013
Messages
5,178
Welcome Sufiyan. Why are you posting out of date diagrams. Please update your diagram, this makes it easier for us as we don't have to remember it's now different.
Adam
 

Sufiyan Adhikari

Apr 8, 2016
6
Joined
Apr 8, 2016
Messages
6
Hi Adam,
I dont understand what you mean by out of date diagram? i dont have any proper software for making the diagram. Its what I am using. except that i am connecting Source to 26v and drain towards load.
 

Arouse1973

Adam
Dec 18, 2013
5,178
Joined
Dec 18, 2013
Messages
5,178
Then you need to download a free package like LT Spice and draw the circuit in that. It is very bad practice to expect others to have to remember it's different. Others may even miss the part where you said it's different and that can cause confusion. Please download a free software package and draw the circuit correctly.
Thanks
Adam
 

Arouse1973

Adam
Dec 18, 2013
5,178
Joined
Dec 18, 2013
Messages
5,178
What do you have connected to the gates of the lower FETs?
Adam
 

Arouse1973

Adam
Dec 18, 2013
5,178
Joined
Dec 18, 2013
Messages
5,178
Ok so you have a connection error or your lower FETs are on. The circuit should be fine so you must have an error in your connections. Can you post a picture of your circuit?
Adam
 

Arouse1973

Adam
Dec 18, 2013
5,178
Joined
Dec 18, 2013
Messages
5,178
Just a minor thing, I noticed some of the MOSFETs have missing connections. You have used the wrong symbol, you have a 4 pin model with body diode connection.
Adam
 

Sufiyan Adhikari

Apr 8, 2016
6
Joined
Apr 8, 2016
Messages
6
Ok.. tried a new circuit today.
http://4.bp.blogspot.com/-0oqvn95WCf8/UPvndlg4kfI/AAAAAAAAAZw/pz0uShYp3qw/s1600/IR2110+-+2.png

This one.
Again all the mosfets blew up. Using 26v, and IRF540s
bellow is the arduino code used..


int HallState1; //Variables for the three hall sensors (3,2,1)
int HallState2;
int HallState3;
int HallVal = 1; //binary value of all 3 hall sensors

int mSpeed = 0; //speed level of the motor
int bSpeed = 0; //braking level
int throttle = 0; //this variable is used with analog in to measure the position of the throttle potentiometer
void setup() {
pinMode(2,INPUT); // Hall 1
pinMode(4,INPUT); // Hall 2
pinMode(7,INPUT); // Hall 3

pinMode(3,OUTPUT); // IN 1
pinMode(5,OUTPUT); // IN 2
pinMode(6,OUTPUT); // IN 3
pinMode(9,OUTPUT); // EN 1
pinMode(10,OUTPUT); // EN 2
pinMode(11,OUTPUT); // EN 3 // put your setup code here, to run once:

}

void loop() {
throttle = analogRead(0); //value of the throttle potentiometer
mSpeed = map(throttle, 512, 1023, 0, 255); //motoring is mapped to the top half of potentiometer
bSpeed = map(throttle, 0, 511, 255, 0); // regenerative braking on bottom half of pot
//mSpeed = 100; //used for debugging

HallState1 = digitalRead(2); // read input value from Hall 1
HallState2 = digitalRead(4); // read input value from Hall 2
HallState3 = digitalRead(7); // read input value from Hall 3 // put your main code here, to run repeatedly:

if (throttle > 511){
if (HallState1 == 1 && HallState2 == 0 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,0);
analogWrite(10,mSpeed);
analogWrite(11,0);
analogWrite(3,255);
analogWrite(5,0);
analogWrite(6,0);
}
else if (HallState1 == 1 && HallState2 == 0 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,0);
analogWrite(10,mSpeed);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,255);
}
else if (HallState1 == 0 && HallState2 == 0 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,mSpeed);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,255);
}
else if (HallState1 == 0 && HallState2 == 1 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,mSpeed);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,255);
analogWrite(6,0);
}
else if (HallState1 == 0 && HallState2 == 1 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,mSpeed);
analogWrite(3,0);
analogWrite(5,255);
analogWrite(6,0);
}
else if (HallState1 == 1 && HallState2 == 1 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,mSpeed);
analogWrite(3,255);
analogWrite(5,0);
analogWrite(6,0);
}
}
else {
if (HallState1 == 1 && HallState2 == 0 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,bSpeed);
analogWrite(5,0);
analogWrite(6,0);
}
else if (HallState1 == 1 && HallState2 == 0 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,bSpeed);
}
else if (HallState1 == 0 && HallState2 == 0 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,bSpeed);
}
else if (HallState1 == 0 && HallState2 == 1 && HallState3 == 1) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,bSpeed);
analogWrite(6,0);
}
else if (HallState1 == 0 && HallState2 == 1 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,bSpeed);
analogWrite(6,0);
}
else if (HallState1 == 1 && HallState2 == 1 && HallState3 == 0) {
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);

analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);
analogWrite(3,bSpeed);
analogWrite(5,0);
analogWrite(6,0);
}
}
}
 

Arouse1973

Adam
Dec 18, 2013
5,178
Joined
Dec 18, 2013
Messages
5,178
What pin numbers are you using for the HI and LO pins on the MOSFET driver? Why are you outputting no PWM on most of the pins?
Adam
 

Sufiyan Adhikari

Apr 8, 2016
6
Joined
Apr 8, 2016
Messages
6
I am using all the pwm pins. 3, 5, 6, 9, 10, 11

My first guess was that my mosfets were overlapping, leading to shoot through. Soo, I am first zeroing all the pins before changing the pwm logic.
 
Top