Giter Club home page Giter Club logo

diebiems's Introduction

DieBieMS - Hardware

Introduction

My personal transportation environment is becoming more and more electrical. All vehicles so far contain Lithium based batteries and need some form of automated management to be utilized in a save and easy way. All affordable alternatives that I could find were either to dangerous(extreme cell voltage limits), couldn't carry the desired current (>70A), not compact enough or were not customizable. with this fully opensource project I would like to contribute to a more save and affordable Lithium based electric vehicle (or possible other usage) future.

alt text

alt text

Latest hardware release (production files)

There have been two hardware realizations so far, not all design revisions make it to the real world. Sometimes a version is skipped when hardware errors are fixed but also significant functionality is added:

  • V0.1 Initial hardware This version has a few design flaws:

    • To small capacitor C7, this makes that the LOAD+ output sometimes fail to enable.
    • Components C37 and the 0R jumper resistor (removed in V0.3) are to close to U1 (LTC6803) making it difficult to assemble.
    • Pre-charge resistor R33 to low (will burn if load capacitance is to high)
  • V0.3 Fixed version of V0.1 with added functionality ( current version) This version has some added functionality:

    • SDCard for logging (to develop a SoC and SoH algorithm)
    • An extra safety feature that disables the charge input and load output when the communication to the LTC6803 is halted.
    • A serial port connector for an external OpenLOG logger (if fast SDCard implementation is not as trivial as I thought).
    • An option to bypass the charge input diode allowing higher charge currents.
    • An option to add an extra shunt resistor to allow for higher measurable battery current.
  • V0.4

    • Improved charge diode bypass current carrying capability (in development)

Production data for most recent version can be found here. The initial project blog/log can be found here. And the schematic in PDF here.

Features

This BMS is an all in one solution, combined with a lithium battery it is possible to replace an existing lead based battery pack (ideal for upgrading a bulky and heavy electric scooter with a much lighter li-polymer pack). In order to be a plug and play system the BMS carries all power electronics and controller systems to switch the main power path and communicate with external interfaces (displays, buttons or anything else you adapt to it). A small list of features:

  • Soft power switch input with LED (LOAD) on/off + charge indicator.
  • High side power switching to allow all grounds to remain connected at all times.
  • Charge input -> switched (high side) -> to charger output (to disable charger if a cell reaches the max cell voltage).
  • Charge input has optional input diode to eliminate current leakage or power on exposed pins (like the male charge connector).
  • Discharge input -> switched (high side)-> to LOAD e.i. motor controller / VESC (to disable the load when a cell reaches the min voltage).
  • Isolated CAN bus interface for cell voltage monitoring and charger detection, status monitoring + much more with future updates (like state of charge / state of health).
  • Pack current sensing (bi-directional).
  • Pre charge for high capacitive load (with shortcircuit detection, in case the motor controller is shorted / dead / wrong polarity).
  • USB interface for serial communication and firmware upgrades (no need for a programmer -> HW serial bootloader is used).
  • Buzzer to indicate possible Error state.
  • Compact footprint

Electrical specifications

  • Max load current +/- 100A (both directions, theoretically it's 140A but this is still untested).
  • Max charge current 10A (with diode) or 30A (with diode bypass).
  • Cell voltage range 2.5V to 4.5V
  • Pack voltage 12V to 54V

Realisation

Out of the many ways to realise an all in one BMS I choose the more simple but maybe more expensive way. Since there is a lot of desired functionality and the need for a small footprint many features are realized by complex chips.

Power-on state management

There are several ways to enable the BMS and put it into the corresponding operation mode. As of now the following modes of operation are present:

  • Normal operation

    This mode is triggered by a single pres on the powerbutton, when the button is released the microcontroller keeps the BMS on. A long pres will powerdown the BMS. The LED turns solid on when enabled and turn off when powerdown long buttonpress is detected.

  • Charging mode

    When the CHARGE+ input is brought >3V above the PACK+ terminal the BMS is booting into charge mode, the microcontroller will check the cell voltages and if desired enable the switch to allow current to flow from CHARGE+ to PACK+. In this mode the microcontroller knows the presence of the charge. If the charger is removed the microcontroller will keep the BMS on for a configurable amount of time to display a status message (show for example the charged amount) followed by powering down.

  • External mode

    When a USB cable is connected or 5V is applied on the CAN connector the BMS will boot into external power mode. Firmware updating trough the hardware bootloader or communication over CAN bus is now possible. The power on enable by CAN functionality allows an externally battery powered telemetry device to enable the BMS and request battery pack data (giving for example daily / weekly / monthly status updates).

Used technology

The IC's used with their corresponding functionality:

  • LTC6803-2 -> Battery stack cell voltage monitor.
  • STM32F303 -> Main microcontroller.
  • ISL28022 -> Pack voltage and current measurement.
  • BQ76200 -> Height side FET driver for LOAD+ CHARGE+ and Pre-charge switch driving.
  • LM5165 -> SMPS Buck converter, converting the pack voltage to +3.3V.
  • ISO1050 -> isolated CAN-Bus transceiver.
  • CP2104-F03 -> USB to serial converter for bootloader based firmware updates and debugging.

alt text

alt text

alt text

alt text

Example usage

Electric skateboard

Power switching demo (early firmware state):

VIDEO01

More complete demo:

VIDEO02

Electric scooter

No videos available yet.

diebiems's People

Contributors

diebieengineering avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.