• Home
    • Copter
    • Plane
    • Rover
    • Sub
    • AntennaTracker
    • Mission Planner
    • APM Planner 2
    • MAVProxy
    • Companion Computers
    • Developer
  • Downloads
    • Mission Planner
    • APM Planner 2
    • Advanced User Tools
    • Developer Tools
    • Firmware
  • Community
    • Support Forums
    • Facebook
    • Developer Chat (Discord)
    • Developer Voice (Discord)
    • Contact us
    • Getting involved
    • Commercial Support
    • Development Team
    • UAS Training Centers
  • Stores
  • SWAG
  • About
    • News
    • History
    • License
    • Trademark
    • Acknowledgments
    • Wiki Editing Guide
Copter
  • Introducing Copter
  • AutoPilot Hardware Options
  • First Time Setup
  • First Flight
  • If A Problem Arises
  • Flight Features
  • Advanced Configuration
    • Autopilot Output Mapping
    • AutoTune
    • Auxiliary Function Switches
    • Auxiliary Function Switches (3.6 and earlier)
    • Baro Temperature Compensation
    • Boat mode
    • Bootloader Update
    • CAN Bus Setup
    • Compass Setup (Advanced)
    • Current Limiting and Voltage Scaling
    • Brushless ESCs
      • ESC Protocol
      • PWM ESCs Frame Rates
      • DShot
      • Autopilot Output Capabilities
      • BLHeli32 Compatibility
        • BLHeli32 Passthrough
        • BLHeli_32 ESC Telemetry
        • Connecting your ESCs for use with Dshot protocol and BLHeli_32 features
        • Use as Battery Monitor
    • Extended Kalman Filter (EKF)
    • Fence Failsafes
    • Flight Time Recorder
    • FPort Setup
    • GPIOs
    • GPS for Yaw (aka Moving Baseline)
    • Ground Control Station Only Operation
    • Ground Effect Compensation
    • In-Flight FFT Configuration
    • Independent Watchdog
    • LUA Scripting
    • Magnetic Interference
    • MAVLink2 Packet Signing (Security)
    • Motor Thrust Scaling
    • Non-GPS Navigation
    • Notification Devices (LEDs,Buzzer,etc.)
    • Notch Filter Configuration
    • Object Avoidance
    • Optical Flow Sensor
    • Parameter List (Full)
    • Parameter Reset
    • RC Input Channel Mapping (RCMAP)
    • RC Options
    • RunCam Camera Configuration and Control
    • Sensor Position Offset Compensation
    • Sensor Testing
    • Serial Port to Port Passthrough
    • Serial Port Configuration
    • Surface Tracking
    • Telemetry Port Setup
    • Terrain Following (Autonomous modes)
    • Tuning
    • UAVCAN Setup
    • UBlox GPS Configuration
  • Mission Planning
  • Logs
  • Peripheral Hardware
  • Traditional Helicopters
  • Tricopter
  • SingleCopter and CoaxCopter
  • HeliQuads
  • SkyRocket
  • Solo
  • Reference Frames
  • Use-Cases and Applications
  • Antenna Tracking
  • Simulation
  • Upcoming Features
  • User Alerts
  • Appendix
  • Full Table of Contents


Individual Partners SWAG Shop
 
Copter
  • Docs »
  • Advanced Configuration »
  • ESC Related Configuration
  • Edit on GitHub

ESC Related Configuration¶

ESC Protocol¶

Ardupilot supports several communication protocols with brushless motor ESCs:

  • Normal (standard PWM 1000uS - 2000uS pulse widths)
  • Oneshot
  • Oneshot125 (PWM pulse widths divided by 8)
  • DShot150 at 150kbaud (recommended)
  • DShot300 at 300kbaud
  • DShot600 at 600kbaud
  • DShot1200 at 1200kbaud

These are selected by the MOT_PWM_TYPE parameter on Copter or Q_M_PWM_TYPE on QuadPlanes for copter function motors. On Plane, other motors use Normal (PWM) protocol.

Note

The autopilot should be re-booted after changing the protocol type.

However,in Plane, other motors,like the traditional fixed wing’s main motor or Dual Motor Tailsitters (SERVOn_FUNCTION = 70 throttle, 73 throttle left and / or 74 throttle right), can be changed to another protocol using the SERVO_BLH_MASK parameter to specify the output number of the motor together with the SERVO_BLH_OTYPE parameter to select the protocol of these motors independently of that selected for the copter function motors.

Warning

Be sure your ESC can support the configuraton you select for it. Damage can occur otherwise. This includes frame rates discussed below.

PWM ESCs Frame Rates¶

ArduPilot defaults will work with all PWM ESCs. If the ESC is capable of a higher frame rate than 50Hz then RC_SPEED parameter can be set accordingly. This includes use with OneShot125 ESCs if they support the higher frame rates.

OneShot is a special case. It is Normal PWM, but at a frame rate that is the same as the main loop rate, SCHED_LOOP_RATE .

DShot¶

The DShot protocol can run at different speeds. ArduPilot supports four speeds:

  • DShot150 at 150kbaud (recommended)
  • DShot300 at 300kbaud
  • DShot600 at 600kbaud
  • DShot1200 at 1200kbaud

We recommend using the lowest baud rate, DShot150, as it is the most reliable protocol (lower baudrates are less susceptible to noise on cables). Higher values will be beneficial once ArduPilot’s main loop rate is capable of speeds above 1kHz.

Note

When an output is configured for DShot, the SERVOx_MIN/MAX parameters for that output will always be reset to 1000/2000, respectively, upon every boot, since DShot does not use these parameters and they can affect scaling in other sections of the code. The SERVOx_TRIM value will be reset to 1500 if it’s a reversible output, or 1000 if normal output setup in DShot.

Autopilot Output Capabilities¶

While all the servo/motor outputs of an ArduPilot autopilot are capable of Normal PWM operation at 50Hz frame rates, not all are capable of advanced configurations. And, usually, these configurations must apply to pre-designated groups of outputs, even if they are not all driving an ESC. So the following cautions apply:

  1. The 8 “MAIN” outputs of autopilots using an IOMCU (like PixHawk and Cube), cannot be used for protocols other than Normal PWM and OneShot. On these autopilots, only the additional “AUX” outputs can properly support OneShot125 and DShot protocols. If you attempt to set a “MAIN” output to DShot, then normal PWM output will occur, even though it has been set to a DShot protocol.
  2. For Pixracer and other boards without a separate IOMCU coprocessor, all servo/motor outputs can be used.
  3. Groups of outputs sharing a common timer, MUST have the same advanced configuration. Usually, these are specified in the autopilot’s hardware description linked from the Autopilot Hardware Options page. For example, if an output is configured for DShot in a group, then you cannot use another output in that group for Normal PWM ESC or normal PWM servo operation.

Note

Everytime the autopilot initializes, it sends a log message to the ground control station, showing which outputs are PWM/Oneshot/or DShot. The remaining higher numbered outputs are assigned as GPIOs.

../_images/RCOutbanner.jpg

BLHeli32 Compatibility¶

Ardupilot is compatible with BLHeli32 Passthrough and ESC Telemetry Functions:

  • BLHeli32 Passthrough
  • BLHeli_32 ESC Telemetry
  • Connecting your ESCs for use with Dshot protocol and BLHeli_32 features
  • Use as Battery Monitor
Next Previous

Questions, issues, and suggestions about this page can be raised on the forums. Issues and suggestions may be posted on the forums or the Github Issue Tracker.

Creative Commons License © Copyright 2020, ArduPilot Dev Team.