2026-01-14 2:30 AM - edited 2026-01-14 2:32 AM
Hi,
I am using StevalESC001 board and MCSDK latest version to implement FOC on a custom motor.
I am facing a few issues while testing it with load. I am unaware of what might be the cause of these issues if anyone could direct me towards what might be happening it would be helpful.
First of all, during the startup motor sometimes starts spinning in anticlockwise direction that too at a very high speed. This behavior is random, I haven't yet identified any pattern into it, and it becomes more frequent when testing with load. I also noticed that sometimes Iq value shown in motor pilot is -10A initial which seems wrong, shouldn't it be 0 initially?
Another issue is with the Actual RPM and the RPM shown in motor pilot, the RPM shown by motor pilot is 300 to 500 more as compared to actual RPM the motor is spinning at. The difference increases as we increase the throttle. Also, motor seems to reach its capacity at only half throttle. It is producing only 600 g of thrust when expected at full throttle is 1kg. It seems to saturate at a 50% throttle and above that there is no change in speed, torque or thrust. Iq fluctuations also increase a lot, and it constantly makes correction, so the motor spins also fluctuate. Overall behavior is very unstable after 500g of thrust and 50% throttle, even the motor pilot starts twitching. All these testing errors are happening when load is applied, otherwise the motor works fine.
Also, after changing the throttle it is reflected pretty late in the motor. There is noticeable lag into execution.
I have a hypothesis that there is some issue in Iq and Id calculations due to FOC parameters not being tuned but I am not sure how to tune them. Can someone help me with this?
2026-01-21 10:45 PM - edited 2026-01-21 10:52 PM
Hello @GMA,
I think there was some misunderstanding regarding the speed range. What I meant to say was there was a constant speed difference between actual RPM of motor measured through an external device and the one shown by motor pilot.
for example - When the actual speed of motor was 950 rpm, motor pilot was showing it to be 1090 rpm.
At 50% throttle motor reaches around 3000 rpm with 600 g of thrust. After that when we increase the throttle, rpm of motor and thrust stays the same. At this point when actual speed is around 3000 rpm, motor pilot shows it to be around 3700 rpm.
PS - These measurements are when motor was tested with load. Without load also there is some misalignment, but the speed difference is less maybe 50 to 100 rpm.
2026-01-22 8:49 AM
Hello @Prof_McGonagall,
A test performed using MCSDK 6.4.1, a modified STEVAL-ESC001V1 evaluation board (Rshunt changed from 0.01 Ω to 0.1 Ω to match the 1.6 A maximum current of the motor), and the Shinano motor available in Motor Control Workbench.
For a "speed reference" of 996 RPM, the average reported speed was 990 RPM, and the measured speed using a tachometer was 1001 RPM.
In your use case, what is the difference between the "speed reference" available on the pilot interface and the measured value?
Using the open-loop drive type (see the Open loop description and usage chapter in the MCSDK User manual documentation), verify that the tachymeter measurement aligns with the given speed.
You can tune the speed PI regulator, which is accessible dynamically from the Motor Pilot tool in the Advanced configuration section, Currents_Speed tab (see attachment).