I am currently implementing sensorless control for PMSM using field-oriented control in combination with the AMCLIB_PMSMBemfObsrvDQ and the AMCLIB_TrackObsrv for the ARM Cortex M7F. I have a several kW motor with a mechanical speed sensor mounted to the shaft. I am using as a reference the DRM148 Rev.1, 02/2016.
I would like to achieve a situation where I have sensored closed-loop FOC with an observer running in parallel in the background fed with the right feedback information such that in a steady-state condition the measured (sensor) speed and the estimated observer speed converge. Referring back to Fig. 23, from the DRM148, the estimated observer speed is converging near the open-loop speed during start-up.
In the AMCLIB_PMSMBemfObsrvDQ I use the sensor speed output (converted to angular electrical rotor speed) as an input to the BEMF observer from standstill (so no open-loop startup). From 0 - 100 RPM the observer is initialized, whereas for speed >100 RPM it uses feedback and the init function is not used anymore. Furthermore, the requested voltages (Udq*) and currents (Idq*) are used for the BEMF observer input(s). I convert the AMCLIB_TrackObsrv output electrical rotor speed to mechanical speed in RPM and visually compare this to the actual rotor/sensor mechanical shaft speed. This all happens in closed-loop manner (sensored). However, the AMCLIB_TrackObsrv output speed still does not converge on a long time frame (e.g. >10 seconds) while keeping the rotor speed constant (e.g. 500 RPM). This is in no-load condition. When applying load to the motor shaft the estimated mechanical speed from the observer decreases rapidly.
What are possible causes for this difference in RPM between the true sensor mechanical speed and the estimated observer mechanical speed when using sensored closed-loop control?