Unable to reach maximum motor speed

Setup:

B-G431B-ESC1 motor controller
AS5600 magnetic sensor
Turnigy Aerodrive SK3 - 4240-620KV (0.017 ohm, 7 pole pairs) motor. from hobbyking
Current sensing, closed loop control (foc_current), running at 12k FOC iterations per second
24V bench psu

With a simpleFOC voltage limit of 4v, this motor spins at 500 rad/s (~5000rpm). With a bit more voltage and a lot of tuning, the maximum speed is around 600 rad/s. Based on the manufacturers specifications, speeds up to 1200 rad/s (12k rpm) should be possible with this motor.

What steps can I take to reach the full speed of this motor?

Can this be a sensor issue, software control limitation or hardware/motor limitation?

I’m fairly certain that further software tuning (PID, pwm frequency, software speed optimizations) will not help as the motor caps out around 600rad/s with a wide range of software parameters.

Hey @MotorController ,

Sounds like you’re being very systematic. I do think speed can be a sensor issue, as the AS5600 is a I2C sensor, and not very fast. I think you should be able to get some more speed from an SPI sensor or encoder.

I hooked up an AMT103-V optical encoder to the other side of my motor, it does appear to run smoother. I saw speeds up to 1026 rad/s (at 7V) before my board died :frowning:

The sensor readout over I2C is pretty fast. I have a software implementation that polls the sensor asynchronously while FOC calculations are running, the sensor always responds before loopFOC() is done. I suspect that the AS5600 sensor is inaccurate at speeds above 500rad/s.

I think I need a different board and/or motor as well. This board/motor combo is pretty reliable at 4V/10A/500rads, I’ve performed experiments for several weeks without issues. At higher power outputs, this board seems to crap itself pretty fast.

Hey @MotorController,

I think it is not just eh sensor, you’re actually bumping into the limitation of the voltage control of the library. It works very well on low speeds but the higher you go the lower the efficinecy.
You’d need to switch to the FOC current control in order to get to the full speeds.
We still did not integrate the current control for B-G431B-ESC1 in the library, but there is an awesome pull request that did exactly that. We will do our best to integrate it soon into the standard release but for now that is the only way to do it. :confused:

The pull request:
https://github.com/simplefoc/Arduino-FOC/pull/73

I coded that pull request, it works very well :slight_smile:

I’m looking for a new absolute position sensor that support high speeds and I2C, but I can’t find any chip that meets these specifications. My board does not support SPI.

If the motor is spinning at a decent speed, is it possible to infer the position with current feedback?

2 Likes

Oh, i feel so stupid now :smiley:
It’s been really too long from the time we talked about it, sorry about that.

Are you running the motor in the FOC current mode with the as5600?

There are ways to do the position acquisition by using only the current, but we do not support it yet. It’s college sensorless foc (not backemf). I think that the board has the back emf circuit also, maybe you could look into that too (again not supported but not too complicated to integrate, it’s like a hall sensor in essence).

I use the AS5600 with foc_current control mode.

If I decide to stick with this motor/sensor I will look into sensorless foc.