SPRUHJ1I January 2013 – October 2021 TMS320F2802-Q1 , TMS320F28026-Q1 , TMS320F28026F , TMS320F28027-Q1 , TMS320F28027F , TMS320F28027F-Q1 , TMS320F28052-Q1 , TMS320F28052F , TMS320F28052F-Q1 , TMS320F28052M , TMS320F28052M-Q1 , TMS320F28054-Q1 , TMS320F28054F , TMS320F28054F-Q1 , TMS320F28054M , TMS320F28054M-Q1 , TMS320F2806-Q1 , TMS320F28062-Q1 , TMS320F28062F , TMS320F28062F-Q1 , TMS320F28068F , TMS320F28068M , TMS320F28069-Q1 , TMS320F28069F , TMS320F28069F-Q1 , TMS320F28069M , TMS320F28069M-Q1
This startup method, with Rs recalibration disabled, is commonly utilized when offsets might have changed, but the motor has not changed. A typical scenario when this approach is used is when different boards run the same motor. Another example is when the same board has been running for a long period of time and the hardware components for the voltage and current feedback might have changed in value due to ambient conditions or component tolerances. In this last example it is recommended to run the offsets recalibration as needed depending on the quality of the hardware components used in a particular board.
Figure 11-3 shows the states when running only offsets recalibration before running in closed loop.
Figure 11-4 shows the current and output voltage waveform associated with the offset state. Before running the motor in closed loop, the offsets are recalibrated with a fixed 50% duty cycle. After that, the motor is then run in closed loop, where the voltage and current would depend on the commanded speed as well as the mechanical load.
The timing associated with the offset state is explained in detail in Section 7. In order to enable offset recalibration and disable Rs recalibration the following two functions must be called prior to enabling the controller:
// Enable Offset Recalibration
CTRL_setFlag_enableOffset(handle, TRUE);
// Disable Rs Recalibration
EST_setFlag_enableRsRecalc(obj->estHandle, FALSE);
The controller is enabled by calling the following function:
// enable the controller
CTRL_setFlag_enableCtrl(ctrlHandle, TRUE);