ESC/BLDC Motor behaves strangely

Hi everyone!

This is my first post on this forum, and I wanted to share a strange issue I encountered while building my self-made quadcopter.

While testing the brushless motors of the quadcopter I noticed that one motor wasn't spinning as expected: it was struggling moving and didn't accellerate when the throttle went up, and it got very hot, even if it spinned for very few seconds before I turned everything off. At first I thought there was a short circuit somewhere, and did the following things:

  • Checked if the screws where touching the motor's windings (They were not touching)
  • Checked the resistence between the motor's connections (about 500 milli Ohms each, as it should)
  • I made a diode measurement between the ESC's power lines and the connectors to the motor to see if the ESC was alive (There were about 0.4 Volts, so it was ok)
  • Check the voltage on the ESC (it was the same one of the battery)
  • Calibrate the ESC several times

What I would've done at this point was replacing the motor with another one to see if the problem was the motor itself or the ESC, but after some other tests, I noticed a very intresting thing: if the first signal the ESC receives is over 1200 us, it would work perfectly fine, but if it received a signal of 1000 us at any point followed by other signals, it would start to struggle and overheat again.

This is what appens with this code (first signal below 1200 us):

#include <Servo.h>

const int escs_pin[4] = {4, 5, 6, 7};

Servo ESC[4];

void setup() {
  ESC[3].attach(escs_pin[3]);

  ESC[3].writeMicroseconds(1000); // Starting up

  delay(5000);

  ESC[3].writeMicroseconds(1050);

  delay(1000);

  ESC[3].writeMicroseconds(1100);

  delay(1000);

  ESC[3].writeMicroseconds(1200);

  delay(1000);

  ESC[3].writeMicroseconds(1000);
}

Video 1

And this is what happens with this code (first signal over or equal to 1200 us):

#include <Servo.h>

const int escs_pin[4] = {4, 5, 6, 7};

Servo ESC[4];

void setup() {
  ESC[3].attach(escs_pin[3]);

  ESC[3].writeMicroseconds(1000); // Starting up

  delay(5000);

  ESC[3].writeMicroseconds(1200);

  delay(1000);

  ESC[3].writeMicroseconds(1100);

  delay(1000);

  ESC[3].writeMicroseconds(1050);

  delay(1000);

  ESC[3].writeMicroseconds(1000);
}

Video 2

If the problem was a short circuit, I don't think that the motor would've spin correctly in any way, but in this case it does, so i think the problem may be the ESC. Maybe I should modify the firmware to fix this, but even if I have an idea of how to do it, I don't really know what I should modify as I am new to the world of quadcopter and drones, and this is why I am here.
So why my ESC/motor behave this way? If the problem is the ESC, what do I have to modify in its firmware to fix the problem (if it is possible) ? Thank you in advance!

Also, I want to specify that for this project I am using an Arduino NANO RP2040, 3S LiPo Battery, 12A ESCs (BLHeli) and happymodel EX1204 5000kV motors with Gemfan 3025 propellers.

I am assuming you followed standard engineering design practices. Can you post your an annotated schematic showing how you have wired it. Be sure to include all connections, power, ground, and power sources. Links to technical information on the hardware devices is also needed.

Hi!
Those are the schematics and the datasheets that i think could be useful:

ESC to motor connection:

battery and ESC power connections:

ESC signal and BEC connections:
ESC_CONNS

Signal connections:
ARDUINO_CONNS
(Suspected malfunctional esc connected at D7)

High-side switch connections:

BTS50080 Switch datasheet

Motor informations

Unfortunately, i couldn't find many informations about the ESCs, as they are unbranded. All i know is that they have blheli firmware, can be programmed and have low voltage protection and over temperature protection.

I would also like to note that every part of the quadcopter works as it should but this motor / esc.

Try exchanging two motors. If the problem stays with the motor it is bad, if it stays with the esc it is bad or way out of calibration.

I will try, but It still remain very strange why the Motor works only when It starts with signals over 1200 us

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.