Double Battery - dalathegreat/Battery-Emulator GitHub Wiki

[!CAUTION] Working with high voltage is dangerous. Always follow local laws and regulations regarding high voltage work. If you are unsure about the rules in your country, consult a licensed electrician for more information.

What is this feature?

Double Battery means running two battery packs at the same time. This doubles the capacity of the system. Incase you need more energy than one EV pack can provide, this functionality is for you.

Good info on running multiple packs and associated risks: https://www.orionbms.com/manuals/pdf/parallel_strings.pdf

How does it work?

The batteries get connected in parallel. This means the voltage stays the same, but the capacity doubles.

[!IMPORTANT]
The batteries need to be of the same model and size, and preferably as close as possible in state of health. Do not connect battery packs with too much variation in condition, this lowers overall efficiency significantly!

[!CAUTION] Do not connect packs in series. There are no safeties implemented for operation in series connection!

Which inverters are supported?

Double-Battery can be run on all inverters. The inverter will think that there is just one large battery attached.

[!Note]
Double-Battery should not be confused with Dual Input inverters. Dual input can have 2 separate batteries operating at the same time (Foxess for instance).

Which batteries are supported?

Double battery support is only available for highly stable battery types. The ones with checkmark have been confirmed working well.

If your batteries are not on this list, get in touch with a developer.

CAN communication

:information_source: If your inverter does not support seeing automotive CAN messages and need a separate channel, you need a CAN-Filter. https://github.com/dalathegreat/Battery-Emulator/wiki/CAN-filter-hardware

If you are using LilyGo:

image

If you are using Stark CMR:

  • The first battery connects to CAN
  • The second battery connects to CANFD

image

High voltage connection diagram

:warning: Dealing with one EV battery pack can be dangerous. Using two batteries increases the risks associated with lithium batteries with 100%. Accidentally connecting together the DC side of two batteries at varying SOC% will cause massive amounts of current to be dumped between the packs. Always use fuses to limit the risk and avoid melting wires.

There are two types of EV battery packs, those with CAN activated contactors, and those with externally powered contactors. The safest version to use is CAN controlled contactors (Tesla/Kia/Hyundai etc.). The one that require more caution is externally controlled (Nissan/Zoe etc.)

CAN controller contactors

Connect the high voltage lines like in this diagram. Remember to place fuses both between the Inverter and packs, and the interconnect between the packs.

image

The system will automatically close the contactors on the Battery 2, if it falls within 3.0V of the Battery 1.

Externally controlled contactors

To control the second battery from the software, install an extra relay in the cabinet.

Wire Battery nr2 pos and neg relay wires (together) to this extra external relay. ( Battery nr2 precharge wire can be ignored)

On a Stark_CMR installation use GPIO pin 19, or on a Lilygo installation use GPIO pin 15 as control signal for this extra external relay.

Uncomment //#define CONTACTOR_CONTROL_DOUBLE_BATTERY in the software

When battery nr2 voltage matches Battery nr1 the extra relay will engage and combine the two batterys.

Taking Double Battery into use.

To start with, set up the USER_SETTINGS files. Here are the settings for a typical Nissan LEAF double battery setup using a CAN MCP2515 add-on chip.

In USER_SETTINGS.h, enable the following:

  • #define NISSAN_LEAF_BATTERY
  • #define DOUBLE_BATTERY
  • #define CAN_ADDON

In USER_SETTINGS.cpp, configure the following:

  • .battery_double = CAN_ADDON_MCP2515

Here is another configuration example, this time a Double Tesla Model 3 setup using a Stark CMR board with the secondary battery connected to the CANFD port.

In USER_SETTINGS.h, enable the following:

  • #define TESLA_MODEL_3Y_BATTERY
  • #define DOUBLE_BATTERY
  • #define CANFD_ADDON
  • #define USE_CANFD_INTERFACE_AS_CLASSIC_CAN

In USER_SETTINGS.cpp, configure the following:

  • .battery_double = CANFD_NATIVE

After the setup, flash the board and verify that you can see both batteries in the Webserver

image