Part Number: TMS320F280041C
Other Parts Discussed in Thread: DRV8353RS-EVM, C2000WARE-MOTORCONTROL-SDK, C2000WARE
The project under test is using the DRV8353RS-EVM dev kit with a custom created daughter card with the F280041C micro. Starting with the is08 overmodulation firmware, FOC is functioning in sensorless. We want to utilize hall effect sensors at low RPM then transition over to sensorless once the motor is spinning enough to reasonably estimate the angle.
To accomplish this, we are attempting to overwrite the estimator angle with EST_setAngle_rad, just before EST_run in the mainISR. The new angle is calculated using the following algorithm, (hallState is a mask of HALL_A | HALL_B | HALL_C):
switch(hallState)
{
case 5: // Reference 0
{
obj->angle_rad = MATH_PI * (180.0/180.0);
break;
}
case 4: // +60
{
obj->angle_rad = MATH_PI * (-120.0/180.0);
break;
}
case 6: // +120
{
obj->angle_rad = MATH_PI * (-60.0/180.0);
break;
}
case 2: // +/-180
{
obj->angle_rad = MATH_PI * (0.0/180.0);
break;
}
case 3: // -120
{
obj->angle_rad = MATH_PI * (60.0/180.0);
break;
}
case 1: // -60
{
obj->angle_rad = MATH_PI * (120.0/180.0);
break;
}
}
We confirmed that this is the appropriate order of the hall states.
The motor is running with these changes. However, it does not match our expectations. We are wondering if FOC is still running and is only slightly affected by the angle overwrite. Are we actually utilizing the halls or could there be remnants of FOC logic at play? Is there another method for using the hall effect sensors we should follow?