- Readme & part list refinements

This commit is contained in:
Michael Balzer 2017-06-17 20:42:41 +02:00
parent 1dcd46b3ab
commit 6010e52af2
5 changed files with 136 additions and 6 deletions

View file

@ -2,9 +2,13 @@
This is an Arduino library providing an emulation of the CAN communication protocol of the BMS (battery management system) on a Renault Twizy. This is an Arduino library providing an emulation of the CAN communication protocol of the BMS (battery management system) on a Renault Twizy.
By reproducing the system interface of the original BMS, the Virtual BMS enables replacing the original by a custom battery without changing anything else on the Twizy.
![Twizy Virtual BMS](extras/Virtual-BMS.svg)
The library provides an API to control power limits and charge current, so a wide range of batteries can be used. Even lead-acid is an option. The library provides an API to control power limits and charge current, so a wide range of batteries can be used. Even lead-acid is an option.
In the most simple case this can be used without any customization. The provided "SimpleBMS" example shows how to derive a very basic battery monitoring by using the Arduino analog ports to monitor the battery pack voltage and temperature. In the most simple case this can be used without any customization. The provided "SimpleBMS" example shows how to create a very basic battery monitoring by using the Arduino analog ports to measure the battery pack voltage and temperature.
If you'd like to contribute a specific BMS adaptation, please fork and add your code in the examples folder. If you'd like to contribute a specific BMS adaptation, please fork and add your code in the examples folder.
@ -17,23 +21,25 @@ You will also need these libraries:
- [MCP_CAN_lib by Cory Fowler](https://github.com/coryjfowler/MCP_CAN_lib) - [MCP_CAN_lib by Cory Fowler](https://github.com/coryjfowler/MCP_CAN_lib)
- [TimerOne by Paul Stoffregen](https://github.com/PaulStoffregen/TimerOne) - [TimerOne by Paul Stoffregen](https://github.com/PaulStoffregen/TimerOne)
To get the smallest possible ROM & RAM footprint, set `TWIZY_DEBUG_LEVEL` to 0 and `DEBUG_MODE` of the MCP_CAN library to 0. This reduces the core memory usage of the VirtualBMS library to (currently) 7758 bytes ROM and 403 bytes RAM. To get the smallest possible ROM & RAM footprint, set `TWIZY_DEBUG_LEVEL` to 0 and `DEBUG_MODE` of the MCP_CAN library to 0. This reduces the core memory usage of the VirtualBMS library to (currently) 8338 bytes ROM and 403 bytes RAM.
## Documentation ## Documentation
- [API reference](API.md) - [API reference](API.md)
- [History](HISTORY.md) - [History](HISTORY.md)
- [Twizy CAN object dictionary](https://docs.google.com/spreadsheets/d/1gOrG9rnGR9YuMGakAbl4s97a6irHF6UNFV1TS5Ll7MY) - [Twizy CAN object dictionary](https://docs.google.com/spreadsheets/d/1gOrG9rnGR9YuMGakAbl4s97a6irHF6UNFV1TS5Ll7MY)
- [Twizy BMS protocol](extras/Protocol.ods) - [Twizy BMS protocol](extras/Protocol.ods)
- [Battery connection scheme](extras/Twizy-BMS-wiring-scheme.pdf) - [Battery connection scheme](extras/Twizy-BMS-wiring-scheme.pdf)
- [Battery connection part list](extras/Twizy-Battery-Part-List.md) - [List of parts](extras/Twizy-Battery-Part-List.md)
- [SEVCON configuration](extras/SEVCON-Configuration.md) - [SEVCON configuration](extras/SEVCON-Configuration.md)
- [Charger configuration](extras/CHARGER-Configuration.md) - [Charger configuration](extras/CHARGER-Configuration.md)
- [Prototype](extras/Prototype-Blazej.md)
## Hardware requirements ## Hardware requirements
@ -49,7 +55,7 @@ To get the smallest possible ROM & RAM footprint, set `TWIZY_DEBUG_LEVEL` to 0 a
- **Arduino**: to run the Twizy Virtual BMS you will need some Arduino and some MCP CAN interface. A wide range of hardware options is available. The code perfectly fits into an Arduino Nano leaving enough memory to implement quite complex custom logics. You should pick an MCP 2515 SPI CAN module with at least 16 MHz clock rate. IRQ connection is optional. - **Arduino**: to run the Twizy Virtual BMS you will need some Arduino and some MCP CAN interface. A wide range of hardware options is available. The code perfectly fits into an Arduino Nano leaving enough memory to implement quite complex custom logics. You should pick an MCP 2515 SPI CAN module with at least 16 MHz clock rate. IRQ connection is optional.
**Note**: Michael Balzer offers to customize the Virtual BMS for individual applications and BMS integration. For details please contact him at <dexter@dexters-web.de>. **Note**: Michael offers to customize the Virtual BMS for individual applications and BMS integration. For details please contact him at <dexter@dexters-web.de>.
- **Connection**: see the [part list](extras/Twizy-Battery-Part-List.md) for relais and connectors needed. - **Connection**: see the [part list](extras/Twizy-Battery-Part-List.md) for relais and connectors needed.

View file

@ -25,7 +25,7 @@ A good source for all parts is [JC Parts](https://www.jcparts.eu/).
| 1x | [![296156226R](parts/296156226R-sm.jpg)](parts/296156226R-nm.jpg) | Relais Chargeur Fltg Ent Chrjr <br/> *Charge relais 40A* | 296156226R | 39.96 € | | 1x | [![296156226R](parts/296156226R-sm.jpg)](parts/296156226R-nm.jpg) | Relais Chargeur Fltg Ent Chrjr <br/> *Charge relais 40A* | 296156226R | 39.96 € |
| | | **Total** *(prices may change)* | | **~ 310 €** | | | | **Total** *(prices may change)* | | **~ 310 €** |
Parts may of course be replaced by functionally compatible ones, for example use a fork lift relais for the main power relais (relais & fuses are no special parts). Blazej Blaszczyk has built his prototype without using Renault parts. For details please contact him at <blazej.blaszczyk@pascal-engineering.com>. Parts may of course be replaced by functionally compatible ones, for example use a fork lift relais for the main power relais (relais & fuses are no special parts). Blazej Blaszczyk has built his [prototype](Prototype-Blazej.md) without using Renault parts. For details please contact him at <blazej.blaszczyk@pascal-engineering.com>.
- The `296740718R` signal connector is Yazaki part no. [7282-8854-30](http://connectors-catalog.sys.yzk.co.jp/yazaki-web/servlet/SubServlet_e?forward=7282-8854-30&plist=detail&select=XX) (contact terminals sold separate). - The `296740718R` signal connector is Yazaki part no. [7282-8854-30](http://connectors-catalog.sys.yzk.co.jp/yazaki-web/servlet/SubServlet_e?forward=7282-8854-30&plist=detail&select=XX) (contact terminals sold separate).
- The `296743399R` main power connector is DELPHI part no. [F473110](http://ecat.delphi.com/feature?search=F473110), with contact terminals [F176600](http://ecat.delphi.com/feature?search=F176600). - The `296743399R` main power connector is DELPHI part no. [F473110](http://ecat.delphi.com/feature?search=F473110), with contact terminals [F176600](http://ecat.delphi.com/feature?search=F176600).

124
extras/Virtual-BMS.svg Normal file
View file

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.2" width="198.02mm" height="33.01mm" viewBox="4599 4650 19802 3301" preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:presentation="http://sun.com/xmlns/staroffice/presentation" xmlns:smil="http://www.w3.org/2001/SMIL20/" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xml:space="preserve">
<defs class="ClipPathGroup">
<clipPath id="presentation_clip_path" clipPathUnits="userSpaceOnUse">
<rect x="4599" y="4650" width="19802" height="3301"/>
</clipPath>
<clipPath id="presentation_clip_path_shrink" clipPathUnits="userSpaceOnUse">
<rect x="4618" y="4653" width="19763" height="3295"/>
</clipPath>
</defs>
<defs>
<font id="EmbeddedFont_1" horiz-adv-x="2048">
<font-face font-family="DejaVu Sans Condensed embedded" units-per-em="2048" font-weight="bold" font-style="normal" ascent="1879" descent="476"/>
<missing-glyph horiz-adv-x="2048" d="M 0,0 L 2047,0 2047,2047 0,2047 0,0 Z"/>
<glyph unicode="z" horiz-adv-x="927" d="M 105,1120 L 985,1120 985,870 454,256 985,256 985,0 83,0 83,250 614,864 105,864 105,1120 Z"/>
<glyph unicode="y" horiz-adv-x="1165" d="M 22,1120 L 345,1120 616,360 846,1120 1168,1120 744,-106 C 701,-231 652,-318 595,-368 538,-417 464,-442 371,-442 L 184,-442 184,-207 285,-207 C 340,-207 380,-197 405,-178 430,-159 449,-124 463,-74 L 472,-43 22,1120 Z"/>
<glyph unicode="w" horiz-adv-x="1588" d="M 65,1120 L 378,1120 547,348 717,1120 986,1120 1156,356 1326,1120 1639,1120 1373,0 1022,0 851,770 682,0 330,0 65,1120 Z"/>
<glyph unicode="u" horiz-adv-x="1033" d="M 144,436 L 144,1120 468,1120 468,1008 C 468,947 468,871 467,780 466,688 466,627 466,596 466,506 468,441 473,402 477,362 484,333 494,315 507,292 525,274 546,261 567,248 592,242 619,242 686,242 739,271 778,328 816,385 835,465 835,567 L 835,1120 1157,1120 1157,0 835,0 835,162 C 786,97 735,49 681,18 626,-13 566,-29 501,-29 385,-29 297,11 236,90 175,169 144,285 144,436 Z"/>
<glyph unicode="t" horiz-adv-x="848" d="M 507,1438 L 507,1120 839,1120 839,864 507,864 507,389 C 507,337 516,302 535,284 553,265 590,256 645,256 L 811,256 811,0 535,0 C 408,0 317,30 264,89 211,148 184,248 184,389 L 184,864 24,864 24,1120 184,1120 184,1438 507,1438 Z"/>
<glyph unicode="s" horiz-adv-x="927" d="M 942,1085 L 942,813 C 873,845 807,869 743,885 678,901 618,909 561,909 500,909 454,901 425,884 395,867 380,840 380,805 380,776 391,754 414,739 436,724 476,712 535,705 L 591,696 C 756,673 868,634 925,581 982,528 1010,444 1010,330 1010,211 970,121 891,61 812,1 693,-29 536,-29 469,-29 401,-23 330,-12 259,0 186,18 111,41 L 111,313 C 175,278 241,252 309,235 376,218 445,209 514,209 577,209 624,219 656,238 688,257 704,286 704,324 704,356 693,380 671,396 649,411 605,423 540,432 L 483,440 C 340,460 239,497 182,551 124,605 95,687 95,797 95,916 132,1004 205,1061 278,1118 391,1147 542,1147 601,1147 664,1142 729,1132 794,1122 865,1106 942,1085 Z"/>
<glyph unicode="r" horiz-adv-x="769" d="M 904,815 C 875,830 847,841 820,848 792,855 764,858 735,858 652,858 589,829 544,770 499,711 477,626 477,516 L 477,0 155,0 155,1120 477,1120 477,936 C 518,1009 566,1062 620,1095 673,1128 738,1145 813,1145 824,1145 835,1145 848,1145 861,1145 879,1143 903,1139 L 904,815 Z"/>
<glyph unicode="o" horiz-adv-x="1139" d="M 634,891 C 563,891 508,863 471,806 434,749 415,666 415,559 415,452 434,370 471,313 508,256 563,227 634,227 705,227 759,256 796,313 833,370 851,452 851,559 851,666 833,749 796,806 759,863 705,891 634,891 Z M 634,1147 C 808,1147 944,1095 1041,991 1138,887 1187,743 1187,559 1187,375 1138,231 1041,127 944,23 808,-29 634,-29 461,-29 325,23 227,127 128,231 79,375 79,559 79,743 128,887 227,991 325,1095 461,1147 634,1147 Z"/>
<glyph unicode="m" horiz-adv-x="1642" d="M 1089,934 C 1130,1003 1178,1056 1234,1093 1290,1129 1352,1147 1419,1147 1535,1147 1623,1107 1684,1028 1745,949 1775,833 1775,682 L 1775,0 1451,0 1451,584 C 1452,593 1452,602 1453,611 1453,620 1453,634 1453,651 1453,730 1443,788 1422,824 1401,859 1366,877 1319,877 1258,877 1211,849 1178,793 1145,737 1127,656 1126,550 L 1126,0 802,0 802,584 C 802,708 792,788 773,824 754,859 719,877 670,877 609,877 561,849 528,793 494,736 477,656 477,551 L 477,0 153,0 153,1120 477,1120 477,956 C 516,1019 562,1067 613,1099 664,1131 721,1147 783,1147 852,1147 914,1128 968,1091 1021,1054 1062,1001 1089,934 Z"/>
<glyph unicode="l" horiz-adv-x="345" d="M 155,1556 L 477,1556 477,0 155,0 155,1556 Z"/>
<glyph unicode="i" horiz-adv-x="345" d="M 155,1120 L 477,1120 477,0 155,0 155,1120 Z M 155,1556 L 477,1556 477,1264 155,1264 155,1556 Z"/>
<glyph unicode="e" horiz-adv-x="1112" d="M 1161,563 L 1161,461 408,461 C 415,377 443,314 490,272 537,230 602,209 686,209 754,209 824,220 895,243 966,265 1038,299 1113,344 L 1113,68 C 1037,36 961,12 885,-5 808,-21 732,-29 656,-29 473,-29 332,23 231,126 130,229 79,373 79,559 79,742 129,885 228,990 327,1095 464,1147 638,1147 797,1147 924,1094 1019,988 1114,882 1161,740 1161,563 Z M 830,682 C 830,750 812,805 777,847 741,888 694,909 636,909 574,909 524,890 485,851 446,812 421,755 411,682 L 830,682 Z"/>
<glyph unicode="a" horiz-adv-x="1059" d="M 607,504 C 540,504 489,491 455,466 421,441 404,403 404,354 404,309 418,273 445,248 472,222 510,209 559,209 620,209 671,233 712,282 753,330 774,390 774,463 L 774,504 607,504 Z M 1099,639 L 1099,0 774,0 774,166 C 731,98 682,49 628,18 574,-13 508,-29 431,-29 326,-29 242,5 177,73 112,140 79,228 79,336 79,467 120,564 201,625 282,686 410,717 584,717 L 774,717 774,745 C 774,802 754,843 714,870 673,896 611,909 526,909 457,909 392,901 333,886 274,871 218,848 167,817 L 167,1090 C 236,1109 306,1123 376,1133 445,1142 515,1147 584,1147 766,1147 897,1107 978,1028 1059,948 1099,818 1099,639 Z"/>
<glyph unicode="V" horiz-adv-x="1430" d="M 9,1493 L 357,1493 714,391 1069,1493 1418,1493 920,0 507,0 9,1493 Z"/>
<glyph unicode="T" horiz-adv-x="1245" d="M 9,1493 L 1247,1493 1247,1202 802,1202 802,0 455,0 455,1202 9,1202 9,1493 Z"/>
<glyph unicode="S" horiz-adv-x="1086" d="M 1104,1446 L 1104,1130 C 1031,1167 959,1194 889,1213 818,1232 752,1241 689,1241 606,1241 545,1228 506,1203 466,1178 446,1138 446,1085 446,1045 459,1014 486,992 513,969 561,950 632,934 L 779,901 C 929,868 1035,817 1098,749 1161,681 1192,584 1192,459 1192,294 1148,172 1061,92 973,11 839,-29 658,-29 573,-29 487,-20 402,-2 316,16 230,43 144,78 L 144,403 C 230,352 313,314 393,289 473,263 550,250 625,250 700,250 758,264 799,292 839,320 859,360 859,412 859,459 845,495 818,520 791,545 736,568 654,588 L 520,621 C 386,653 288,704 226,774 163,844 132,938 132,1057 132,1206 175,1320 262,1400 349,1480 473,1520 634,1520 708,1520 784,1514 862,1502 940,1489 1021,1471 1104,1446 Z"/>
<glyph unicode="M" horiz-adv-x="1509" d="M 169,1493 L 610,1493 916,694 1224,1493 1664,1493 1664,0 1336,0 1336,1092 1027,287 807,287 498,1092 498,0 169,0 169,1493 Z"/>
<glyph unicode="C" horiz-adv-x="1166" d="M 1235,82 C 1171,45 1105,18 1036,-1 967,-20 895,-29 820,-29 596,-29 419,41 288,180 157,319 92,507 92,745 92,984 157,1173 288,1312 419,1451 596,1520 820,1520 895,1520 967,1511 1036,1492 1105,1473 1171,1446 1235,1409 L 1235,1100 C 1170,1149 1107,1184 1045,1207 982,1230 917,1241 848,1241 724,1241 627,1197 556,1109 485,1021 450,900 450,745 450,591 485,470 556,382 627,294 724,250 848,250 917,250 982,261 1045,284 1107,307 1170,342 1235,391 L 1235,82 Z"/>
<glyph unicode="B" horiz-adv-x="1112" d="M 707,915 C 762,915 803,928 832,955 860,982 874,1021 874,1073 874,1124 860,1164 832,1191 803,1218 762,1231 707,1231 L 516,1231 516,915 707,915 Z M 719,262 C 789,262 842,278 877,311 912,344 929,393 929,459 929,524 912,572 877,605 842,637 789,653 719,653 L 516,653 516,262 719,262 Z M 1041,799 C 1116,775 1173,731 1214,666 1255,601 1275,522 1275,428 1275,284 1231,177 1144,106 1056,35 923,0 744,0 L 169,0 169,1493 689,1493 C 876,1493 1011,1462 1095,1399 1178,1336 1220,1236 1220,1098 1220,1025 1205,964 1175,913 1144,862 1100,824 1041,799 Z"/>
<glyph unicode=" " horiz-adv-x="635"/>
</font>
</defs>
<defs class="TextShapeIndex">
<g ooo:slide="id1" ooo:id-list="id3 id4 id5 id6"/>
</defs>
<defs class="EmbeddedBulletChars">
<g id="bullet-char-template(57356)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"/>
</g>
<g id="bullet-char-template(57354)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"/>
</g>
<g id="bullet-char-template(10146)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"/>
</g>
<g id="bullet-char-template(10132)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"/>
</g>
<g id="bullet-char-template(10007)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"/>
</g>
<g id="bullet-char-template(10004)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"/>
</g>
<g id="bullet-char-template(9679)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"/>
</g>
<g id="bullet-char-template(8226)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"/>
</g>
<g id="bullet-char-template(8211)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"/>
</g>
<g id="bullet-char-template(61548)" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 173,740 C 173,903 231,1043 346,1159 462,1274 601,1332 765,1332 928,1332 1067,1274 1183,1159 1299,1043 1357,903 1357,740 1357,577 1299,437 1183,322 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"/>
</g>
</defs>
<defs class="TextEmbeddedBitmaps"/>
<g class="SlideGroup">
<g>
<g id="container-id1">
<g id="id1" class="Slide" clip-path="url(#presentation_clip_path)">
<g class="Page">
<g class="com.sun.star.drawing.CustomShape">
<g id="id3">
<rect class="BoundingBox" stroke="none" fill="none" x="4598" y="4699" width="7514" height="3203"/>
<path fill="rgb(153,204,255)" stroke="none" d="M 8355,7900 L 4599,7900 4599,4700 12110,4700 12110,7900 8355,7900 Z"/>
<path fill="none" stroke="rgb(52,101,164)" d="M 8355,7900 L 4599,7900 4599,4700 12110,4700 12110,7900 8355,7900 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="DejaVu Sans Condensed, sans-serif" font-size="635px" font-weight="700"><tspan class="TextPosition" x="7481" y="6520"><tspan fill="rgb(0,0,0)" stroke="none">Twizy</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id4">
<rect class="BoundingBox" stroke="none" fill="none" x="16899" y="4699" width="7503" height="1603"/>
<path fill="rgb(189,221,141)" stroke="none" d="M 20650,6300 L 16900,6300 16900,4700 24400,4700 24400,6300 20650,6300 Z"/>
<path fill="none" stroke="rgb(52,101,164)" d="M 20650,6300 L 16900,6300 16900,4700 24400,4700 24400,6300 20650,6300 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="DejaVu Sans Condensed, sans-serif" font-size="635px" font-weight="700"><tspan class="TextPosition" x="18629" y="5720"><tspan fill="rgb(0,0,0)" stroke="none">Custom BMS</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id5">
<rect class="BoundingBox" stroke="none" fill="none" x="16899" y="6299" width="7503" height="1603"/>
<path fill="rgb(189,221,141)" stroke="none" d="M 20650,7900 L 16900,7900 16900,6300 24400,6300 24400,7900 20650,7900 Z"/>
<path fill="none" stroke="rgb(52,101,164)" d="M 20650,7900 L 16900,7900 16900,6300 24400,6300 24400,7900 20650,7900 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="DejaVu Sans Condensed, sans-serif" font-size="635px" font-weight="700"><tspan class="TextPosition" x="18127" y="7320"><tspan fill="rgb(0,0,0)" stroke="none">Custom Battery</tspan></tspan></tspan></text>
</g>
</g>
<g class="com.sun.star.drawing.CustomShape">
<g id="id6">
<rect class="BoundingBox" stroke="none" fill="none" x="11150" y="4650" width="6702" height="3302"/>
<g>
<defs>
<linearGradient id="gradient1" x1="17800" y1="6300" x2="11199" y2="6300" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:rgb(189,221,141)"/>
<stop offset="1" style="stop-color:rgb(153,204,255)"/>
</linearGradient>
</defs>
<path style="fill:url(#gradient1)" d="M 11859,4700 L 17141,4700 17141,5503 17142,5503 17142,5503 17801,6300 17142,7097 17142,7097 17141,7097 17141,7901 11859,7901 11859,7097 11858,7097 11858,7097 11200,6300 11858,5503 11858,5503 11859,5503 11859,4700 Z"/>
</g>
<path fill="none" stroke="rgb(52,101,164)" stroke-width="100" stroke-linejoin="round" d="M 11859,4700 L 17141,4700 17141,5503 17142,5503 17142,5503 17801,6300 17142,7097 17142,7097 17141,7097 17141,7901 11859,7901 11859,7097 11858,7097 11858,7097 11200,6300 11858,5503 11858,5503 11859,5503 11859,4700 Z"/>
<text class="TextShape"><tspan class="TextParagraph" font-family="DejaVu Sans Condensed, sans-serif" font-size="635px" font-weight="700"><tspan class="TextPosition" x="12610" y="6520"><tspan fill="rgb(0,0,0)" stroke="none">Virtual BMS</tspan></tspan></tspan></text>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB