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 ![]()
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
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){
