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 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, double-battery support is not available for your inverter. Inverter should be connected to same CAN channel as Battery 1

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

This gets a bit trickier. The Battery-Emulator has automatic control over battery 1, but there is no way to automate the closing of contactors on battery 2. You could wire up both batteries to turn on at the same time, but this requires them to be equalized once manually before wiring them up. The risk with this is that if the system is powered off for a long time, the batteries might drift apart from each other in SOC% and voltage level. Then when the system is powered on again, one battery will dump massive amounts of current into the other one, blowing fuses.

So for now there are two options.

  • Manually engaging the secondary battery contactors when voltage matches on both sides. (Requires large effort to start)
  • Locking together both batteries via automated contactor control via GPIO (Riskier)

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