JT Park

Stall Error occurred

Discussion created by JT Park on Nov 21, 2017
Latest reply on Nov 24, 2017 by Matej Pacha

Hello,

 

Using MC9S12ZVML128_BLDC_Sensorless S/W, I tested BLDC motor by own board.

Stall error was occurred when there is load on BLDC motor.

Please refer to the attached.

stall check function is as below.

 

void StallCheck(void)

{

           tU16 max = 0, min = 65535;

 

           if (periodZC_F_PhA>max){

                      max = periodZC_F_PhA;

           }

           if (periodZC_F_PhA<min){

                      min = periodZC_F_PhA;

           }

           if (periodZC_F_PhB>max){

                      max = periodZC_F_PhB;

           }

           if (periodZC_F_PhB<min){

                      min = periodZC_F_PhB;

           }

           if (periodZC_F_PhC>max){

                      max = periodZC_F_PhC;

           }

           if (periodZC_F_PhC<min){

                      min = periodZC_F_PhC;

           }

           if (periodZC_R_PhA>max){

                      max = periodZC_R_PhA;

           }

           if (periodZC_R_PhA<min){

                      min = periodZC_R_PhA;

           }

           if (periodZC_R_PhB>max){

                      max = periodZC_R_PhB;

           }

           if (periodZC_R_PhB<min){

                      min = periodZC_R_PhB;

           }

           if (periodZC_R_PhC>max){

                      max = periodZC_R_PhC;

           }

           if(periodZC_R_PhC<min){

                      min = periodZC_R_PhC;

           }

 

           periodZcAvrg = period6ZC / 6;

 

           if((max > (periodZcAvrg << 1)) || (min < (periodZcAvrg >> 1))){

                      if (stallCheckCounter < STALLCHECK_MAX_ERRORS){

                                  stallCheckCounter++;

                      }

           }else{

                      if (min < STALLCHECK_MIN_CMT_PERIOD){

                                  if (stallCheckCounter < STALLCHECK_MAX_ERRORS){

                                             stallCheckCounter++;

                                  }

                      }else{

                                  if (stallCheckCounter > 0){

                                             stallCheckCounter--;

                                  }

                      }

           }

           if(stallCheckCounter >= STALLCHECK_MAX_ERRORS){

                      StallError = 1;

           }else{

                      StallError = 0;

           }

}

 

Would you provide solution for this issue?

Thanks.

Attachments

Outcomes