From 5a0b39574fcc186fdefa562f278dd39d8d231eab Mon Sep 17 00:00:00 2001 From: Michael Balzer Date: Sat, 17 Jun 2017 20:48:10 +0200 Subject: [PATCH] - svg replaced by png --- README.md | 2 +- extras/Virtual-BMS.png | Bin 0 -> 22912 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 extras/Virtual-BMS.png diff --git a/README.md b/README.md index cf9a0d7..c28e971 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This is an Arduino library providing an emulation of the CAN communication proto 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) +![Twizy Virtual BMS](extras/Virtual-BMS.png) 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. diff --git a/extras/Virtual-BMS.png b/extras/Virtual-BMS.png new file mode 100644 index 0000000000000000000000000000000000000000..c096faadd1bed44159771a392ce90ef453c23743 GIT binary patch literal 22912 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