Operation manual for BLHeli_32


* Before Reading: This is the operation manual for BLHeli_32 ARM Rev32.x that published at Github by team BLheli. It is also can be downloaded here.

BLHeli_32 firmware is the third generation BLHeli, following base BLHeli and BLHeli_S.  BLHeli_32 is designed for superior functionality and performance, primarily in multirotors and runs on ARM 32bit MCUs.

All codes use damped light mode. Damped light does regenerative braking, causing very fast motor retardation, and inherently also does active freewheeling.

The code supports features to prevent sync loss. There are tuneable parameters that can make the code run well even in the most demanding situations, although default settings will work excellently in normal operating environments.

The code supports regular 1-2ms pulse width input, as well as Oneshot125 (125-250us), Oneshot42 (41.7-83.3us) and Multshot (5-25us). Dshot signalling is supported at any rate up to at least Dshot1200. The input signal is automatically detected by the ESC upon power up.

The code also supports a beacon functionality, where the ESC will start beeping after a given time of zero throttle. This can be very useful for finding lost crafts.

Programming parameters:

Rampup Power:

Rampup power can be set to relative values from 3% to 150%. This is the maximum power that is allowed when ramping up at low rpms and during startup. For low rpms, the maximum power to the motor is limited, in order to facilitate detection of low BEMF voltages.

Rampup power also affects bidirectional operation, as the parameter is used to limit the power applied during direction reversal.

During startup, the actual applied power depends on throttle input, and can be lower than the maximum level set by the rampup power parameter, but the minimum level is a quarter of the maximum level.

Motor Timing:

Motor timing can be set between approximately 10 and approximately 310 in approximately 10 increments (actual accurate values here are 15/16ths of a degree).

Typically a medium setting will work fine, but if the motor stutters it can be beneficial to increase timing. Some motors with high inductance can have a very long commutation demagnetization time. This can result in motor stop or stutter upon quick throttle increase, particularly when running at a low rpm. Setting timing higher will allow more time for demagnetization, and often helps.

This parameter can also be set to auto. I this case the code monitors demagnetization time, and keeps timing as low as possible without having issues with demag. On well behaved motors, timing can be low in the entire power range, and thereby max power can be reduced. On not so well behaved motors, timing is increased as needed, and thereby improves margins against sync loss.

PWM frequency:

Motor pwm frequency can be programmed between 16kHz and 48kHz. Higher pwm frequency can run motors smoother. Programmable frequency also allows for moving of small but potentially disturbing humps in the throttle response. All ESCs have these bumps, with BLHeli_32 they can be moved in the rpm range, to a place where the system has low sensitivity to them.

Demag Compensation:

Demag compensation is a feature to protect from motor stalls caused by long winding demagnetization time after commutation. The typical symptom is motor stop or stutter upon quick throttle increase, particularly when running at a low rpm. As mentioned above, setting high commutation timing normally helps, but at the cost of efficiency.

Demag compensation is an alternative way of combating the issue. First of all, it detects when a demag situation occurs.

– In this situation, there is no info on motor timing, and commutation proceeds blindly with a predicted timing.
– In addition to this, motor power is cut off some time before the next commutation.

A metric is calculated that indicates how severe the demag situation is. The more severe the situation, the more power is cut off. When demag compensation is set to off, power is never cut. When setting it to low or high, power is cut. For a high setting, power is cut more aggressively.
Generally, a higher value of the compensation parameter gives better protection.

If demag compensation is set too high, maximum power can be somewhat reduced for some motors.

Maximum Acceleration:

Maximum acceleration can be set between 0.1%/ms and 25.5%/ms. It can also be set to maximum, in which case acceleration is not limited. Limiting acceleration is primarily intended as a backup parameter that can be used in cases where too hard acceleration gives desyncs.

When setting to e.g. 10%/ms, it means that the power applied to the motor is not allowed to increase by more than 10% per millisecond.

Motor Direction:

Motor direction can be set to fwd/rev/bidirectional/bidirectional rev.
In bidirectional mode, center throttle is zero and above is fwd rotation and below is reverse rotation. When bidirectional operation is selected, throttle calibration is disabled.

Beep Strength:

Sets the strength of beeps under normal operation.

Beacon Strength:

Sets the strength of beeps when beeping beacon beeps. The ESC will start beeping beacon beeps if the throttle signal has been zero for a given time. Note that setting a high beacon strength can cause hot motors or ESCs!

Beacon Delay:

Beacon delay sets the delay before beacon beeping starts.

Throttle Cal Enable:

If disabled, throttle calibration is disabled.

Minimum throttle, maximum throttle and center throttle:

