Hi Marco,Normally, the ESCs need to be calibrated to throttle range expected from the receiver's throttle channel, however nowadays some multi-rotor ESCs come with a preset throttle range.The standard procedure is:1) IMPORTANT: REMOVE THE PROPELLERS. 2) Power up your transmitter and move your throttle stick to its maximum position.3) Power up your ESC, the ESC should detect the throttle high and enter calibration mode.4) Wait for the ESC to acknowledge the throttle max. positon with a beep or series of beeps.5) Move the throttle stick to the low position.6) Wait for the ESC to acknowledge the throttle min. position with a beep or series of beeps.7) The ESC has been calibrated.8 ) Unplug the ESC power cable.Most RC commercial flight controllers have an ESC calibration mode that allows the throttle channel from the RC receiver to pass through to the motor outputs. (The latest pass through serial data to configure the ESCs). If you don't have an ESC calibration routine then it's possible to individually connect the ESCs to the RC receiver's throttle channel, repeating the procedure above 4 times (for a quadcopter). If you're not using an RC receiver then it's necessary for whatever device you're using on the throttle channel to produce 50Hz, PWM pulses within a 1000us to 2000us (min-max) range. Standard RC receivers produce pulses around 1100us to 1900us.It's normal for some ESCs to generate a periodic beep when no signal is detected.In the initial stages, I'd suggest just removing the props and driving the ESCs and motors directly with whatever device you intend to control your quadcopter. It won't fly, but will test your receiver and ESCs/motors are working correctly. Once you've got that going, only then add the gyro/accelerometer, PID loops and motor mixing.Note: Don't run the motors at maximum throttle, (when you don't have the propellers attached for testing), or they'll burn out.
Note: Don't run the motors at maximum throttle, (when you don't have the propellers attached for testing), or they'll burn out."
What i am doing to arm the ESCs is sending a 1000ms pulse when the start but that seem to not be the right way to do it.
analogWrite(11, map(sensorVal, 0, 2000, 0, 255));
Hi Marco,Yes that's the right way. A 1000ms pulse should put the ESC on standby and stop it from periodically beeping. Gradually increading the duty cycle (pulse width) from 1000us to 2000us should spool up the motor and slowly increase the motor's speed.To control the ESCs for a quadcopter the frequency of the PWM needs to be somewhat faster than the 50Hz used by the Arduino servo library. For the Nano you'll need to use the analogWrite() function on the PWM pins that provide 490Hz, these are 3, 11, 9 and 10. As analogWrite() has an 8-bit resolution its range is from 0 to 255, therefore it's necessary to map the 0 to 2000 for the ESC on to 0 to 255 using the Arduino map() function, for example:Code: [Select]analogWrite(11, map(sensorVal, 0, 2000, 0, 255));Obviously, mapping from 0 to 2000 down to 0 to 255 you're losing resolution, but that's the best PWM resolution on all 4 motors that the Nano can manage.