FCDS - FERCSA's charger/discharger station. (MM giveaway inside!)

FERCSA

Member
Joined
Jan 16, 2017
Messages
87
Hi!

In the last few months I built my own laptop(yes and it's working great!) and I thought it's gonna be fun if I made a arduino based battery pack for it. Until then I'm using a smbus based panel from a salvaged x60 battery. I know it has a lot of feature I'm mean a lot.. but heey where is the challenge?
So in the mean time I got a lot of old laptop batteries for research and everything, so I got an another idea.. I should build an automatic charger/discharger station for my 18650 cells too.
This two things are very related, because I can use the discharger mosfet circuit for balance my batteries in my laptop, right?

So I started to brainstorming and I came up with a really good solution for my station: stackable charger/discharger modules!
There'll be the master module with arduino and a multiplexer then a lot of slave modules. Each module will accept 8 18650 cells. If you want more just thrown in one more slave module and you already can charge or discharge 16/24/32.. cells in the same time. Of course arduino will control and logging everything! Voltage, current, temperature etc. I'm planning to add wifi support too!

This log from my very early prototype in my laptop. In the current state it's just a battery monitor system:
docs.google.com/spreadsheets/d/15-TjWL1w3QZ-HRGr0dIwD0O4YzJwbcgDjGcCb15BkmM/edit?usp=sharing
Diagrams on the 2nd and 3rd sheet.

3 cells under charging, nothing fancy here right now it's just a simple battery monitor with voltages. Arduino logs everything in a csv file. But first I need to finish the charger station then I'll upgrade it with a balancer and any safety feature, right now there is a blinking led for low voltage..

Anyway if anybody interested in my project(s) I can (b)log my progress here. I'm not a youtuber.. so I'm not gonna make any videos sry, maybe one when I'm finished.

I open for any suggestions, comments etc..




ps.: FCDS = FERCSA's charger/discharger station.
 
Hey,
I'm definitely interested. I'm going to be starting work on cell recovery soon. I have some stuff coming in and I will be getting batteries soon. Anything that'd make the recovery and getting status of each cell faster and more efficient, then I'm all for it :)

Kori
 
Cool.
So about the system. There'll be a Master module(stm32, sdcard reader, esp8266), a Slave module(multiplexer, stackable connectors), Battery holders with tp4056s and a Discharger module for each tp4056. The last one is a tiny pcb with mosfet, resistors, connectors etc, it'll sit on top of the tp4056. I prototyped it yesterday with a salvaged mosfet from one of my dead motherboard and it's working great. You can see the result on thingspeak, I just uploaded manually a sample csv, check it out: https://thingspeak.com/channels/220137 In the future it'll be automatic of course. The cell is not in the best shape but for testing purposes it's fine.
Right now I'm waiting for my orders.. multiplexer, esp8266, temp sensors and other stuffs, until then there is not too much to do.

For next step. Maybe I should do a diagram or sort of to how I imaged the whole system.
 
Looks good. I see what ya mean that that cell isn't that great for testing. Rapid drop in voltage right off the line :p

What I would recommend for the charts, is instead of having it show "Date", change it to "Time" and show the time in minutes.seconds. It would show a better progression of time instead of 13:10, 13:12, etc. But I know you're in your early phase of it and may of just thrown data in a spreadsheet real quick :)

You have some pics of what your current setup looks like? even if in alpha stage.

Kori
 
In my random video watching on Youtube, I came across the one below. It features pretty much what you had in mind :p



*tried to get the embed to work, but the actual posting is broken, even tho it shows the preview in preview mode, odd*
 
Hahah, love the "use what you have available" approach :)
 
Just a little update. I'm still waiting for some parts but until then I made some progress on the software side. Right now I've one 16ch multiplexer which allow me to monitor and control 4 cells. It's less than what I excepted but far enough. Anyway my board has 10 analog pins so it means 10 multiplexer aka maximum 40 cells. That's pretty good, I think.

 
i am confused why a 16 channel multiplexer only allows for 4 cells to be measured, I would imagine at most, 1 voltage, 1 current, 1 temperature, so 16 / 3 = 5 + ambient temp / voltage reference? or is it just convenience with 4 bay holders

equally, most micros can sample there ADC's at Khz, so long as there input is buffered by say an op amp, or has an impedance of less than 10K, meaning by rights, you should be able to stack these even furthur if you wished, though in its current format it might end up saturating the serial link...

equally is your current load oscillating, i am curious why it would not be more stable, i agree 40mA isnt much, but the batteries should be a very predictable source? (if your using a mosfet, i would have to ask have you fitted a gate resistor)

Now i sound a little harsh, but i just want to help with the small issues if I can.
 
Ah IEC 61960 includes a standard way to test for internal resistance.
Wonder how many battery chargers follow that, not many would be my guess.
 
I would imagine not many, even though they have the capability to,

Its why having a constant current load with a setpoint makes things kinda nice, as you can take those measurements on the fly by altering the discharge current setpoint
though it does make some assumptions that the load can step up or down pretty quickly which you can compensate out if needed,
 
Rerouter said:
i am confused why a 16 channel multiplexer only allows for 4 cells to be measured, I would imagine at most, 1 voltage, 1 current, 1 temperature, so 16 / 3 = 5 + ambient temp / voltage reference? or is it just convenience with 4 bay holders

equally, most micros can sample there ADC's at Khz, so long as there input is buffered by say an op amp, or has an impedance of less than 10K, meaning by rights, you should be able to stack these even furthur if you wished, though in its current format it might end up saturating the serial link...

equally is your current load oscillating, i am curious why it would not be more stable, i agree 40mA isnt much, but the batteries should be a very predictable source? (if your using a mosfet, i would have to ask have you fitted a gate resistor)

Now i sound a little harsh, but i just want to help with the small issues if I can.

Almost correct, so 1 voltage, 1 current, 1 for control the tp4056(enable pin) and 1 for the mosfet. I'll measure all temperatures through i2c so it doesn't count or 1 wire temp sensor but lm75 is far cheaper. So overall it's 16/4 = 4 cells.

Serial link: currently the refresh rate is really high mostly for debugging. Ohh and I always display just the currently selected cell/slot. There'll be a sd card/thingspeak logger very soon, so displaying one cell at once on serial is enough, right?

Current load: The mosfet is a KS3918 from a dead motherboard. Currently the gate resistor is 1kohm and I using a 10uF between the gate and source. The problem with this mosfet is when the temperature rising the current(1A load) is changing so I'm using the current readings as a feedback loop then I change the pwm accordingly. Note: mosfet temp is around 60C on 1A load.
The saturation came from the 8bit pwm output, I'll change it in the code immediately for 16bit. After a quick test it's far better, thanks for noticing!
Anyway I don't want to use any op amps beacuse my plan is to keep the bom cost low as possible and keep the discharger pcb small.

Not harsh at all. I always like the constructive feedback. And most importantly everything is still in development phase so I can change anything I want.
 
1wire temp sensors arent that expensive and you can run them all on same single port.

0.45eur per ds18b20 is what i paid last time. Though LM75 is cheaper you might need to multiplex that one? Not sure how many you can have on same bus?

edit: seem to be 8 on same bus?
 
1wire temp sensors arent that expensive and you can run them all on same single port.

0.45eur per ds18b20 is what i paid last time.

daromer: where did you get yours from? I did a search for ds18b20 on banggood and it's either a 3-pin module, or a 2 wire probe. How would you string them together?
 
daromer said:
1wire temp sensors arent that expensive and you can run them all on same single port.

0.45eur per ds18b20 is what i paid last time. Though LM75 is cheaper you might need to multiplex that one? Not sure how many you can have on same bus?

edit: seem to be 8 on same bus?

Yes multiplexing is the way or TMP175 but it's pricey.
And there are two things: I can order a LM75 for 0.15EUR and just to note, I can buy it at my local shop for 0.3EUR. Second, the 1820 has 750ms conversion time which in reality more than 800+, LM75 has ~300ms top, it's 3 times more and in big scale.. I don't know let's think about it first. Btw both has 9 bits resolution.

Korishan said:
daromer: where did you get yours from? I did a search for ds18b20 on banggood and it's either a 3-pin module, or a 2 wire probe. How would you string them together?

It's pretty simple you need connect all GND, VCC and the signal respectively together and you need only one signal wire to the MCU. Every sensors has a unique ID.
 
Sounds awesome Ferc!
It's amazing what we can do with arduino and pico computers these days.

One suggestion: When you start designing all your I/O modules, keep in mind that many components can be taken directly from the controllers within the laptop battery packs where you get your 18650s. For instance if you just have a A/D module then you can find a temperature sensor that will work with it from the packs. Also LEDs, diodes, shunts,etc that could be used in your design. And most importantly for FREE! :idea:
 
Okay I think I just found a solution for the temperature sensor. I stepped back a little and rethink the design. What if I use the mosfet driver's pwn pin for switching the tp4056 enable pin to high and low?
So I added a little not gate inverter which turns on the tp4056 when the pwm zero, then switch off when the pwm signal reach a certain level. But this level is way too low to turn the mosfet on aka no load(discharge) at this point.

In reality it's works, I just tested. Any concern about this solution?

So after all I got a free pin which can be used for an analog ntc temperature sensor. This solution allows me to use 4 slot/cell with a 16 channel multiplexer which is great!
Currently the pinout for my discharger module: PWM, Temp, Battery voltage and current.
 
I was curious and so I started looking a little more in depth of these boards. Couldn't u use an I2C for each module? That would allow you to connect 255 (or is it 254?) [further looking, i see that devices could go up to 1024 depending on bit size] cells in one string and only use the 2 pins of the arduino board.
 
Korishan said:
I was curious and so I started looking a little more in depth of these boards. Couldn't u use an I2C for each module? That would allow you to connect 255 (or is it 254?) [further looking, i see that devices could go up to 1024 depending on bit size] cells in one string and only use the 2 pins of the arduino board.

That's true but the i2c ADCs are not cheap and still you need a multiplexer for it, because most ADCs allow to set 4 or just a few different i2c addresses. The lm75 temp sensor has the very same issue.
After all a 16 channel analog multiplexer is more simple and much cheaper.


A little update. Here is a simple diagram of the whole system:

Code:
+-------------+  +------------+  /-discharger module for tp4056
|master module|----|slave module|====--discharger module for tp4056
|stm32+sd+wifi|----|multiplexer |====--discharger module for tp4056
+-------------+  +------------+  \-discharger module for tp4056
             ||
             ||
          +------------+ /-discharger module for tp4056
          |slave module|====--discharger module for tp4056
          |multiplexer |====--discharger module for tp4056
          +------------+ \-discharger module for tp4056

The slave modules should be stackable like any common sbc shield. I really want a low price for every discharger module because every cell will get one. Why? because I don't like the idea to switch between cells and only use one or two discharger module, it's a lot of waste of time. And if I can really push down the price per module I thinkit'll worth it.

Ohh and I just finished the sd logger, so the next step is the tiny esp8266 wifi.
 
Looking good. I'm looking forward to it so I can get started on mine based on your design :p
 
Back
Top