HELP. Problem with HIGHSIDE bootstrap IRF3205 parallel

I am a new Arduino user here, my name is Agi from Indonesia. Greetings. my english is not very good, and i write this using google translate :slight_smile:

I am currently working on a project making control
bldc 3 phase 12V 40A, but from last month I was hindered by several problems such as bootstrap and maybe incorrect coding too.
NOTE (this bldc is designed to be used as a starter for an engine, so it does not use a speed controller(constant speed)

For the device I use a 12V battery, arduino, irf3205 parallel x 5 on each step (x6 step = 30 total), 10ohm resistors at each gate, IC ir2101, 220uf / 35v bootstrap capacitor, 2 x 1n4148 parallel.
For Arduino frequencies I have tried it at 30Hz, 495Hz and 31kHz with a duty cycle of 98%. But none of them fit.

i've blown many mosfets and fuse in this experiment :grinning: :blush: please someone help to solve my problem.

below is the code for the arduino. if you have any suggestions to change the code, please let me know. thanks

void setup() {


  // put your setup code here, to run once:



      // INPUT DIGITAL SENSOR A

 pinMode(3, INPUT);

      // INPUT DIGITAL SENSOR B

 pinMode(4, INPUT);

      // INPUT DIGITAL SENSOR C

 pinMode(5, INPUT);

      // OUTPUT DIGITAL PHASE 1 (-)

 pinMode(6, OUTPUT);

      // OUTPUT DIGITAL PHASE 1 (-)

 pinMode(7, OUTPUT);

      // OUTPUT DIGITAL PHASE 1 (-)

 pinMode(8, OUTPUT);

      // OUTPUT PWM PHASE 1 (+)

 pinMode(9, OUTPUT);

     // OUTPUT PWM PHASE 2 (+)

 pinMode(10, OUTPUT);

      // OUTPUT PWM PHASE 3 (+)

 pinMode(11, OUTPUT);

    

    

    Serial.begin(9600);

    

  // put your main code 


}


void loop() { 


    

//here, to run repeatedly:

    

  TCCR1B = (TCCR1B & 0b11111000) | 1;

  TCCR2B = (TCCR2B & 0b11111000) | 1;

    

 

 //step0


if (digitalRead(3)==HIGH){


    if (digitalRead(4)==HIGH){


      if (digitalRead(5)==HIGH){


digitalWrite(6,LOW);digitalWrite(7,LOW);digitalWrite(8,LOW);

                analogWrite(9,0);analogWrite(10,0);analogWrite(11,0);}}}

      


 //step1 (0)(-)(+)


if (digitalRead(3)==HIGH){


    if (digitalRead(4)==LOW){


      if (digitalRead(5)==LOW){


digitalWrite(6,LOW);digitalWrite(7,HIGH);digitalWrite(8,LOW);

                analogWrite(9,0);analogWrite(10,0);analogWrite(11,249);}}}


    

 //step2 (+)(-)(0)


if (digitalRead(3)==HIGH){


    if (digitalRead(4)==HIGH){


      if (digitalRead(5)==LOW){


digitalWrite(6,LOW);digitalWrite(7,HIGH);digitalWrite(8,LOW);

                analogWrite(9,249);analogWrite(10,0);analogWrite(11,0);}}}


 //step3 (+)(0)(-)

    

if (digitalRead(3)==LOW){


    if (digitalRead(4)==HIGH){


      if (digitalRead(5)==LOW){


digitalWrite(6,LOW);digitalWrite(7,LOW);digitalWrite(8,HIGH);

                analogWrite(9,249);analogWrite(10,0);analogWrite(11,0);}}}


 //step4 (0)(+)(-)

    

if (digitalRead(3)==LOW){


    if (digitalRead(4)==HIGH){


      if (digitalRead(5)==HIGH){


digitalWrite(6,LOW);digitalWrite(7,LOW);digitalWrite(8,HIGH);

                analogWrite(9,0);analogWrite(10,249);analogWrite(11,0);}}}


 //step5 (-)(+)(0)


if (digitalRead(3)==LOW){


    if (digitalRead(4)==LOW){


      if (digitalRead(5)==HIGH){


digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,LOW);

                analogWrite(9,0);analogWrite(10,249);analogWrite(11,0);}}}


        


 //step6 (-)(0)(+)


if (digitalRead(3)==HIGH){


    if (digitalRead(4)==LOW){


      if (digitalRead(5)==HIGH){

PSX_20210405_233804.jpg

C6 needs to be something more like 100nF to 220nF, and must be ceramic, definitely not electrolytic which
are too inductive. The decoupling cap for the chip, C5 on the diagram must be ceramic and must be
very close to the chip (less than 1cm is good) - its value ought to be around 10 times C6 or larger (within
reason). I'd suggest using 220nF for C6 and 2.2µF to 10µF for C5, both ceramic (large surface mount
are preferred over through-hole).

Having a large value of C6, and no series resistor for the 1N4148 may mean the diode has fried, you need
to check it. Its common to add about 10 ohms in series with the diode to protect it.

Make sure the PWM frequency is not too low (4kHz to 16kHz is a good range), and never try to run
the system with 100% duty cycle as that defeats the bootstrap circuit. Something like 0% to 95% is
a good range to experiment with initially.

MarkT:
C6 needs to be something more like 100nF to 220nF, and must be ceramic, definitely not electrolytic which
are too inductive. The decoupling cap for the chip, C5 on the diagram must be ceramic and must be
very close to the chip (less than 1cm is good) - its value ought to be around 10 times C6 or larger (within
reason). I'd suggest using 220nF for C6 and 2.2µF to 10µF for C5, both ceramic (large surface mount
are preferred over through-hole).

Having a large value of C6, and no series resistor for the 1N4148 may mean the diode has fried, you need
to check it. Its common to add about 10 ohms in series with the diode to protect it.

Make sure the PWM frequency is not too low (4kHz to 16kHz is a good range), and never try to run
the system with 100% duty cycle as that defeats the bootstrap circuit. Something like 0% to 95% is
a good range to experiment with initially.

thank you very much MarkT for replying to my post I've been waiting for it from yesterday.

is it enough C6 220nf to drive 5 mosfets at once?
because I've read your comments in other people's posts, you said that "requires 220uf to drive 2 mosfet"?
is it safe if i use 470nf for C5 and 4,7uf for C6? or 2,2nf and 2,2uf are better?

if I change the diode using 1 schottcy 1A diode, does it still need a 10ohm resistor in series?

forgive me if my question is too much, because i am still a beginner. thank you

MarkT:
C6 needs to be something more like 100nF to 220nF, and must be ceramic, definitely not electrolytic which
are too inductive. The decoupling cap for the chip, C5 on the diagram must be ceramic and must be
very close to the chip (less than 1cm is good) - its value ought to be around 10 times C6 or larger (within
reason). I'd suggest using 220nF for C6 and 2.2µF to 10µF for C5, both ceramic (large surface mount
are preferred over through-hole).

Having a large value of C6, and no series resistor for the 1N4148 may mean the diode has fried, you need
to check it. Its common to add about 10 ohms in series with the diode to protect it.

Make sure the PWM frequency is not too low (4kHz to 16kHz is a good range), and never try to run
the system with 100% duty cycle as that defeats the bootstrap circuit. Something like 0% to 95% is
a good range to experiment with initially.

thank you very much markt, I have carried out the orders you gave me, and I managed to start the engine (without spark plugs attached).
but when the spark plug is attached to the engine, it makes the engine speed choked up.
the tool I use is 12v 4ah, arduino frequency 3.9kHz, voltage drop from 12.6v to 11.V, resistance of the coil is about 0.8 ohms
Is there any suggestion for me so that the motor can turn stronger when the spark plug is attached?
note: i want to keep using 12V power source

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.