Hot motor and esc after short spin with no load in open loop velocity mode

First of all, thank you for the great development!

I have an overheating issue with my setup:
b_g431_esc with SunnySky X2212-13 (980KV) driven by 3S (around 12V) battery in open-loop mode


I have reduced the voltage limitation on the driver and motor as mentioned [1], [2]. My code:

#include <SimpleFOC.h>

//  BLDCMotor( pole_pairs )
BLDCMotor motor = BLDCMotor(7);
BLDCDriver6PWM driver = BLDCDriver6PWM(A_PHASE_UH,
 A_PHASE_UL,
 A_PHASE_VH,
 A_PHASE_VL,
 A_PHASE_WH,
 A_PHASE_WL);

// the setup routine runs once when you press reset:
void setup() {
  // driver config
  // power supply voltage [V]
  driver.voltage_power_supply = 12.0; 
  driver.voltage_limit = 2.4; // limit the source voltage because it heats up
  driver.init();
  //Link the motor and the driver
  motor.linkDriver(&driver);
  // limiting motor movements
  motor.voltage_limit = 1.2;   //half of 'driver.voltage_limit'
  //
  motor.velocity_limit = 15; // [rad/s]
  // open loop control config
  motor.controller = MotionControlType::velocity_openloop;
  // init motor hardware
  motor.init();
  delay(3000);  
}

//The loop routine runs over and over again forever:
void loop() {
  motor.move(3);
}

Are there any other limitations in the configuration that might help to reduce temperature in open loop velocity mode? Or does low-speed control require sensors?

Thank you in advance and any help is appreciated!

hi @Rytis_Augustauskas , welcome to SimpleFOC!

Your motor has only 100mΩ resistance, it’s quite low. Open loop mode will use whatever voltage you set as the limit, it can’t be “intelligent” about driving the motor, so it will be quite inefficient and develop lots of heat…

1.2V / 0.1Ω = 12A - that’s still quite a lot… you could try with a voltage limit of 0.1V, and see if you still get enough torque / speed, and if it helps.

I think that’s what you’ll find… in closed loop mode your current consumption should drop dramatically, and if its not loaded the motor probably won’t get hot at all.

1 Like

@runger, thank you for the detailed answer! I will try the closed-loop approach. I have a few AS5600 from Seeed, I tried to connect them to the ESC1 over I2C, however, there is a problem this sensor reading. On the Arduino board, this sensor works well. I saw that people are experiencing problems with this sensor. Unfortunately, I do not have the equipment to check in more detail.

Anyway, I will try troubleshooting and check for workarounds or other solutions with other sensors for a closed loop. There are plenty of ideas in the forum.
Thank you again for the answer!