Buy Solo Battery Tool ($45)
8 May 2018: Firmware Ver 1.5 is out ! , see below. 🙂
3DR Solo battery packs have lots of information that the average user will never see, they are also very nicely calibrated for voltage (cells and pack) as well as current.
Some of the information, like capacity, cell voltages, cycles, past low voltage condition, cell voltage difference and manufacture date may be very useful.
Health data is very useful as well.
Below: two devices, one as delivered, the other with an XT60 connector for charging.
It’s easy to solder on XT60, charger cables, or other connectors right on the main connector. The XT60 is there just for illustration purposes, it’s easy to solder on most of the typical connectors (XT60, EC3) directly, the rest can be soldered on with wires.
The device is not doing any calculations on it’s own, data is read from the battery, and presented.
Values and information details:
Charge level in %
Charging current. (Negative value indicate discharging current)
Cell voltages for cell 1…4 – should be self-explaining, any healthy pack will have very similar voltages after a flight.
Design capacity is what the pack was designed to be.
Actual capacity is shows the actual capacity as the pack ages.
Relative charge level is based on actual capacity of the pack.
Absolute charge level is based on design capacity of the pack.
Manufacturing date in Y-M-D format.
Made by BMTPOW
Device name is MA03, serial number follows (not the same as barcode on the pack)
TTF: Time To Full , if not charging, will display “-1”
Cycles: how many times have this pack been used. This is increased when discharged_capacity_since_last_increase > design_capacity.
Status word is bitmapped at least two bits we know are used, one indicating charging/discharging , the other tell if the factory calibration data is OK.
Should factory calibration data ever be corrupted, then you can never know if a reported voltage/current (used for capacity calculation !) is correct, and it’s dangerous to fly with such pack. A very clear warning will be displayed.
Firmware >=1.5 say “Initialized” when BMS is calibrated&configured properly, or “NOT” initialized” if not.
There is also a warning for internal resistance deviation.
There is a “Cell Change” warning, I do not know what can cause it, or what exactly it means – both warnings above are for illustration purposes, I have no packs with such condition.
Status is expected to be 128(charging) or 192(discharging) , 16608 is a fully charged battery. (Thanks to Bob that found that).
Since firmware 1.5 , status understanding is much better, and most data is presented as text.
Health is 18 for all good packs (I do not have one that is bad) , but there are 16bit of data that can indicate quite a lot…
I’ll update this page based on user reports.
Lowest voltage record.
– Displays eight last low voltage records, some values are initialized as 3.5v , but it is the lowest values that indicate if the battery have ever been close to deep-discharge.
If battery pack is connected, but not charging – after 180seconds, the DONE message will show, two minutes later the battery will switch off.
This dataset is output to the same FTDI interface:
Data is output on the serial interface at 115200baud, at 1hz.
This allows for nice graphing of charging/discharging, and full monitoring using Dataexplorer with the plugin I’ve made: Solo_Batt_Tool.xml
Of course, you are free to do whatever logging you wish, the format is basically semicolon delimited, and temperature, cell voltages are multiplied with 100/1000 so you don’t need to parse thru commas.
The format is:
$1 ;1 ;20988; 1550; 0; 52; 52;2724;2445;3874;3874;3875;3876;105;26;76;-1;8;0
Plug into battery , switch on battery.
Plug into battery , and provide charging current. You can use any standard charger, select Li-Po 4cell program with no balancing (the smart battery does the rest)
There is an custom bootloader on the device, so if the community or I figure out more about the battery, it’s possibly to upgrade it using a standard FTDI cable and the avrdude tool (for Linux,Mac,Windows).
FTDI cable, with extra pin header.
Insert pin header into FTDI cable, the protruding, short pins will fit into the SoloBatt_OLED’s six pins on the edge of the PCB. You will need to cut away, or puncture a little bit of shrink-wrap to access the edge.
The upper & lower of the six pins on PCB, are marked BLK (black) and GRN(green) – make sure that matches the orientation of the FTDI cable. (reversing does no damage)
Observe that there are two files in the firmware package:
“VG” is for displays with pin order: “VCC, GND, SCL, SDA”
“GV” is for displays with pin order: “GND, VCC, SCK, SDA”
To write the new firmware you will need avrdude application.
On Linux, it’s installed by: “sudo apt install avrdude”
The firmware upload command is:
avrdude -patmega328p -carduino -P /dev/ttyUSB0 -b115200 -D -Uflash:w:SoloBatt_OLED.1.1.hex :i
/dev/ttyUSB0 is most likely correct, the number will be higher if you have more than one USB serial device
If you are using windows, replace /dev/ttyUSBx with COMx , also, in windows you’ll need some FTDI drivers.
Please note that the programming protocol is arduino compatible just enough to make it work with avrdude, but it’s not really arduino.
- Longer auto-off delay (was 2min , now 4min)
- Longer time per screen 3s->6s
- Serial output using FTDI cable at 115200 baud
- Warning if battery has detected uneven internal resistance.
- Warning named “change cell” (not sure when that is supposed to kick in)
- Low voltage records.
- Three digits in cell voltages.
- Fahrenheit & Celsius temperature.
- Serial logging for Dataexplorer plugin (and any other data collection).
- Shorter splashscreen timeout.
- Cosmetic fix for long status numbers on OLED display.
- manual page flip. lets user skip forward to a certain page, and stops automatic rotation. (connect momentary switch between pin8 and pin9 – or – if you are using a microcontroller , just pull pin9 low.)
- Pressing the power button on the Solo battery jumps to next screen, pressing button loads next screen, and disables the default time based change. (you can watch one as long you want).
- Manual page change disables auto-off.
- Displayed data is updated at 0.5Hz
- Found out more about battery status, and presenting it as text. , among others, you may see “Fully Charged” , “Fully Discharged” , “Charging”, “Discharging”, “Initialized” “NOT initialized” , “Term.Disch.Alarm” and “Terminate Charge”
- The old status “Calibrated” is now replaced by “Initialized” – which means not only that the voltage/current sensors are calibrated, but also that the BMS is configured for proper operating limits and parameters. An “NOT initialized” battery means improperly set/default BMS configuration.