Repurposed Laptop Batteries With a Twist

Arduino with lithium ion battery

Lithium ion batteries are becoming more and more common these days, but some of the larger capacity batteries can still carry a pretty hefty price tag. After finding Acer’s motherboard schematics online and doing a little reverse-engineering, [Tiziano] has found a way to reuse batteries from his dead laptop, not only saving the batteries from the landfill but also cutting costs on future projects.

These types of batteries have been used for many things in the past, but what makes this project different is that [Tiziano] is able to monitor the status of the batteries and charge them using I2C with an Arduino and a separate power supply, freeing the batteries from the bonds of the now-useless laptop.

With this level of communication between the microcontroller and the battery pack, there is little chance of the batteries catching on fire when they’re used in another project. Since the Arduino can also monitor the current amount of charge in the batteries, there is also a reduced risk that they will be damaged from under- or over-charging.

This wasn’t just as simple as hooking up the positive and negative leads of a power supply to the battery. [Tiziano] also had to model the internal resistance of the motherboard that the battery expects to see, and get the supply voltage just right so the battery’s safety protocols wouldn’t kick in to prevent them from charging. After a few other hurdles were jumped, [Tiziano] now has a large capacity lithium ion battery at his disposal for any future projects.

13 thoughts on “Repurposed Laptop Batteries With a Twist

    1. If it fails quickly (e.g. 80% -> 20% capacity in a month or faster), it is probably a single cell. If it just degrades slowly (10% per year or so) then it is normal and probably all cells are quite much the same.

    2. Rechargeable lithium batteries do not drop a lot of energy capacity (Wh) when they age, what they do drop is the capacity to supply maximum current.

      Laptops draw high current in bursts and this is why batteries seem to die fast, once the peak current capacity of the cells get near the peak current draw of the machine the reported battery capacity goes down fast.

      This is somewhat of a simplification of course, the peak current capacity of the cell depends on many factors such as age, cycle count, temperature and charge state but the above still applies.

      I have been reusing used laptop cells for a while, and at low current draw (<200mA) i get very good energy output even from cells out of "dead" packs.

      1. Indeed so. It’s the internal resistance of the cell that really determines how long an aged battery lasts. According to TI’s application notes for their Impedance Track fuel gauges, a Li-ion cell’s internal resistance doubles roughly every 100 charge cycles.

        It’s also why light loads work fine even on fairly aged laptop battery packs. Less current = less voltage drop on the battery terminals.

    1. Yeah.. too bad that they are very annoying to open. I once opened one of these Acer batteries, had to Dremel the seams and hope not to hit anything sensitive.

      1. Once you figure out how, most laptop packs are dead easy to open. It’s still a destructive process but most packs can be opened pretty quick using only fingers and a small screwdriver.

      2. I dented two of six cells in the first pack I opened trying to get the seams to crack. For the next two packs, I cut through the battery case in the middle, between the two rows of cells. This gave me more space than if I’d tried cutting at the seams, which tend to contact the cells themselves. Also, I used a hacksaw blade in a utility holder to kind of scrape through the plastic, which gave me a lot of control.

  1. Discharging and charging can be done without the I2C communication, the internal protections of the pack itself still work, you just get no warning that it’s about to disconnect ;-)

    1. The pack tells how to charge itself via I2C, and if you do not do it properly, it can disable the charge, sometimes permanently (by standard, there are two mosfets in there), so pack can either disable charging, or discharging, or both.
      In short – there are two commands to which pack responds – charging current, and charging voltage. That sets the values for the charger. The pack itself can not limit the voltage or current, it only tells how to charge itself.

      And it is even easier to just take a smart battery charger chip. just add external components, and it will charge ANY notebook battery.

      1. I’m not currently modifying the charge current, to keep things easy i just use a safe amount of current which i’ve been using for months and no problem with it, the battery protection IC and the gauge circuit in the case of acer batteries are two separate chips, the protection IC has a charge current limit that is fixed whatever current the gas gauge ic ( which is the one connected to smbus ) reports

        The usefulness of that project is not charging safely , but an easy way to have time and % left of the battery on a microcontroller like arduino, easiest project i’ve done with it but for which i still lack the 3d printer to do the case , is a smartphone charger with OLED display that shows power draw and other parameters.

        Using a smart battery charger chip may require SMD soldering and so on which can make these batteries harder to use , than simply connect a CC-CV buck converter set to a safe current ( let’s say <= 1A is fine for all 6 cell laptop batteries )

  2. i just take the cells out and charge them with a lipo charger. it works fine. haven’t had any explosions yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s