RC motor speed variability


I have a question about my motors that I'm using for my quadcopter project.

Using analogWrite(pin, setpoint), they all have different output setpoints where they start spinning. 2/4 are around the 50% duty cycle mark (output is ~140-150), but one of them is quite a bit lower (~100), and the fourth one is quite a bit higher (~200). Is this to be expected? I would expect them to be hard to control reliably when they all have such different behavior.

Is the issue perhaps with my ESCs? The microcontroller itself doesn't seem to be the issue since when I swap the pins the behavior persists.

Any ideas?

What Arduino? What ESCs? What motors? Where's the code?

ESCs are normally driven using the Servo library not with analogWrite(). The standard analogWrite() PWM frequency is way too high for most ESCs to handle so I wouldn't be surprised if you get odd results


Using the test of starting to spin is probably not going to give you useful data about the motor behavior for flight.
Do all the motors produce reasonably similar thrust in flight conditions?
If it takes 80% throttle to hover, with some variance +/- then you are OK
If 3 motors produce hovering thrust around 80% throttle and one produces hovering thrust at 92%, then you probably need to purchase another set of motors.

Minor differences in thrust will not be a problem for the flight control PID logic to handle.