Open Loop vs. Closed Loop

Hello All,

Just a quick question. Why does the simpleFOC open loop position mode work so well? Are there any drawbacks like when it is running open loop it is less efficient or something like that? I am confused because I can run my 360 kV motor extremely slow with out an encoder, yes it jitters a little bit but it works. From what I had heard slow actuation of BLDC motors is that it required closed loop or extremely difficult to implement control techniques like High Frequency Injection. I also ask because I see a lot of people on forum using encoders/closed loop.

Sincerely,

Logan

Hi Logan,

Depending on the motor, driver, etc… it can work quite well! It’s because @Antun_Skuric wrote such good code!

But, open loop is inherently much less efficient than closed loop, the difference may depend on the load, but it can be very large - with an unloaded small gimbal type motor, closed loop can be close to zero current consumption (0.1A or less) while open loop at the same speed is using 1.2A… correspondingly you can run that gimbal motor forever in closed loop, while in open loop it will get super-hot in a matter of minutes.

Other disadvantages become apparent in loaded or dynamic situations: with no sensor there is no way to detect when the motor is not reaching its position. So if you command a position but then hold the motor, then it will not reach its position, not know about this, and proceed as if the position was reached - so now all future positions have an “offset” due to this error.

Hi runger,

Thanks for the reply.

I think the second problem won’t be a problem for me because I will have potentiometer on the output of the gearbox because of the backlash in the gearbox and I can also use that potentiometer to compensate if it doesn’t reach the right angle.

For the first problem, could I just in the code write a function that increase the current and/or voltage limit proportional to amount the angle if off from target angle and then have its standby current just enough to hold the joint at the desired angle and thus have the motor not overheat or waste power? Also is there other power efficiency problems like worse electrical to mechanical energy conversion than closed loop because this would be a problem for me because I want my motors to output as much power as they can when needed.

Sincerely,

Logan

Then you have closed loop from the point of view of motion control :slight_smile: just not for the motor control i.e. no FOC.

In theory yes. But in practice this will be difficult. After all, this is more or less what the FOC control of SimpleFOC does, but by directly controlling the motor, so from a much better position than the “outside”, so to speak. And controlling these large currents isn’t such an easy problem.

Unfortunately, yes. The closed loop FOC control is (theoretically) optimal in terms of getting torque out of the motor. Open loop will have lower torque at the same power, and the problem will be worse at lower speeds. But this is getting into a domain where my knowledge is a bit insufficient, and someone else in this forum would know much more about it…

Thanks for your replies, they are very helpful. :grinning: :grinning: :grinning: