This article describes a solution for robust and reliable ‘production’ programming of Silabs based BLHeli ESCs.
The intention is to test and tune the BLHeli configuration, save the configuration in some form, and a scripted solution to programming multiple ESCs now and later replacements with high confidence that they are exactly matching configurations.
There does not appear to be any batch facility for writing flash using the BLHeli bootloader, nor does it appear that BLHeliSuite can save the relevant hex files for later use, so excluding use of the BLHeli bootloader.
The configuration data is held in a block of flash memory labelled EEPROM in the source code. It is not actually EEPROM, the MCU does not have EEPROM, but for consistency the block will be referred to as EEPROM in this article.
Having tested and tuned the configuration using BLHeliSuite, the EEPROM block from the test ESC is read back using Silabs Flash Programming Utility (FPU) and a toolstick attached to the ESC’s C2 interface.
Above, reading the EEPROM block.
The EEPROM block is them merged over the distribution hex file to create a custom hex file for repeated use. Continue reading Robust programming of Silabs based BLHeli ESCs
The website Mini Quad Test Bench by Ryan Harrell contains a growing set of test results for motors and ESCs.
In respect of ESCs, it appears to use BLHeli unless the ESC is incompatible in which case the proprietary firmware is used.
The configurations are targeted mainly at the mini quad racer part of the market, and the requirements for different size copters and different applications varies significantly.
The site contains an online editable graph facility that allows customisation of the graph.
Above is a graph of current vs time for a uniform ramp servo input, and I have disabled most of the ESC types for clarity, selecting just the first two on the list and one which I use (F-30A). Continue reading RC electric drive noise
A recent crash trying to tame the update from CF v1.10 to v1.12 did some damage to two prop adapters, bending them just above the lower flange causing axial runout. The weak point in these adapters is at the transition from the hollow tapered lower section to the solid threaded upper section.
Above is measurement of the runout on the lower part of the spinner with a propeller hub mounted. Total Indicated Runout (TIR) was measured at almost 0.5mm, lets call it 0.5mm, and runout from centre is therefore 0.25mm. Continue reading Thinking about vibration forces from a bent prop adapter
The first widely used ‘digital’ communications protocol used with Remote Control (RC) models was PWM.
Though PWM is a generic term, the accepted timing was that a pulse width of 1000µs to 2000µs conveyed 0-100% of the proportional control. The the on-off nature of the PWM signal was discrete (digital), the duration of the pulse was stepless (ie not discrete), and since there was no shared time reference, the receiver’s interpretation of the signal may have error.
So, for a multichannel system, there would be one ‘signal’ wire for each channel, which gets to be a nuisance for lots of channels.
PPM (aka PPMSUM, CPPM) was an early protocol to multiplex multiple channels on one signal wire. The initial protocol description was of a frame comprising 500µs SPACE (S) followed by 500µs – 1500µs MARK (M) carrying the channel information as in the RC PWM protocol, then the same for the next channel and so on. These frames were repeated at a fixed frame repetition rate (FRR) of around 50Hz. Early implementations ‘defined’ this total frame duration variably, eg 18ms, 22.5ms, 28ms were popular. Continue reading Cleanflight and PPM
Plans are being made to build another copter using a Seriously Pro F3 Flight Controller, and drive options are being considered.
Since this is a high performance flight controller with faster loop times, and Oneshot125 is used on the ESCs for faster response, an ESC that exhibits fast response is warranted to fully explore the benefits of faster loop times.
Most stock ESCs are quite slow, though with replacement firmware they can perform much better.
Though I have dismissed BLHeli for several reasons in the past, I have a set of Hobbywing Skywalker 40A Silabs based ESCs which will run BLHeli and not SimonK, so review of the current version (14.6) of BLHeli is warranted.
Dowloading 55MB of bloatware and updating the firmware using a Silabs Sticktool / C2 interface (which itself is quite fast and convenient as I have added permanent cables for the C2 interface), reminded me of most of the bad things of BLHeliSuite. Despite falling foul of the traps too many times, I achieved the desired result
This article documents some comparison tests of:
- SimonK commit 1f75da384e5c83f83916aa752819ca6eed712565 afro_nfet.hex; and
- BLHeli v14.6 for Hobbywing Skywalker 40A.
Continue reading Comparison of SimonK and BLHeli 14.6 on an Afro30 ESC
The Acro NAZE32 flight controller ships without a dataflash chip, which is so shortsighted of the designer / manufacturer. Many users will not be at all interested in Baro or Magnetometer which come on the deluxe version, but the dataflash is so useful in tuning a copter.
Unfortunately, the designer put pads on the rev5 board for 150mil SOIC-8 chips (SOICN), but lots of dataflash chips are in 208mil packages (SOICW) and all the large capacity chips are SOICW. Rev6 boards appear to have pads that will suit both sizes… but then the Acro comes with dataflash, even if small.
If you are happy to install a 2Mb dataflash chip, buy a SOICN package and your job is easy.
I installed a 64Mb Winbond chip (W25Q64FVSIG), they are easy to find on eBay for a dollar or so. (You will also need a 10nF ceramic 0603 cap).
If you want to install a SOICW package… Continue reading Dataflash on NAZE32
This article documents a LEA-6T module build for general experiments.
The LEA-6T is an inexpensive GPS module (~$40 at time of purchase, but getting cheaper) that can supply raw pseudo range data.
The module above is supplied for use on UAVs of various kinds, and came complete with a plastic radome and cables to suit an APM copter. The module also contains a 3D compass (magnetometer) which is not used here.
Above is the internals of the module with a custom cable to pick up just the RS232-TTL signals from the GPS (and supply 5V). The connector is a 8pin Hirose DF13. Continue reading U-BLOX LEA-6T GPS module – for experiments
I purchased an Acro Seriously Pro F3 flight controller (FC) recently and having soldered the connectors on and loaded the current firmware, it was time for a pre-installation checkout.
The article outlines a basic pre-installation test that revealed problems that would prevent effective use of the FC.
Doing no more than an acc calibration and allowing initialisation with a stabilised FC, the FC on the end of a USB cable should deliver acceptable sensor responses in Cleanflight Configurator (CC).
This flight controller has two problems:
- offset in the gyro z axis (yaw);
- low acc output in the Y axis (roll).
Continue reading Seriously Pro F3 flight controller gyro/acc failure
If for some reason you cannot use the bootloader that reads from the USB port via the CP2102, you can resort to programming the MCU chip using the SWD port and a programmer that supports that protocol.
WARNING: there is potential for damage if you get this stuff wrong. No warranty is offered, if you break it, you get to keep both parts.
Example hardware configuration
Above is the hardware configuration for programming. I have used a LiPo and BEC to supply 5V to the SPF3 board (the target), and a clone ST-LINKV2 (~$4 on eBay) is connected to the Serial Wire Debug (SWD) connector on the SPF3 with a custom cable. Note that you cannot use USART2 concurrently with SWD.
Continue reading Flashing SeriouslyProF3 Cleanflight using ST-LINKV2
I spent quite a while chasing down a problem in a Cleanflight v1.13 flight controller which would not start properly, giving a series of beeps that one might expect hinted the problem.
Above is a scope capture of the /BEEP signal, five short beeps (50ms ON, 50ms OFF) then four long beeps (250ms ON, 250ms OFF). Continue reading Cleanflight – initialisation failure beeps