Hey guys,
I’ve been trying to get a 5010 360KV BLDC motor running with SimpleFOC 2.1.1 on a MKS ESP32 FOC V1.0 board. The goal is closed-loop position control at high speed with reasonable power consumption. After a lot of trial and error I got it working but the power draw at speed is way higher than I expected and I’m not sure if it’s a physics problem or something I’m doing wrong.
The motor has 7 pole pairs, supply voltage is 22V. I’m using MotionControlType::angle with TorqueControlType::foc_current. I tuned the velocity loop with Ziegler–Nichols method.
#define KC 0.24 // Ziegler-Nichols ultimate gain
#define TC 0.064 // Ziegler-Nichols ultimate period
motor.PID_current_q.P = 2;
motor.PID_current_q.I = 0;
motor.PID_current_d.P = 0;
motor.PID_current_d.I = 0;
motor.LPF_current_q.Tf = 0.002;
motor.LPF_current_d.Tf = 0.002;
motor.current_limit = 4.0;
motor.PID_velocity.P = 0.6 * KC; // 0.144
motor.PID_velocity.I = 1.2 * KC / TC; // 4.5
motor.PID_velocity.D = 0.075 * KC * TC; // ~0.001
motor.PID_velocity.output_ramp = 100.0;
motor.P_angle.P = 3;
motor.LPF_velocity.Tf = 0.05;
motor.velocity_limit = 100;
motor.voltage_limit = 10;
motor.foc_modulation = FOCModulationType::SpaceVectorPWM;
motor.controller = MotionControlType::angle;
motor.torque_controller = TorqueControlType::foc_current;
At around 90 rad/s the supply current is sitting at 2.5A. I’ve checked this with multiple ammeters and two different power supplies so it’s definitely not a peak-current reading. That’s 55W just to spin the motor unloaded, and the board gets noticeably warm. At standstill it’s 0.03A so it’s clearly speed-related.
So basically I’m wondering: is 55W at 90 rad/s just what this motor costs at that speed, or is something wrong with my setup? Any ideas appreciated.
5 Answers
5
Definitely something weird going on. 90rad/s = 860RPM, so it would need to exert 0.61Nm of torque to output 55W of mechanical power, and that would be 0.61*360/8.3=26.5A phase current. Quite a lot more than that motor or driver should be exposed to.
What are your phase currents reading? Or the d-q currents or dc current, just something to get a ballpark idea what’s going on.
Is it a 6PWM driver, like the MKS dual FOC? Then it’s worth increasing the driver.dead_zone because you might see shoot-through.
I had trouble with high inductance motors and checked the datasheet of the EG2133 drivers.
Their inbuild dead-time was as short as nano-seconds IIRC.
Hey @dekutree64,
Thank you for your response!
Here are the q- and d-currents measured with the onboard INA181A2 and printed to the serial output. I capped the maximum velocity at 80 rad/s for safety. At this speed, the power supply ammeter shows 0.85 A:
angle:0.000 vel:0.00 iq:-0.091 id:-0.069
angle:-23.243 vel:79.50 iq:2.347 id:1.407
angle:-63.324 vel:79.90 iq:1.823 id:2.275
angle:-103.423 vel:80.21 iq:1.447 id:1.681
angle:-143.452 vel:79.38 iq:2.135 id:1.283
angle:-183.575 vel:80.31 iq:1.970 id:1.978
angle:-223.638 vel:79.99 iq:1.516 id:1.967
angle:-263.696 vel:79.71 iq:1.871 id:1.486
angle:-303.836 vel:80.60 iq:1.986 id:1.860
angle:-343.876 vel:79.69 iq:1.471 id:2.285
angle:-383.954 vel:79.75 iq:1.770 id:1.565
angle:-424.051 vel:80.37 iq:2.115 id:1.333
angle:-464.107 vel:79.66 iq:1.656 id:2.412
angle:-504.204 vel:80.40 iq:1.597 id:1.882
angle:-544.275 vel:79.94 iq:2.309 id:1.062
angle:-584.332 vel:79.72 iq:1.980 id:2.080
angle:-624.456 vel:80.54 iq:1.539 id:1.989
angle:-664.484 vel:79.53 iq:1.857 id:1.116
angle:-704.602 vel:79.97 iq:2.093 id:2.115
angle:-744.703 vel:80.26 iq:1.559 id:2.064
angle:-784.742 vel:79.34 iq:1.673 id:1.303
angle:-824.855 vel:80.29 iq:2.089 id:1.878
angle:-864.912 vel:79.88 iq:1.592 id:2.350
angle:-904.981 vel:79.51 iq:1.452 id:1.620
angle:-945.107 vel:80.52 iq:2.107 id:1.709
angle:-982.213 vel:55.37 iq:0.275 id:0.416
angle:-995.199 vel:14.50 iq:0.131 id:-0.025
angle:-998.711 vel:3.85 iq:0.165 id:-0.100
angle:-999.616 vel:0.68 iq:0.239 id:-0.128
angle:-999.930 vel:0.05 iq:-0.047 id:-0.033
angle:-999.965 vel:0.06 iq:0.031 id:0.002
angle:-999.984 vel:0.02 iq:0.067 id:-0.017
angle:-999.993 vel:-0.00 iq:0.086 id:-0.050
Hey @o_lampe !
Thank you for your response!
Looking at the schematic of the FOC controller, I believe it uses a 3PWM configuration. Here is the circuit for one of the channels:
That’s even worse, because now you have to rely on the internal dead-time which is 100ns typical.
Seems the whole thing is meant for slow gimbal motors.
PS: I’m not sure about DT being too short, but I haven’t seen “Id” being so high either.
It was always near zero (with estimated_current it IS zero)