You are here

FOC and very low speeds

19 posts / 0 new
Last post
Last seen: 5 years 4 months 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: 5 years 2 months 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 years 1 month 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: 1 year 11 months ago
Joined: 2018-11-07 19:29
Posts: 16

any update on this?

Last seen: 3 years 5 months ago
Joined: 2019-01-11 10:35
Posts: 1

I guess no one figured it out still, eh?

Last seen: 6 months 4 weeks 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: 4 years 8 months ago
Joined: 2019-01-17 05:37
Posts: 11

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


Last seen: 2 weeks 6 days ago
VESC BronzeVESC FreeVESC GoldVESC OriginalVESC PlatinumVESC Silver
Joined: 2016-12-27 20:19
Posts: 844

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

Last seen: 2 weeks 2 days ago
VESC OriginalVESC Platinum
Joined: 2016-12-26 15:20
Posts: 490

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.

Last seen: 2 years 6 months ago
Joined: 2020-11-02 08:08
Posts: 2

Hi all, I'm new to the forum.
I've been playing with the VESC recently and I love the product!
I have an issue though that maybe someone can help me with:
I'm trying to run my motor at very low speed. I need a position control with very high torque, but a speed control with high torque at low speed will work fine. My motor is a prototype motor hence I don't have hall sensors, and I am trying to control it with FOC - duty cycle. 

My problem: at very low speeds (duty cycles <10%) the motor is coughing and has very little torque.
This is strange to me because when I run the detection of the hall sensors (which I don't have), the motor is rotated very slowly and the torque it generates is quite high! This is exactly the behavior I am looking for. I tried to look at the source code of the VESC firmware to understand what parameters are being used during the hall sensor identification phase but with no results.
Does anyone now what configuration is applied to the VESC when the hall sensors are being detected? Is there a way I can configure and control the motor to achieve the same controllability and torque the automated procedure achieves?

Thanks in advance for your support! 

Last seen: 2 months 1 week ago
Joined: 2022-07-10 13:53
Posts: 13

This sounds exactly like what I'm dealing with. High load FOC control with hall sensors, motor stutters and shakes and won't accelerate, especially when changing direction. Detection is flawless, once it's moving it works just fine. 

Last seen: 6 months 2 weeks ago
Joined: 2023-02-17 12:36
Posts: 2

Hello all! I am using a BLDC 10kw Golden Motor with a vesc 75/300 and I am facing a similar issue. The motor can not really operate at low rpm (below 300) and it stutters. It is weird, because during "run detection" it performs just fine at low rpm, also when I am detecting the forwards/reverse direction it operates at low rpm. Did anyone manage to resolve the issue? 


Last seen: 2 weeks 5 days ago
Joined: 2020-01-09 18:39
Posts: 5

I have the same problems with the current oscilations on low speed or no speed.

Last seen: 5 months 4 weeks ago
Joined: 2022-05-15 11:28
Posts: 1

I have the exactly same problem. How to manage a very low speed with the vesc software? I'm using an hoverboard motor. And during the test of the hall sensors, it look very slow and smooth. What are the parameter to adjust to have this result ? A lot of people seams to have the same issue. thank you. 

yuuichi kaneko
Last seen: 5 months 3 weeks ago
Joined: 2023-03-16 04:48
Posts: 1

I want to rotate at low speed (high torque), but I can't do it well at 100rpm-500rpm.
What kind of parameter adjustment should I do?

Last seen: 6 hours 50 min ago
Joined: 2023-04-10 13:25
Posts: 4

For all of you that have problems with this, I can assure that yo can drive with FOC at very low RPM. The only thing you should tweak it's the "minimum erpm" in the settings that comes with high value. 

I'm talking with a motor with hall sensor. 

Also, I have kind of the same problem with the torque at low speed. Actually it's not that it doesn't have enough torque, but that it takes a while 2-3 secs to reach the desirable torque. 

For example, I put the motor to spin at 30-50 rpm without charge and then try to stop it with the hand. Then it automatically increase the torque so I can't retain it with the hand but it takes as I said 2-3 seconds. Maybe there is something in the the vesc tool settings to tweak so it becomes more reactive? 

Chris Barth
Last seen: 2 weeks 6 days ago
Joined: 2021-11-03 00:10
Posts: 5

After a long time experimenting with VESC and escooter hub motors with hall sensors  I recently stumbled across a simple solution to all of my slow speed issues.  Stuttering, desyncing, ABS overcurrent.  In hindsight its so simple but for whatever reason it eluded me.  Ready... Click advance in the FOC wizard and lower openloop ERPM to 50, lower sensorless ERPM to 250.  After these changes it was running SO good.   One more change that may help, at least for hub motors is to lower the observer gain to as low as .50 , I usually get something like 3.14 after the wizard with observer gain but a hub motor by it very nature produces a good bit of back EMF, at least I assume this is what the observer is tracking. Lowering gain helps me with higher speed cogging issues.   

Last seen: 3 weeks 3 days ago
Joined: 2023-06-06 19:53
Posts: 1

Good afternoon, I’m setting up the flipski 75300 controller and the flipski 65161 motor using the Vesc program, with any option the mechanical rpm is 3600, this is very little for my EFOIL, I need to get at least 7000, or better yet 10000, how to achieve this, Flipski technical support has not been able to say anything smart for a month now

mironov sergey

Chris Barth
Last seen: 2 weeks 6 days ago
Joined: 2021-11-03 00:10
Posts: 5