Operation manual for BLHeli SiLabs Rev14.x BLHeli firmware is designed for use in brushless ESCs in helicopters, multirotors, planes and more. The firmware supports a multitude of ESC hardware.
All codes support features to prevent sync loss. This is mostly required in multirotor applications. There are tuneable parameters that can make the code run well with almost any motor. All codes support 1kHz, 2kHz, 4kHz, 8kHz and 12kHz PWM input signal in environments where the ESC takes its input from a source that would normally drive a brushed motor. The code also supports regular 1-2ms pulse width PPM input or OneShot125 (125-250us), at a rate up to almost 1kHz.
Programming functions and parameter values: Programming parameter value table main: Function 1 - Governor P gain 2 - Governor I gain 3 - Governor mode 4 - Governor range 5 - Low voltage limit (/cell) 6 - Startup power** 7 - Commutation timing 8 - Pwm frequency 9 - Demag compensation 10 - Rotation direction 11 - Input pwm polarity 1 0.13 0.13 Tx High Off 0.031 Low High Off Normal Positive 2 0.17 0.17 Arm* Middle 3.0V 0.047 MediumLow Low Low Reversed Negative 3 4 0.25 0.38 0.25 0.38 Setup Off Low 3.1V 3.
Programming parameter value table tail: Function 1 - Tail gain 2 - Tail idle speed 3 - Startup power** 4 - Commutation timing 5 - Pwm frequency 6 - Pwm dither 7 - Demag compensation 8 - Rotation direction 9 - Input pwm polarity 1 0.75 Low 0.031 Low High Off Off Normal Positive 2 3 4 0.88 1.12 1.00 MediumLow Medium MediumHigh 0.047 0.063 0.094 MediumLow MediumHigh Medium Low DampedLight* 7 31 15 Low High Reversed Bidirectional Negative - 5 1.25 High 0.125 High 63 - 6 0.188 - 7 0.25 - 8 0.38 - 9 0.
Programming parameter value table multi: Function 1 - Closed loop P gain 2 - Closed loop I gain 3 - Closed loop mode 4 - Multi gain 5 - Startup power** 6 - Commutation timing 7 - Pwm frequency 8 - Pwm dither 9 - Demag compensation 10 - Rotation direction 11 - Input pwm polarity 1 0.13 0.13 HiRange 0.75 0.031 Low High Off Off Normal Positive 2 3 4 0.17 0.25 0.38 0.17 0.25 0.38 MidRange LoRange Off 0.88 1.12 1.00 0.047 0.063 0.
Programming parameters for main: In the governor “tx” mode, the throttle value while running sets the speed target for the governor. In this mode, the throttle curve when flying should be flat. In the governor “arm” mode the maximum throttle seen during the arming sequence will set the speed target for the governor. Note that governor “arm” mode is not supported for PPM input signal. In the governor “setup” mode the governor target is stored in the ESC.
Programming parameters for multi: In the closed loop mode, the throttle value while running sets the rpm target of the motor. Closed loop P gain sets the proportional gain for the rpm control loop. This setting controls the gain from speed error to motor power. Closed loop I gain sets the integral gain for the rpm control loop. This setting controls the gain from integrated speed error (summed over time) to motor power. Closed loop mode sets the range of speeds that the control loop can operate on.
Pwm dither is a parameter that adds some variation to the motor pwm off cycle length. This can reduce problems (like throttle steps or vibration) in rpm regions where the pwm frequency is equal to harmonics of the motor commutation frequency, and it can reduce the step to full throttle. It is primarily beneficial when running damped light mode. Dither is not applied in closed loop mode.
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 described earlier, setting high commutation timing normally helps, but at the cost of efficiency. The demag compensation is an alternative way of combating the issue. First of all, it detects when a demag situation occurs.
Arming sequence: The figure below shows an example of throttle value versus time. 100% Max throttle during arm Power on 3 beeps Arm start 1 low beep 0% Arm end 1 high beep Run Time At power on, the ESC beeps 3 beeps. For PWM input, the following applies: When throttle is raised above zero, it beeps one low tone beep. This signals the start of the arming sequence. When throttle is reduced to zero again, it beeps one high tone beep. This signals the end of the arming sequence.
The main motor has a soft spoolup of some 3-10 seconds for full power. The spoolup is done in three phases, in order to be soft enough for the heli not to move, particularly before tail rpm is high enough to give some tail authority. In the first phase power is limited to the startup power for about one second. Then the power limit is slowly increased over the next three seconds. And in the final phase the power limit is increased more rapidly, until full power is available.
Input signal: The ESC accepts both positive and negative PWM, as well as PPM as input signal. The type of input signal is auto detected during the arming sequence. The only input signal that requires changing the default parameters, is negative PWM. PWM is accepted as 12kHz, 8kHz (mCPX v1), 4kHz, 2kHz (several Walkeras) and 1kHz (mCPX v2). PPM has a default throttle range of 1150us-1830us, and accepts rates from the normal 50Hz up to several hundred Hz.
Braking / active freewheeling: Damped light mode is implemented by doing braking, and inherently active freewheeling is also implemented. Then losses due to braking are counteracted by the reduced losses of active freewheeling. Maximum speeds: From rev 14.2, the code also provides overspeed protection. Maximum speed is limited to 250k eRPM, at which point power to the motor is limted. For ESCs with an MCU running at 48MHz, this number is 400k eRPM. The maximum speed can be lower if running closed loop.
Beeps - Normal operation: This procedure is used for PWM input signal. Power up: Once Throttle up detected (arming sequence start): Once The maximum throttle in this interval sets the ”arm” target for the governor. Zero throttle detected (arming sequence end): Once After this, the motor will run. Document rev 14.
Beeps - Normal operation: This procedure is used for PPM input signal. Power up: Once Throttle signal detected (arming sequence start): Once Zero throttle detected (arming sequence end): Once After this, the motor will run. Document rev 14.
Beeps - Entering programming mode: This procedure is used for PWM input signal. Power up: Once Throttle up detected (arming sequence start): Once Full throttle detected (start of entering programming mode): Infinite Zero throttle detected (continue entering programming mode): Infinite Full throttle detected (programming mode entered): Once The above description is for main or multi. For the tail, follow the same sequence, but use right rudder as full throttle and left rudder as zero throttle.
Beeps - Throttle calibration and entering programming mode: This procedure is used for PPM input signal.
Beeps - Programming mode: Function 1, parameter value 1 Once Function 1, parameter value 2 Once …etc… Function 2, parameter value 1 Once …etc… If the throttle stick is moved to zero during one of the above sequences, the parameter value of that function is selected and stored. And you will hear this sound: Parameter value stored Once The ESC then resets itself.
Revision history: - Rev1.0: Initial revision based upon BLHeli for AVR controllers - Rev2.0: Changed "Eeprom" initialization, layout and defaults Various changes and improvements to comparator reading. Now using timer1 for time from pwm on/off Beeps are made louder Added programmable low voltage limit Added programmable damped tail mode (only for 1S ESCs) Added programmable motor rotation direction - Rev2.
Fixed bug in startup power calculation for non-default power Prevented possibility for voltage compensation fighting low voltage limiting Applied overall spoolup control to ensure soft spoolup in any mode Added a delay of 3 seconds from initiation of main motor stop until new startup is allowed Reduced beep power to reduce power consumption for very strong motors/ESCs - Rev3.
Fixed bug in commutation that caused rough running in damped light mode Miscellaneous other changes - Rev7.0 Added direct startup mode programmability Added throttle calibration. Min>=1000us and Max<=2000us. Difference must be >520us, otherwise max is shifted so that difference=520us Added programmable throttle change rate Added programmable beep strength, beacon strength and beacon delay Reduced power step to full power significantly Miscellaneous other changes - Rev8.
- Rev10.
- Rev11.0 Fixed bug of programming default values for governor in MULTI mode Disabled interrupts explicitly some places, to avoid possibilities for unintentional fet switching Changed interrupt disable strategy, to always allow pwm interrupts, to avoid noise when running at low rpms Added governor middle range for MAIN mode Added bidirectional mode for TAIL and MULTI mode with PPM input Changed and improved demag compensation Miscellaneous other changes - Rev11.
- Rev12.2 Improved running smoothness, particularly for damped light Avoiding lockup at full throttle when input signal is noisy Avoiding detection of 1-wire programming signal as valid throttle signal - Rev13.0 Removed stepped start Removed throttle change rate and damping force parameters Added support for OneShot125 Improved commutation timing accuracy - Rev13.1 Removed startup ramp for MULTI Improved startup for some odd ESCs - Rev13.