Just a simple question, not really releated to SimpleFoc.
Every BLDC has this kv constant, that describes how fast it rotates per Voll, say 50 RPM/V for a typical Gimbal motor or 1000kv for a RC-motor.
I wonder if it is possible to get faster rotations if one increases the rotation speed of the electrical rotating field. Or does the rotor of the motor an the rotating field then simply get out-of-snyc?
With SimpleFOC, max speed is generally limited by the CPU processing and/or sensor reading time (it will get out of sync). But with a regular ESC using back EMF sensing, the limit is usually mechanical (a well balanced motor will explode due to centrifugal force of the magnets exceeding the strength of the iron ring). Here’s a good video. The stator quickly combusts afterward due to the loss of the magnets inducing back EMF to oppose the applied voltage.
Gimbal motors are likely limited by winding insulation breakdown before you get to the necessary voltage to reach explosion RPM.
For continuous running, heat is the limiting factor (demagnetizing the magnets and/or burning the winding insulation). Usually it’s the copper loss that dominates (which depends on torque), but at very high speed with no load, eddy currents in the iron will be what kills it.
I agree that in the case of a regular ESC the rotation speed depends on the voltage applied: it rotates as fast as the BEMF voltage is identival to the applied voltage.
But in the case of a fixed voltage (as with FOC at maximum PWM): when increasing the speed of the rotation electrical field, the rotor also induces a BEMF voltage, and at some point, this BEMF is almost identical to the PWM voltage, so that there is only very little mechanical moment just to overcome the mechanical losses. Further increasing the rotation speed of the electrical field has no effect, because there is no force to further push the rotor, and electrical field and rotor go out of sync.
Do you agree?
You can still go faster with field weakening/phase advance.
You mean, the rotor will follow the rotating field above a rotation speed defined according to the kv constant?
Yep, field weakening allows spinning faster than voltage x kv (usually around 10-20%, I think) . But it’s better to use higher voltage if you can, because field weakening wastes some energy.
SimpleFOC doesn’t currently have a proper way to do field weakening, and may have trouble even reaching voltage x kv. The stator field lags behind the rotor due to the time delays mentioned before. Usually not enough to be a problem, but at high speed it becomes significant. This thread has some discussion on how to improve it Challenges going faster than certain rpm - #31 by dekutree64
No no, 2-3 times the speed
I was reaching 2000rpm with a hoverboard motor, that was the limit of the firmware.
Somebody on the forum was saying they could get like 1400 rads per second with simplefoc, idk the details. That’s like 1400/2pi*60 = 13375 rpm. The b-g431b-esc1 ran the open loop waveform generation at 37.5 khz, but that was the sine wave, if you use trapezoidal or something that’s probably a lot less overhead, also that’s with no optimization attempted for speed.
The only real limitation aside from mechanisms like that is the power output of the motor and limits on energy efficiency leading to heating, and in the case where it wasn’t under load perhaps the centrifugal force on the rotor. The centrifugal force is proportional to the square of RPM so it can become extreme. I don’t think the bearings would be a big deal except they would cause some slight load and heating at extreme rpm. But fundamentally brushless motors can generally be run at very high rpms if you want, there is no reason you can’t use a buck converter etc. to increase the supply voltage, they aren’t that expensive.
When I worked for Plettenberg-Motoren I’ve built BLDC inrunners capable of 100k RPM. The rotor was reinforced with Aramid-fibre to keep the magnets in place and of course it was perfectly balanced.
I’ve heard of the kevlar/aramid reinforcement thing. I know pcb spindles routinely are made for >100k rpm. They are ac induction motors, not BLDC motors, though. They usually use gas bearings, but I have seen some that use ceramic ball bearings rated for ~100k rpm, usually for dental milling, where they use milling machines to machine zirconia, not fully dense (porous), which is then sintered in to a fully dense tooth that makes a good implant. Cool stuff. You can actually buy just the motors if you had some compelling reason to drive something at that rpm that would be the bees knees. You need a special VFD, the standard output frequency limit is about 500 hz, but there is a variety that goes up to 3000 hz.
There are several limiting factors to the speed you can achieve, some like the motor’s properties (KV rating, voltage and current limits) and the physical construction have been mentioned, and also the MCUs speed at iterating on loopFOC.
But there are also electrical limits imposed by the possible PWM frequency, switching speed of the MOSFETs, or more generally speaking the bandwidth of the driver hardware.
Both for the MCU iteration speed and driver bandwidth, using lower pole count motors reduces the requirements and lets you reach higher speeds…
I’ve achieved ~2000 rad/sec on a 1pp motor with hall sensors with sfoc. I’ve also achieved 400 rad/sec with an 8pp motor with encoder, and 110 rad/sec with a 50pp stepper motor+encoder. All of these were limited by power supply voltage, not processing speed.
All used STM32 chips with hardware floating point support, and also didn’t use SPI sensors. Since then, I’ve found that if your SPI sensor and board layout supports a high enough clock frequency you can still get a good loop rate, but haven’t tested directly with it.