These settings set the throttle range of the ESC. Center throttle is only used for bidirectional operation. The values given for these settings are for a normal 1000us to 2000us input signal, and for the other input signals, the values must be scaled.

For Dshot input signal, these settings have no effect.

Temperature Protection:

Temperature protection can be enabled or disabled. And the temperature threshold can be programmed. The programmable threshold is primarily meant as a support for hardware manufacturers to use, as different hardwares can have different tolerances on the max temperatures of the various components used.

Low RPM Power Protect:

Power limiting for low RPMs can be enabled or disabled. Disabling it can be necessary in order to achieve full power on some low kV motors running on a low supply voltage. However, disabling it increases the risk of sync loss, with the possibility of toasting motor or ESC.

Low Voltage Protection:

Low voltage protection can be set between 2.5V and 4.0V per lipo cell. Or it can be disabled.

When enabled, it will limit power applied to the motor if the battery voltage drops below the programmed threshold. This feature is primarily intended for fixed wing crafts.

Current Protection:

Current protection can be enabled to limit current. If enabled, then current will be limited to maximum the programmed value. The reaction time of the current limiting is quite fast, so current will also be limited during accelerations.

Brake On Stop:

Brake on stop can be set between 1% and 100%, or disabled. When not disabled, the given brake force will be applied when throttle is zero. For nonzero throttle, this setting has no effect. This feature is primarily intended for fixed wing crafts with folding props.

On some ESCs this setting is not linearly programmable, it will just be enabled (at 100% force for any setting 1%-100%) or disabled (this applies to ESCs that have “EN/PWM” style fet drivers).

LED Control:

LEDs can be controlled on ESCs that support it. Up to 4 LEDs can be turned on or off.

Arming sequence:

The figure below shows an example of throttle value versus time.

At power on, an activated ESC beeps 3 beeps.

When throttle signal is detected, it beeps one low tone beep. This signals that input signal is detected. Then, when or if throttle is zero, it beeps one high tone beep. This signals the end of the arming sequence, and the ESC is ready to run.

Also, if more than 50% throttle is detected at arm start, the ESC starts throttle calibration.

If the esc is armed and sees zero throttle for a given time, it beeps beacon beeps, which are approximately one beep per three seconds.

Input signal:

Available throttle calibration range is from 1000us to 2000us, and the difference between minimum and maximum throttle must be more than 140us (70us in bidirectional mode). If a calibration is done where the difference is less than 140us (70us), the maximum will be shifted so that the difference is 140us (70us).

Oneshot125 mode works just the same as regular 1-2ms mode, the only difference is that all timing is divided by 8. And the same for Oneshot42, where all timing is further divided by 3. Multishot also works similarly, except the input signal range is 5-25us.

Dshot is supported at any rate, up to at least Dshot1200. When the input signal is Dshot, throttle calibration is disabled, and the throttle calibration values are ignored.

Input signal rates up to at least 32kHz are supported. But please note that higher input signal rates put a heavier load on the MCU, and will reduce the maximum erpm that the ESC can handle.

Thermal protection:

The ESC measures temperature within the MCU and limits motor power if the temperature is too high. Motor power is limited over a range:

– If the temperature is above the threshold, motor power begins to be limited.
– If the temperature is above the threshold plus approximately 150C, motor power is limited to 25%.

Motor power is not limited below 25%.

Stall protection:

If the motor has attempted to start but not succeeded for a few seconds, it will stop attempting and wait for throttle to be zeroed before attempting again.

Regenerative braking / active freewheeling:

Damped light mode is implemented by doing regenerative braking, and inherently active freewheeling is also implemented.

Then losses due to braking are counteracted by the reduced losses of active freewheeling.

Motor PWM:

The motor PWM frequency can be programmed between 16kHz and 48kHz. The resolution is 2048 steps for MCUs running at 48MHz for a pwm frequency of 24kHz.

Beeps – Normal operation:


After this, the motor will run.

Beeps – Throttle calibration:

At this point throttle calibration values are stored. You may remove power from the ESC, or just continue running your ESC.

Beeps – Not activated ESC:

All ESCs shall be activated during manufacturing.

If for some reason this is not done, the ESC will beep like this upon powerup, before the normal operation beep sequence starts:

Beeps – Activation failed ESC:

All ESCs shall be activated during manufacturing.

If for some reason activation has failed and the ESC is not regarded as a valid BLHeli_32 unit, the ESC will beep like this upon powerup, before the normal operation beep sequence starts:

In this case the ESC will only accept 1-2ms pwm input signal.

Download the USER MANUAL OF BLHELI_32.