As some of you might have noticed, I’ve started to publish videos on YouTube from time to time. I was rather not advertising them here. This will change and you might expect a series of overdued posts with some of my videos.
Today something hardware related: soldering for beginners using ESC, PDB and power cables on a mini-quad as an example.
Looks like BLHeli team is not wasting their time and is preparing something new for our multirotors. After BLHeli_S, we will also have BLHeli_32.
According to an announcement posted on RCGroups, new software for ESCs (and new ESC of course, since it will not be compatible with current Atmel and SiLabs MCU) will be:
Running 32-bit MCU, Cortex-M0 at 48MHz (STM32F0 ??). Which, in my opinion, is a very logical step to take. Please remember, that all SiLabs (Silicon Labs) MCU powering most of our ESC, are under the hood old Intels 8051. And please remember that Intel 8051 was created in 1980. 37 years ago…
There are few places where additional computational performance can be spent. For example:
Programmable PWM frequency up to 48kHz
Auto timing for better efficiency
Programmable brake on stop power, very useful for folding propellers
Voltage and current limiting
ESCs with BLHeli_32 are not available yet, but Airbot already announced Wraith32 Plus (with voltage and current limiting) and Wraith32 Mini (without voltage and current limiting).
When I've buoght an oscilloscope (cheap digital DSO201), I've decided it would be a good idea to see how different ESC protocols looks like from the signal point of view. Previously I've written few words about them, like which is the fastest as so on, but is there something "special" about them?
Well, let's find out…
"Standard" PWM at 400Hz
OneShot125 at 1kHz
"Analog" PWM used in Brushed motors at 16kHz
Well, looks like PWM, OneShot125, OneShot42 and Multishot (no screenshots for last two, but they are so similar it just made no sense to post those) are basically only an variation of the same basic idea: throttle position is encoded as a period of time between rising and falling edge of a signal. 0% throttle is encoded as period A, 100% as period B. Everything between is scaled lineary. Protocols differ only in update frequency and period lengths for 0% and 100% throttle. Boring…
Only "Analog" PWM for brushed motors is different. There are not rising edges on 0% and throttle, since 0% throttle means no current on motors.
But, this can change. There are first attempts for digital ESC protocols. Betaflight is preparing for DSHOT600 and DSHOT150 digital protocols as I write. Like always, hardware support is/will be highly limited, but hmm… ESC telemetry? Why not…
While BLHeli was the best what happened to ESCs since original SimonK firmware, BLHeli has one very serious flaw: BLHeliSuite works only on Windows operating system. Let's be honest here, this sucks. OK, one can use virtual machine and some people succeeded to run it using WINE (I failed) but those are not good solutions.
Now, it changed. There is a 3rd party, operating system independent solution to flash and configure ESC with BLHeli. It is called BLHeli Configurator and can be obtained from GitHub.
It is not perfect software, but works well. Today I have successfully flashed BLHeli 14.8 to my FVT Littlebee 20A and changed some setting. Awesome.
BLHeli Configurator is a Chrome application, so it requires Chrome browser
Only BLHeli passthrough interface is supported. So, ESCs has to be connected to Cleanflight, Betaflight, INAV or TriFlight
ATM setup requires few commands like npm install and npm run build. And that means, NodeJS and NPM are required too
Nor all features are implemented or tested. But is developers will keep the pace, it will be an extremely useful peace of code!
Two years ago it was simple: you wanted to connect ESC to Flight Controller or radio receiver, you were just doing it. There were only one (maybe 2) protocols that allowed to pass information to ESC. It was a standard PWM protocol. And it was enough. No, with faster hardware, mini or even micro quads, this one protocol is not enough. So, we also have OneShot125, OneShot42, and Multishot. Should we care? A little.
Legacy 'Analog' PWM signal – this protocol is not used in the multirotor world. It is supported only by an extremely limited number of ESCs and radio receivers. 0% PWM duty cycle means 'Stop' and 100% PWM duty cycle means 'Full power'. Modern UAV pilots/builders should not take about it at all. The interesting fact is that BLHeli supports it as PWM Input option that is disabled by default.
'Standard' PWM signal – I've previously described this protocol here. To recall: protocol encodes requested output as a length of a pulse. The pulse length of 1ms means 'Stop' and the pulse length of 2ms means 'Full power'. Because of this, maximal theoretical update frequency is 500Hz (490Hz in practical applications). Signal delay in case of PWM protocol is 2ms. It means, that ESC can start to update output 2ms after the flight controller started to send this information. All of that makes PWM rater slow, and using loop times below 2000us (refresh rate 500Hz) makes no sense.
'OneShot125' protocol – this protocol uses 8 times shorter pulses than standard PWM protocol: from 125us (stop) to 250us (full power). That means 2 things: it allows for 8 times faster PID control loop update rate (looptime 250us / 4kHz update rate). It also has 8 times shorter signal delay: only 250us instead of 2000us. Currently, OneShot125 is the minimum for mini quads. Even bigger machines will appreciate smaller delay. Supported by most flight controllers and ESC (SimonK, BLHeli, KISS, other). If both Flight Controller firmware and ESC supports OneShot125, it should be used.
OneShot42 is 3 times faster version of OneShot125. Max 12kHz update rate and 42us signal delay. It was developed by Flyduino as part of KISS FC and ESC 'program'. Not widely supported yet.
Multishot – the fastest ESC protocol in this comparison, developed by RaceFlight, allows for 32kHz update rate. It is almost 10 times faster than OneShot125 (80 times faster than PWM). Requires both fast FC (preferably STM32F4) and fast ESC (Silabls F390 preferably). Not widely supported mainly because of a limited number of 'Multishot ready' ESCs. And it has fancy startup melody too… man…
DSHOT that comes in many versions, DSHOT300, DSHOT600, DSHOT1200… This is the "digital" protocol. It's not based on the length of a pulse but uses zeros and ones send just like over a serial port to control ESCs. With error control, fast update and commands like "beep" or "reverse". In theory the best on. It's not supported by all the software and hardware tho.
ZTW Spider 40A OPTO Small ESC with stock SimonK firmware can be easily flashed with BLHeli using Cleanflight interface. I just did it, the whole process took few minutes. To be true, it took me more time to find out which firmware should those ESC be flashed with, than to flash them. For unknown reason this information is well hidden in the internet! So, here is short guide:
We will be using Cleanflight BLHeli passthrough interface. It is build in in laster Cleanflight / Betaflight / INAV firmwares
Use latest BLHeliSuite. I used 184.108.40.206.0.0
Connect ESC to flight controller
Connect flight controller to USB port
Run BLHeliSuite software
From Interface menu select ATMEL BLHeli / SK Bootloader (Cleanflight)
Select COM port and click Connect
Connect ESC to battery
Click Check to detect connected ESCs
BLHeliSuite will detect unknown firmware with SimonK bootloader
Select ESC (1, 2, 3 or 4) and click Flash BLHeli
Here comes funny part. There is no ZTW Spider 40A OPTO Small formware! Documentation states that ZTW Spider 40A should be flashed with BlueSeries 30A firmware. But images in docs and mine ZTW Spiders differs a little. But, looks like it is not a problem. Select BlueSeries 30A MULTI firmware and flash
BLHeli 14.x enables Damped Light by default. That might not be a best idea for big (> 8″) propellers so you might want to disable it
Bottom line: ZTW Spider 40A OPTO Small ESC should be flashed with BlueSeries 30A BLHeli firmware!
When 3 month ago I was doing “Hands on” review for EMAX SimonK Series 30A ESC I was quite optimistic about them. Well, why should I not be? Quite cheap, decent quality, easy to configure. Did EMAX 30A SimonK Series ESC met expectations I was putting on them?
Simple and short answer is: no, they did not met expectations. Reason is: one of them caught fire during flight causing whole UAV to fell from 30 meters into water.
As you can see on the pictures above, ESC is completely burned. Both MOSFETs and electronics. How do I know it burned during flight and caused a crash and not the oter way? Thanks to Blackbox logs I have a proof that this single ESC and motor connected to it were gradually losing power before UAV crashed. Since motor and attached propeller survived without a scratch, ESC is the one to blame.
To make things worse, it was not too much load that killed it. Before crash ESCs were running at around 45% throttle. That is around 7A per ESC. Way below promised 30A.
So, final conclusion: no, maybe they are cheap and easy to use, they are not reliable! And that is the critical flaw of those ESC!
You finished your build, you connect LiPo, power up flight controller, apply throttle (no propellers of course) and you see that one or motors are spinning in wrong direction. How to fix that? You can not do it, for example in Cleanflight Configurator. ESC communication protocol does not allow to change BLC motor direction.
There are 4 ways of dealing with this problem:
Hardware way that works all the time: swap any two motor wires. Does not matter which, just take any two and swap them between motor and ESC: A with B, B with C or A with C. If you have bullet connectors, it's simple. If you soldered wires to ESC pads, you would have to resolder them.
If you have BLHeli ESC software, BLHeliSuite allows to change motor direction without swapping any wires. Connect to ESC with BLHeliSuite, and change Motor Direction option. This works only with BLHeli enabled ESC, and only on Windows.
Most of ESC allows to change options like motor direction via transmitter. Exact procedure differs from manufacturer to manufacturer, but usually it looks like below. For exact procedure and possible options refer to ESC user manual!
Connect ESC to radio receiver throttle channel or use flight controller configurator software Live mode. Remember to remove propellers!
Power ESC, it will start to beep signaling number of cells
Keep throttle up until you hear a sequence that confirms programming mode has been entered
Wait to hear beeping sequence indicating Motor Direction option
Wait until you hear beeping sequence indicating desired rotation direction (normal or reversed)
Setting will be changed and after next power cycle rotation direction will be changed
Sometimes special programming cards for ESC can be acquired. They somehow automate procedure from point 3 but work on the same principle. For exact programming procedure refer to programming card user manual.