Can any one send bldc openloop speed control program using ARDUINO UNO ?

Iam doing an experimental bldc open loop sensor less (with out taking Back EMF signal) speed control using arduino UNO and I implemented hardware 3phase driver using IR2110 and at inverter stage using 6mosfet IRFZ44N. my hard ware is perfect working at give signal but my bldc program software not good(at the time of tesing eith my program motor will run but heated).

so anyone send a perfect bldc openloop control program using arduino UNO.

Which motor? What current levels? Why do you think open-loop control will
be good enough?

Iam working on bldc motor speed control by arduino using IR2131 mosfet gate driver. i wrote open loop program without using sensors but in my project motor rotate with a best speed on no load condition and getting heated. At load motor don’t rotate heating >:( . finally iam decided to plan closed loop program take feedback using halleffect sensors. i attached file bellow (IR2131 is the same function as a IR2110)

Can any one send the code bldc motor or fix bugs on this code suggest me how to proceed to next step for better result on load condition.

sketch_jun16b.ino (1.26 KB)

modified_codeir2131.ino (966 Bytes)

Why don’t you just post your code, instead of forcing people to download it?

Why is your topic title so SHOUTY?

int l1=5;
int l2=6;
int l3=9;
int l4=10;
int l5=11;
int l6=12;
int E=1;
void setup() 
{
  pinMode(l1,OUTPUT);
  pinMode(l2,OUTPUT);
  pinMode(l3,OUTPUT);
  pinMode(l4,OUTPUT);
  pinMode(l5,OUTPUT);
  pinMode(l6,OUTPUT);
  
  digitalWrite(l1,HIGH);
    digitalWrite(l2,HIGH);
  digitalWrite(l3,HIGH);
  digitalWrite(l4,HIGH);
  digitalWrite(l5,HIGH);
  digitalWrite(l6,HIGH);
}
void loop()
{
  int D=analogRead(A0);
 int  d=map(D,0,1023,1,20);
  
  int F=map(D,0,1023,1,2000);
  
  for(int i=0;i<F;i++)
  {
    digitalWrite(l1,LOW);
   delayMicroseconds(E);
  digitalWrite(l1,HIGH);
   delayMicroseconds(E);
  }
  digitalWrite(l1,LOW);
  delay(d);
   digitalWrite(l6,HIGH);
  

 digitalWrite(l5,LOW);
  delay(d);
   digitalWrite(l1,HIGH);
   
   
     for(int i=0;i<F;i++)
  {
  digitalWrite(l3,LOW);
   delayMicroseconds(E);
  digitalWrite(l3,HIGH);
   delayMicroseconds(E);
  }   
  digitalWrite(l3,LOW);
  delay(d);
  digitalWrite(l5,HIGH);
  
  digitalWrite(l4,LOW);
  delay(d);
   digitalWrite(l3,HIGH);
 
   
     for(int i=0;i<F;i++)
  {
   digitalWrite(l2,LOW);
   delayMicroseconds(E);
  digitalWrite(l2,HIGH);
   delayMicroseconds(E);
  }
  digitalWrite(l2,LOW);
  delay(d);
  digitalWrite(l4,HIGH);
 
   
  digitalWrite(l6,LOW);
  delay(d);
    digitalWrite(l2,HIGH);
  
}

Closed loop is essential for BLDC's, but you don't need sensors to achieve this
if you sense back-EMF instead - this is what all the cheap sensorless ESCs do.

You need to provide a (voltage-divided) version of each phase pin to an analog
pin, and read it at a high rate (reconfigure the ADC for faster less accurate readings).

You look for the mid-point crossing of the phase that is not currently being
driven - that is the basic time to commutate the driver. You can add a little
phase-lead to improve efficiency (to compensate for the delay in current
build up do to winding inductance).

You have to remove high frequency noise from the analog pins and only read
the voltage when you are driving the bridge (you need the two other phases
to be at 0V and +V to take a reading that will be mid-rail) - so you have
to think about how you time PWM and analog reads...

If you use hall sensors its much easier, just read 3 digital inputs.

Thanks for your response but in my motor will offer less torque at (400-1200)higher speed it can't handled load.

In my observation we need a good torque at good speed at load.

can i operate the motor at open loop at good speed and torque at load?

otherwise to develop a closed loop program to improve motor performance at load?

if their is any code modification guide to me I have a little knowledge at arduino program.

Its not trivial, you'll have to get an understanding first.

Hi,
What is the specification of your BLDC motor?

Tom… :slight_smile:

MOTOR SPECIFICATIONS:

VOLTAGE:12V

CURRENT:2.4A

TORQUE:0.5N-M

SPEED AT NOLOAD:2800RPM

Those figures can't be right, the electrical power is 28.8W and the mechanical 146.6W

Please post full details of the motor (part number, datasheet, photo, anything) to
get a feel for what it really is. How many wires?