__TOC__

= Introduction =

ESC, '''E'''lectric '''S'''peed '''C'''ontrollers, are required for controlling electric BLDC (brushless DC) motors.<br/>
While most standard ESC's will work well with fixedwing, rotorcraft have higher requirements which cheap controllers maybe poorly meet.

Positive features for rotorcraft:

* Faster response to input signal (faster acceleration and slow down)
* More thrust 
* Accept faster or other input signal (faster PWM input or I2C)

Beside these, they can also be less noisy.

Standard ESC can be used, but with a little work and an alternative firmware they will work better.

= Big Heads-Up for Flyduino ESCs  =
Just to warn everyone using speed controllers with regenerative brake function such as the ones from FlyDuino: DO NOT TEST IT WHILE CONNECTED TO A LAB POWER SUPPLY ! The reverse current generated will damage the power supply or burn the Autopilot immediately.

= Multiple ESC/BEC in one Aircraft=

Most standard ESC come with a BEC (battery eliminator circuit) built in, which is supposed to supply servos and receiver with (mostly 5V) power.<br/>
Connecting multiple BECs in parallel can cause different problems through e.g different voltages and should be avoided.<br/>
Correct wiring examples can be found on the [[Lisa/M_v20#Examples_of_Airborne_Equipment_Electrical_Connections|LisaMv2 page]].

= AVR (ATmega) based ESC =

Simon Kirby develops an alternative firmware for ATMega based ESC controller, written in assembly.

Features:
* 16MHz operation on most boards
* 16-bit output PWM with full clock rate resolution (~18kHz PWM with a POWER_RANGE of 800 steps)
* 24-bit timing and PWM pulse tracking at full clock rate resolution
* ICP-based pulse time recording (on supported hardware) for zero PWM input control jitter
* Immediate PWM input to PWM output for best possible multicopter response (but NOT where soft start or really any significant current limiting is needed!)
* Accepts any PWM update rate (minimum ~5microseconds PWM low time)
* Optimized interrupt code (very low minimum PWM and reduced full throttle bump)
* Configurable board pin assignments by include file
* Smooth starting in most cases
* Forward and reverse commutation supported, including RC-car style reverse-neutral-forward PWM ranges, with optional braking

==Programmer==

Any ISP programmer will do the job, just some popular: <br/>
* [http://www.fischl.de/usbasp/ usbasp] There are tons of cheap chinese copies out there. <br/>
* [https://www.olimex.com/Products/AVR/Programmers/AVR-ISP-MK2/ Olimex AVRISP MKII] Open Source Hardware Programmer capable of ICSP, TPI and PDI, based on [http://fourwalledcubicle.com/LUFA.php LUFA]

==Related links==

[http://wiki.openpilot.org/display/Doc/RapidESC+Database Hardware compatibility table (Openpilot)]<br/>
[https://docs.google.com/spreadsheet/ccc?key=0AhR02IDNb7_MdEhfVjk3MkRHVzhKdjU1YzdBQkZZRlE#gid=0 Hardware compatibility table (google docs)] <br/>
[https://github.com/sim-/tgy sim-/tgy] git repository.

= SiLabs based ESC =

Some newer ESC are build with a Silicon Labs MCU with a Intel 8051 core. <br/>
They have a C2 programming interface and therefore need a special programmer.<br/>
Steffen Skaug provides an alternative firmware, written in assembly.

Features:

* Can be configured for helicopter MAIN motor or TAIL motor operation. Or as MULTIcopter motor operation.
* Main motor operation has governor functionality and multicopter motor operation has closed loop functionality.
* Motor operation can be damped for fast motor retardation.
* Many parameters can be programmed, either from PC applications for setup and configuration, or from the TX.
* Supports 1kHz, 2kHz, 4kHz, 8kHz or 12kHz positive or negative pwm as input signal, as well as regular 1-2ms PPM signal.

The easiest way is to program and set up the esc with the BLHeli setup tool (no surce available :( ).

==Programmer==

* [http://www.olliw.eu/2012/owsilprog/ owsilprog] uses a Arduino
* [http://www.silabs.com/products/mcu/Pages/ToolStick.aspx Silicon Labs Toolstick] available at [http://at.mouser.com/ProductDetail/Silicon-Labs/TOOLSTICK850-B-SK/?qs=sGAEpiMZZMuqBwn8WqcFUs%2fwPRHCOTglcuiSRjY%2fEIM%3d Mouser] for 8€ (requires [http://www.hacksmods.com/2012/05/silicon-labs-usb-toolstick-mod-for-blheli-flashing/ little modification])

[[File:SiLabs_Toolstick_front.jpg|200px|Front side]]
[[File:SiLabs_Toolstick_back.jpg|200px|Back side]]
[[File:SiLabs_Toolstick_Front_dia.jpeg|200px|Back side]]
[[File:SiLabs_Toolstick_Back_dia.jpeg|200px|Back side]]

==Related links==

[http://www.helifreak.com/blog.php?u=144146&blogcategoryid=119 BLHeli Setup tool]<br/>
[http://oddcopter.com/2012/07/18/flashing-silabs-escs-with-blheli-firmware/ tutorial on oddcopter.com]<br/>
[https://github.com/bitdump/BLHeli bitdump/BLHeli] git repository

= Projects =

== Open BLDC ==

Open hardware and open software brushless controller project.
From small low cost up to 200A continous hardware, but currenty under development.

=== Related links ===

[http://open-bldc.org/wiki/Open-BLDC Homepage] <br/>
[https://github.com/open-bldc open-bldc] git repository

== Benjamin's custom ESC ==

Open source/hardware ESC with a bunch of features (for a full list, visit his blog). <br/>
* 240A  
* 40x60mm PCB

=== Related links ===

[http://vedder.se/2014/01/a-custom-bldc-motor-controller/ Homepage/Blog] <br/>
[https://github.com/vedderb/bldc bldc] git repository <br/>
[https://github.com/vedderb/bldc-tool bldc-tool] git repository <br/>

= Non open ESC =

== Alpha ESC's ==

Sadly a closed source ESC only mentioned here since there is a module to read out the telemetry spit out by the Alpha ESC
Read about it here [[alpha_esc_with_telemetry_output]]

[[Category:Hardware]]