| |

What is pre-charge and how it works…

When power is first applied to a capacitive load (like inverters and chargers), a large inrush current is induced. This current creates an arc between the relay contacts… that are severely damaged. For that reason capacitive loads need to be pre-charged with a controlled current. TAO BMS can do that for you as a standard feature…

What is the risk if I do not pre-charge?

In order to smooth the current, power supplies and inverters are fitted with large capacitors on their DC side. When first connected to a battery those capacitors behave like a short circuit for a very short time (microseconds) – just like connecting together the positive and negative posts of the battery. The short-lived high current going through the short circuit is called “inrush current”.

Inverter input capacitor
Short circuit for microseconds when the relay closes

Lithium batteries have a very low internal resistance and are able to supply inrush current of well over 1000 Amps. Typical inrush current would be in the range 500 – 1000 Amps depending on the load capacitance. This current creates an arc between the relay contacts as they close.

In worst cases that arc can fuse the contacts together making it impossible to open the relay again. But in any case it builds up bumps and digs craters on the contact surfaces… the resistance of the relay contacts increases and leads to relay failure.

A relay with damaged contacts should not be used as a protective device

How is pre-charge done?

To avoid inrush current, the input capacitor of chargers and inverters needs to be charged with a controlled current BEFORE the relay is closed.

Practically, to pre-charge the input capacitor of an equipment you:

  1. connect a small resistor in parallel with the relay contacts before the main relay is closed
  2. wait enough time for the small current (limited by the resistor) charges the inverter input capacitor
  3. close the main relay
  4. disconnect the resistor before the main relay is opened again
Inrush current limiter
The resistor needs to be sized
to set the maximum charge current and charge time you want

I will not go into details on how to calculate the resistor value and power rating but here are a few examples to limit the current at 2 Amps:

  • 12 v installation: resistor value = 7 Ω / power rating > 30 W
  • 24 v installation: resistor value = 14 Ω / power rating > 60 W

For the time needed to pre-charge you must account for the parasitic loads in parallel with the inverter. These loads will reduce the pre-charge current going to the inverter input capacitor, and may even prevent full pre-charge. A pre-charge time between 5 and 10 seconds is usually sufficient, but will depend on your installation.

But who wants to activate a manual switch?… and be sure they will not forget!

In a lithium installation, activation of the relay (charge or load) is done by the BMS. For automated pre-charge you can either buy (for around $100) a specialized “inrush current limiting device” that is connected between the BMS and the relay, or…

You can let TAO BMS take care of the pre-charge for you

You just need to buy, for a few dollars, the resistor that is adapted to you installation

How to use the TAO BMS integrated pre-charge feature

TAO BMS output #1 can be configured for pre-charge. That output is connected to an external resistor and you just need to set the time delay needed to pre-charge the capacitors. Could not be easier!

Pre-charge connection diagram:
  • BMS output “6” is used to control the load relay
  • BMS output “1” is the pre-charge circuit
BMS configuration:
  • we set the BMS outputs “1” and “6” to be Normally Open (NO) when the BMS is not powered. When the BMS is powered up they need to be closed (Relays activated by default)
  • the pre-charge time is set to 5 seconds

Lets look at the events logs when the BMS is powered up:

the load relay is closed 5 seconds after the pre-charge circuit has been activated
Trigger configuration
  • I have set the trigger #4 to open the load relay when a cell voltage is less than 2.850 v (low voltage disconnect)
  • the trigger controls relay outputs “1” (pre-charge) and “6” (load relay) with a delay of 60 seconds
  • note that the load relay will close again when all the cell voltages are above 3.150 v
Low voltage disconnect

I use the “Fault simulation” feature of the BMS to set a cell voltage at 2.840 v:

  • the trigger #4 becomes active (V < 2.850 v)
  • 60 seconds later the pre-charge circuit is deactivated (to avoid draining the battery)
  • then the load relay is opened
the sequence of events is confirmed by the BMS events log
Recover from low voltage disconnect

Now I set the simulation to have all cell voltage above 3.150 v:

  • the trigger #4 is deactivated
  • the pre-charge circuit is activated
  • 5 seconds after the load relay is closed
the sequence of events is confirmed by the events log

I welcome any complementary information and constructive critic in the “Comments” section, or you can use the forum discussion topic What is pre-charge and how it works.


  1. Les deux événements sont créés par le BMS quasi simultanément (décalage de l’ordre de la milliseconde):
    #1 – le “Trigger 4” est désactivé (off)
    #2 – le relais précharge est activé (on)

    J’ai du réfléchir un peu et me plonger dans le code pour expliquer ce décalage dans l’horodatage – c’est un peu technique, mais voici l’explication:
    Le BMS n’a pas d’horloge temps réel interne (il ne connait pas le jour/heure), il se mets à jour un registre (0/1) spécifique pour chaque événement – donc dans notre cas deux registres sont mis à jour, mais sans notion de temps ou précédence.
    Régulièrement le Moniteur vient lire ces registres de façon séquentielle pour créer les événements qu’il horodate – dans notre cas il lit le registre pour l’événement #2 en premier. Le Moniteur est multitâche et cette tâche étant de moindre importance peut être interrompue et décalée pour laisser la priorité à des tâche plus critiques. Donc lorsqu’il crée et horodate l’événement #1 il se peut qu’il se soit écoulé un peu plus de 1 seconde, ce qui avec les arrondis explique cet écart de 2 secondes dans l’horodatage des deux événements.
    J’enregistre cela comme un bug dans notre système et à la prochaine révision du firmware Moniteur je verrais comment avoir le même horodatage pour plusieurs événements simultanés. Merci pour avoir pointé cela.

  2. bonjour

    pourquoi dans le tableau : DEFAULT BMS
    17.35.31 Tigger 4 off
    17.35.29 relais precharge :on

    2 secondes d’écarts ?
    si tigger 4 off à 17.35.29 on relais de precharge peut etre on ?

    je n’ai surement pas lu ou compris quelque chose



Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.