Connect with us

BLDC Power Inverter Problem.. Need Help Urgently

Discussion in 'General Electronics Discussion' started by Sufiyan Adhikari, Apr 8, 2016.

Scroll to continue with content
  1. Sufiyan Adhikari

    Sufiyan Adhikari

    6
    0
    Apr 8, 2016
    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.
     

    Attached Files:

    Last edited: Apr 8, 2016
  2. Arouse1973

    Arouse1973 Adam

    5,164
    1,081
    Dec 18, 2013
    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
     
  3. Sufiyan Adhikari

    Sufiyan Adhikari

    6
    0
    Apr 8, 2016
    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.
     
  4. Arouse1973

    Arouse1973 Adam

    5,164
    1,081
    Dec 18, 2013
    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
     
  5. Sufiyan Adhikari

    Sufiyan Adhikari

    6
    0
    Apr 8, 2016
    Sorry about that.
    Here is my schematic. Plzz help.
     

    Attached Files:

  6. Arouse1973

    Arouse1973 Adam

    5,164
    1,081
    Dec 18, 2013
    What do you have connected to the gates of the lower FETs?
    Adam
     
  7. Sufiyan Adhikari

    Sufiyan Adhikari

    6
    0
    Apr 8, 2016
    All the 6 IRF540s are driven by Arduino Uno. The Zener diode are of 10v
     
  8. Arouse1973

    Arouse1973 Adam

    5,164
    1,081
    Dec 18, 2013
    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
     
  9. Arouse1973

    Arouse1973 Adam

    5,164
    1,081
    Dec 18, 2013
    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
     
  10. Sufiyan Adhikari

    Sufiyan Adhikari

    6
    0
    Apr 8, 2016
    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);
    }
    }
    }
     
  11. Arouse1973

    Arouse1973 Adam

    5,164
    1,081
    Dec 18, 2013
    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
     
  12. Sufiyan Adhikari

    Sufiyan Adhikari

    6
    0
    Apr 8, 2016
    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.
     
Ask a Question
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.
Electronics Point Logo
Continue to site
Quote of the day

-