# FU-Dyson-BMS
### An (Unofficial) Firmware Upgrade for Dyson V6/V7 Vacuum Battery Management System (BMS)
![Github Header Image](https://user-images.githubusercontent.com/46428760/168486653-8b8b696d-0bcb-4679-95c9-0377f26ec008.jpg)
------
**Dyson vacuum batteries are designed to fail.**
Here's why:
1. Series battery cells in a battery pack inevitably become imbalanced. This is extremely common and why cell balancing was invented.
2. Dyson uses a very nice ISL94208 battery management IC that includes cell balancing. It only requires 6 resistors that cost $0.00371 each, or 2.2 cents in total for six. [^1]
3. Dyson did not install these resistors. (They even designed the V6 board, PCB 61462, to support them. They just left them out.)
4. Rather than letting an unbalanced pack naturally result in lower usable capacity, when the cells go moderately (300mV) out of balance (by design, see step 3) Dyson programmed the battery to stop working...permanently. It will give you the 32 red blinks of death and will not charge or discharge again. It could not be fixed. Until now. [^2]
<img src="https://user-images.githubusercontent.com/46428760/168484825-c1c25766-edcf-4af1-a2fb-f534d9acf39a.png" width="400" />
FU-Dyson-BMS is a replacement firmware for the microcontroller inside Dyson V6/V7 vacuum batteries. By using this firmware, your battery pack will not become unusable if the cells become imbalanced, you will just have reduced battery capacity as usual. It will also allow you to replace the battery cells to repair your battery, rather than be forced to replace it.
Demonstration, disassembly, and programming video:
https://www.youtube.com/watch?v=dwyA5rBjncg
[![FU-Dyson-BMS - (Unofficial) Firmware Upgrade for Dyson V6/V7 Vacuum Battery Management System](https://img.youtube.com/vi/dwyA5rBjncg/0.jpg)](https://www.youtube.com/watch?v=dwyA5rBjncg)
## Revolutionary features:
- Cell balance LED indicator
- State of charge LED indicator
- Robust fault handling and logging
- Total runtime tracking
- Can be run in debug mode for near-real-time diagnostics
- Doesn't brick itself!
- Doesn't generate e-waste and try to take your money when your cells go out of balance!
## Why you would want this:
- You want to vacuum your apartment but your cells became slightly out of balance because you left the vacuum off the charger for too long and now your vacuum doesn’t work (ask me how I know)
- You want to replace a bad cell in your battery pack
- You want to understand what your battery is doing and why.
- You don’t like feeling like a cash cow being squeezed for all you’re worth.
## Compatible vacuums/batteries:
- Dyson V7 - Model SV11 - PCB 279857 - Compatible + Tested
<img src="./hardware-info/images/V7 SV11 - PCB 279857.jpg" width="400" />
- Dyson V6 - Model SV04/SV09 - PCB 61462 - Compatible + Tested
<img src="./hardware-info/images/V6 SV04,SV09 - PCB 61462.jpg" width="400" />
- Dyson V6 - Model SV04 - PCB 188002 - Compatible + Tested
<img src="./hardware-info/images/V6 SV04 - PCB 188002, Repaired.jpg" width="400" />
Note: the model numbers are kind of weird. There are three different ways to identify/categorize your vacuum:
1. The advertised version number (V6, V7, etc)
2. The actual model number printed on the battery (SV04, SV09, SV11)
3. The part number printed on the battery PCB (61462, 279857, 188002).
Some models like SV04 contain different versions of the battery PCB. Many of these PCB versions are extremely similar and I have no idea why Dyson seems to have made at least 5 different versions. I recommend you use the PCB part number for reference if possible, or the model number printed on the battery otherwise. I still use the V6, V7 names in some places since that is what most people are familiar with, and I keep changing my mind as to which identification method is better.
**Probably not compatible:**
(Although it’d be interesting to see PCB photos of them to be sure)
- V10 vacuums
- V11 vacuums
- Anything newer
If you aren’t sure if your battery is compatible, please submit a Github issue with the highest quality photos possible of the battery PCB and provide the advertised model number (V6, V7, etc) and printed model number (SV09, SV11, etc) and I’ll try to tell you if it will work.
## How to install it:
Warning: The firmware flash process is irreversible. It is not possible to restore the factory firmware.
Summary:
0. Be careful. Li-ion batteries are no joke and must be respected. You're working on a live battery pack that can output 100+ Amps if short-circuited.
1. Disassemble battery pack to access PCB
2. Make sure all cells are charged above 3V and that the pack LEDs do *something* when you press the button (with magnet on reed switch if using V7). This confirms the 3.3V rail is regulating and the PIC is awake/working.
3. Remove conformal coating over programming connection points (if applicable)
4. Connect PICkit to computer and, if you using a PICkit 3 or clone, install the [PICkit 3 Programmer App and Scripting Tool v3.10](https://ww1.microchip.com/downloads/en/DeviceDoc/PICkit3%20Programmer%20Application%20v3.10.zip). (https://www.microchip.com/en-us/tools-resources/archives/mplab-ecosystem)
5. Connect PICkit to BMS board as shown below:
<img src="./hardware-info/images/PICkit Wiring Diagram_crop.jpg" width="720" />
6. Wake up battery pack by pressing button and placing magnet on reed switch (if using V7 vacuum)
7. While maintaining tension on wires to BMS board, make sure PICkit can see the PIC16LF1847 microcontroller, then import and write the hex file from the latest GitHub release.
<br/><br/>
For more details, see video linked at the top (https://www.youtube.com/watch?v=dwyA5rBjncg).
<br/><br/>
<sub><sup>Disclaimer: Lithium-ion batteries can be dangerous and must be respected. Proper cell balancing may reduce this danger which is why only trained professionals who implement cell balancing according to the manufacturer recommended best practices should work on them...wait...well that doesn't include Dyson either so I guess we're on our own. According to the internet, they can spontaneously catch fire, burn your house down, drain your retirement fund, and run away with your wife. Consider yourself warned, and please don't sue me if something goes wrong because I assume no liability and provide no warranty. See section 15 and 16 of the COPYING file for more details.
## Miscellaneous Thoughts on Repairing a Battery Pack
![Battery Cell Connections and Measurement Points](https://user-images.githubusercontent.com/46428760/168488794-7eb77a0e-5629-472b-b02a-e23a85353311.jpg)
If you left your battery in storage for a long time, you may have found it no longer turns on at all and won’t charge either. This is because the battery cells have self-discharged so low that the ISL94208 won’t even turn on, which means the microcontroller won’t turn on either.
If you connect a constant current power supply directly to the terminals of the battery pack bypassing the BMS board, you can slowly recharge the cells until they are back within a normal voltage range (above 3V). I've found the [PCBite probes](https://store-usa.arduino.cc/products/4x-sp10-probes-and-test-wires?selectedStore=us) to work well for easily connecting any cell or pack to a bench power supply. Soldering small wires to the nickel strips or jamming on alligator clips somehow would probably work too. I recommend charging at 50-100mA until all cells are over 3V. For safety, you don’t want to charge a battery that’s been depleted too far at the normal charge current (700mA).
After all cells are above 3V, the BMS should power up as usual. If you aren’t getting the 32 red blinks of death, you might not even need to install this firmware (as much as it pains me to admit it). While you have the battery disassembled, I’d recommend making sure all the battery cells are within 100mV of each other,
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
戴森电池管理软件,提高config.h 温度限制,不改会充电超温,停止充电,电池充不满就不充了 (140个子文件)
main.c 41KB
i2c.c 30KB
isl94208.c 11KB
LED.c 9KB
FaultHandling.c 7KB
memory.c 7KB
thermistor.c 4KB
adc.c 3KB
device_config.c 3KB
epwm1.c 3KB
tmr4.c 3KB
tmr2.c 3KB
mcc.c 2KB
pin_manager.c 2KB
dac.c 2KB
firmware.production.cmf 182KB
COPYING 32KB
main.p1.d 438B
FaultHandling.p1.d 429B
isl94208.p1.d 419B
LED.p1.d 399B
mcc.p1.d 380B
i2c.p1.d 350B
thermistor.p1.d 162B
adc.p1.d 155B
pin_manager.p1.d 139B
compiler_support.d 128B
memory.p1.d 124B
epwm1.p1.d 121B
tmr2.p1.d 118B
tmr4.p1.d 118B
dac.p1.d 115B
__eeprom.d 112B
device_config.p1.d 105B
Firmware State Flow Chart - PRELIMINARY.drawio 9KB
Firmware State Flow Chart - FINAL.drawio 6KB
firmware.production.elf 71KB
.gitignore 492B
pin_manager.h 10KB
isl94208.h 7KB
adc.h 7KB
tmr2.h 6KB
tmr4.h 6KB
config.h 6KB
memory.h 6KB
thermistor.h 5KB
dac.h 4KB
epwm1.h 3KB
mcc.h 3KB
i2c.h 3KB
main.h 3KB
FaultHandling.h 2KB
device_config.h 2KB
LED.h 2KB
FU-Dyson-BMS-release-v1_raise_temp.hex 39KB
FU-Dyson-BMS-release-v1_raise_temp.hex 39KB
firmware.production.hxl 54KB
main.i 156KB
isl94208.i 134KB
FaultHandling.i 134KB
LED.i 133KB
i2c.i 126KB
mcc.i 121KB
thermistor.i 120KB
memory.i 116KB
__eeprom.i 115KB
adc.i 114KB
tmr4.i 114KB
tmr2.i 114KB
epwm1.i 113KB
pin_manager.i 113KB
dac.i 113KB
compiler_support.i 2KB
device_config.i 770B
V7 SV11 - PCB 279857.jpg 4.46MB
V6 SV04 - PCB 188002, Repaired.jpg 4.27MB
V6 SV04,SV09 - PCB 61462.jpg 4.21MB
V6 SV04 - PCB 188002, Damaged.jpg 3.95MB
Dyson V7 BMS - PCB 279857 - PCB Spaghetti Wiring Diagram.jpg 1.56MB
Dyson V6 BMS - PCB 61462 - PCB Spaghetti Wiring Diagram.jpg 1.51MB
PICkit Wiring Diagram.jpg 1.38MB
PICkit Wiring Diagram_crop.jpg 1.09MB
Dyson V6 BMS - PCB 61462 - KiCad Schematic.kicad_pcb 50B
Dyson V7 BMS - PCB 279857- KiCad Schematic.kicad_pcb 50B
Dyson V6 BMS - PCB 61462 - KiCad Schematic.kicad_prl 1KB
Dyson V7 BMS - PCB 279857- KiCad Schematic.kicad_prl 1KB
Dyson V6 BMS - PCB 61462 - KiCad Schematic.kicad_pro 6KB
Dyson V7 BMS - PCB 279857- KiCad Schematic.kicad_pro 6KB
Dyson V7 BMS - PCB 279857- KiCad Schematic.kicad_sch 273KB
Dyson V6 BMS - PCB 61462 - KiCad Schematic.kicad_sch 271KB
firmware.production.lst 962KB
Makefile 3KB
firmware.production.map 107KB
MCC_config.mc3 170KB
README.md 23KB
README.md 4KB
Makefile-default.mk 34KB
Makefile-local-default.mk 2KB
Makefile-impl.mk 2KB
Makefile-variables.mk 257B
共 140 条
- 1
- 2
资源评论
weixin_44602405
- 粉丝: 40
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功