Sensorless Control of BLDC motor

void pulseMotor(int delayMicroSeconds)
{

if(currentDirection == motorDirection_CW)
Serial.println("Motor Running");
while (1)
{
digitalWrite(PWM1H, HIGH); //Q1
digitalWrite(PWM2L, HIGH); //Q5
digitalWrite(PWM1L, LOW);
digitalWrite(PWM2H, LOW);
digitalWrite(PWM3H, LOW);
digitalWrite(PWM3L, LOW);
delayMicroseconds(delayMicroSeconds); // wait for a period of time
digitalWrite(PWM1H, HIGH); //Q1
digitalWrite(PWM3L, HIGH); //G6
digitalWrite(PWM1L, LOW);
digitalWrite(PWM2H, LOW);
digitalWrite(PWM2L, LOW);
digitalWrite(PWM3H, LOW);
delayMicroseconds(delayMicroSeconds); // wait for a period of time
digitalWrite(PWM2H, HIGH); //Q2
digitalWrite(PWM3L, HIGH); //Q6
digitalWrite(PWM1L, LOW);
digitalWrite(PWM1H, LOW);
digitalWrite(PWM2L, LOW);
digitalWrite(PWM3H, LOW);
delayMicroseconds(delayMicroSeconds); // wait for a period of time
digitalWrite(PWM2H, HIGH); //Q2
digitalWrite(PWM1L, HIGH); //Q4
digitalWrite(PWM1H, LOW);
digitalWrite(PWM2L, LOW);
digitalWrite(PWM3H, LOW);
digitalWrite(PWM3L, LOW);
delayMicroseconds(delayMicroSeconds); // wait for a period of time
digitalWrite(PWM3H, HIGH); //Q3
digitalWrite(PWM1L, HIGH); //Q4
digitalWrite(PWM1H, LOW);
digitalWrite(PWM2H, LOW);
digitalWrite(PWM2L, LOW);
digitalWrite(PWM3L, LOW);
delayMicroseconds(delayMicroSeconds); // wait for a period of time
digitalWrite(PWM3H, HIGH); //Q3
digitalWrite(PWM2L, HIGH); //Q5
digitalWrite(PWM1L, LOW);
digitalWrite(PWM1H, LOW);
digitalWrite(PWM2H, LOW);
digitalWrite(PWM3L, LOW);
delayMicroseconds(delayMicroSeconds); // wait for a period of time
}
}
1 Like