Battery Management System using LTC6803-3 and AT90CAN128

In this post I want to notify the world of an OpenSource project I did last year, which I never published until I found a thread about these ICs on a forum.


This project went on as a student research project, I developed a Battery Management System for the Formula Student racecar SPR12e. You can find more information on the race team at this page. It uses LTC6803-3 slave boards with circuitry to support 6 temperature sensors with each slave and then uses the proprietary current based spi daisy chain bus to hand over the data to a AT90CAN128 based master. The master has circuitry to monitor the output voltage of the battery, has a >40V warning LED, a precharge current detection and driver for the large relais. There is also some stuff to give additional safety when the code running on the AVR fails.

Problems and missing features:
– Charging
– no SoC calculation / no current sensing
– Slaves draw unsymmetrical current in off state, should be fixed
– We had problems with data transmission when confronted with strong electro-magnetic-fields, although this could be a motor controller issue

What should be added/changed for a stable system:
– (Master) Remove voltage and precharge current measurement, add LEM DHAB S/44 socket and LEM LV 25-P
– (Slave) implement clean shutoff circuit as shown in datasheet

I know a lot of errors I did in the design and I am currently doing a second design for the racing team which uses LTC6803 chips and an onboard LPC11C1X for each slave to directly communicate over a CAN Bus with the master.
There is a lousy documentation in PDF, which brought me an good grade. You can view it here.

The github project can be found here.