You are here

FOC and very low speeds

9 posts / 0 new
Last post
Last seen: 9 months 2 weeks ago
Joined: 2018-06-04 11:03
Posts: 1
FOC and very low speeds

I try run a BLDC motor from a hoverboard with VESC. My challange is to run the motor very slow, about 10rpm.

I started with FOC using the integrated hall sensors. Fine but it is not possible to rotate the motor really slow.

I attached an AS5047 encoder because I thought that the resolution of the hall sensors is probably not sufficient to let the speed PID controller work properly.

With the AS5047 is see the following

setting duty cycle to about 12% (no PID) rpm is swinging between 600rpm and 800rpm.

with lower duty cycles about 1% (no PID) rpm is jumping to 30 going back to 0 for a while than become -10 and jump back to 30. Motor is not really spinning.

Activating the PID speed controller does not help.

Am I totally wrong about what can be done with a BLDC motor? With a brushed motor and a high resolution encoder it is no problem to run 10rpm.

Last seen: 6 months 3 weeks ago
Joined: 2018-09-18 07:28
Posts: 8

Did you fix this issue? I am having the same problem. With P control (I & D set to zero) the motor cogs, does not really sping and the RPM values keep oscillating.

Last seen: 2 months 3 weeks ago
Joined: 2017-09-12 17:26
Posts: 65

With the VESC it is possible as well, the servo mode proofs that. Unfortunately the servo mode is not suited for continues rotation.


So unless the VESC firmware gets optimized for that, it won't work. 

(Having said that, why a fixed duty and no load causes oscillations beats me)

Last seen: 2 weeks 4 days ago
Joined: 2018-11-07 19:29
Posts: 16

any update on this?

Last seen: 2 weeks 6 days ago
Joined: 2019-01-11 10:35
Posts: 1

I guess no one figured it out still, eh?

Last seen: 2 weeks 1 day ago
Joined: 2018-11-18 14:09
Posts: 83


I'd tell that in DC mode (FOC+HALL) the slow RPM works perfectly. The min. RPM I get is with DC =0,01 is about 3 RPM (eRPM is then about 200 because of my high pole count). The motor "coughs" due my high ineritia mass (~12kg), but it works. As soon as I use current mode (which is default for the VESC) and no load it's not possible to have low RPM due to the current equivalent it tries to reach.

Maybe this is not valid for PID usage, but maybe the info helps.



Pedelec usage in combination with a GoldenMotor MagicPie3 BLDC

stone_1706's picture
Last seen: 1 month 1 week ago
Joined: 2019-01-17 05:37
Posts: 11

It's easy , mount a  gearbox on the motor .


Last seen: 4 days 20 hours ago
VESC BronzeVESC GoldVESC OriginalVESC Silver
Joined: 2016-12-27 20:19
Posts: 219

Do you run the AS5047 at 5V or 3.3V? 3.3V works better. There is less noise. 

Last seen: 6 days 10 hours ago
VESC FreeVESC Original
Joined: 2016-12-26 15:20
Posts: 300

Can you make a video of what it looks like? The speed controller runs much slower than the position controller, and at low speeds the cogging torque might interfere with the performance. It might be possible to tweak the PID parameters and the speed tracker to get better performance, but it might not be easy to reliably get a responsive and accurate speed estimate, even at low speeds. Also keep in mind that the RPM is in ERPM, and has to be divided by half the number of poles to get the mechanical RPM.

If accurate speed control a very low speeds is desired, it might be better to run position control and follow a position that rotates at the desired speed. The position controller runs at much higher rate, and getting a fast and accurate position update a low speeds is much easier than a speed update when using an encoder.