Mathias Rasmussen
aa213b8249
|
4 years ago | |
---|---|---|
.github/ISSUE_TEMPLATE | 4 years ago | |
.husky | 4 years ago | |
Layouts | 4 years ago | |
Silabs | 4 years ago | |
tools | 4 years ago | |
.editorconfig | 4 years ago | |
.gitignore | 4 years ago | |
BLHeliBootLoad.inc | 4 years ago | |
Bluejay.asm | 4 years ago | |
CHANGELOG.md | 4 years ago | |
COPYING | 4 years ago | |
Common.inc | 4 years ago | |
Makefile | 4 years ago | |
README.md | 4 years ago | |
bluejay.svg | 4 years ago |
README.md
Bluejay
Digital ESC firmware for controlling brushless motors in multirotors.
Based on BLHeli_S revision 16.7
Bluejay aims to be an open source successor to BLHeli_S adding several improvements to ESCs with Busy Bee MCUs.
Current Features
- Digital signal protocol: DShot 150, 300 and 600
- Bidirectional DShot: RPM telemetry
- Selectable PWM frequency: 24, 48 and 96 kHz
- PWM dithering: 11-bit effective throttle resolution
- Power configuration: Startup power and RPM protection
- Numerous optimizations and bug fixes
See the project changelog for a list of changes.
Flashing ESCs
Bluejay firmware can be flashed to BLHeli_S compatible ESCs and configured using Bluejay Configurator (a fork of BLHeli Configurator).
Release binaries
All releases can be found in the releases section.
Release files use a naming convention similar to BLHeli: {T}_{M}_{D}_{P}_{V}.hex
.
T | A - W |
Target ESC layout |
M | L or H |
MCU type: L (BB1 24MHz), H (BB2 48MHz) |
D | 0 - 90 |
Dead time (0 only for ESCs with built-in dead time) |
P | 24 , 48 or 96 |
PWM frequency [kHz] |
V | E.g. 0.7 |
Bluejay version |
Comparison of BLHeli_S and Bluejay settings
The following table shows a correspondence between BLHeli_S and Bluejay's startup power settings.
BLHeli_S | Bluejay | ||
---|---|---|---|
Startup Power | Min. Startup Power | Max. Startup Power | RPM Power (Rampup) |
0.031 | 2 (1001) | 1 (1004) | 2x |
0.047 | 4 (1002) | 2 (1008) | 2x |
0.063 | 6 (1003) | 3 (1012) | 3x |
0.094 | 8 (1004) | 4 (1016) | 4x |
0.125 | 12 (1006) | 6 (1024) | 5x |
0.188 | 18 (1009) | 9 (1035) | 6x |
0.25 | 24 (1012) | 12 (1047) | 7x |
0.38 | 36 (1018) | 18 (1071) | 8x |
0.50 | 50 (1024) | 25 (1098) | 9x |
0.75 | 74 (1036) | 37 (1145) | 10x |
1.00 | 100 (1049) | 50 (1196) | 11x |
1.25 | 124 (1061) | 62 (1243) | 12x |
1.50 | 150 (1073) | 75 (1294) | 13x |
- Minimum startup power: Minimum power when starting motors. Increase if motors are not able to start with low throttle input.
- Maximum startup power: Limits power when starting motors or reversing direction.
- RPM Power Protection (Rampup): Limits how fast power can be increased. Lower values will avoid power spikes but can also decrease acceleration.
Contribute
Any help you can provide is greatly appreciated!
If you have problems, suggestions or other feedback you can open an issue.
You can also join our Discord server to ask questions and discuss Bluejay!
Obtaining the toolchain
To obtain the toolchain, download the C51 package from Keil. Run it with wine:
wine c51v960a.exe
This will install toolchain and uVision. To obtain a license key (which you will need in order to link files above a certain size) you will have to run uVision in order to get your Computer ID.
wine ~/.wine/drive_c/Keil_v5/UV4/UV4.exe
Go to "File" -> "License Management" note your "Computer ID".
With this information, you can request a licence key on the Keil license installation page. In the CID field you need to enter the Computer ID which uVision showed you in the previous step.
The license ID will be sent to you via E-Mail, once received you paste it into the LIC field, press "Add LIC" and you are done.
Building
For your convenience a Docker Image is provided that will set up the toolchain. For this to work you need to have completed the step Registering via Wine and your .wine
directory has to be copied to the tools directory.
The .wine directory can be deleted from the tools directory after the docker image has been created.
To build the docker image install docker and from the tools directory run:
docker build -t bluejay-build .
A build script is provided, it will build all targets if no further parameters are provided:
./build.sh
or a specific target if you chose to:
./build.sh -l A -m H -d 0 -p 96
If a specific target is chosen, all parameters need to be provided: layout, mcu, deadtime and pwm
The source from the projects root is used to build the firmware.