DIY Lithium Battery Balancer and monitoring (BMS)

Hello All
I have done a hack job to read my 14 module from the shed on my router (if anyone can help me with how to setup the wemos as an access point on a pc that would be great). The only problem i am getting is that i have 2 modules that are intermittent with their connections, if i touch the thermistor the module resets and can be picked up by the controller. The other thing with these 2 modules their temps are 10 degrees lower then the other 12. Unsure where it is the thermistors or something else. Does anyone have some ideas what it could be.
Thanks
Andy

Sounds wrong! I would expect a short circuit or bad joint/solder near that part.

In my bag with 20 thermistors one of them was bad. It showed 10°C more than the others.
Just desolder it and measure the resistance. If it is as expected you have to check your other solder joints around the thermistor spot.

Hi Stuart and All
I have been trying to build V4 BMS boards. I could not compile ESPController code in PlatformIO. I am getting erro as Stuart described in the comments for the main.cpp and I followed the instructions to delete Time.h from \diyBMSv4\ESPController.pio\libdeps\nodemcuv2\Time\Time.h but it did not help.
The actual error I am getting is:

.pio\libdeps\nodemcuv2\ESP Async WebServer\src\WebHandlers.cpp: In member function ‘AsyncStaticWebHandler& AsyncStaticWebHandler::setLastModified(tm*)’:
.pio\libdeps\nodemcuv2\ESP Async WebServer\src\WebHandlers.cpp:67:64: error: ‘strftime’ was not declared in this scope
strftime (result,30,"%a, %d %b %Y %H:%M:%S %Z", last_modified);
^
.pio\libdeps\nodemcuv2\ESP Async WebServer\src\WebHandlers.cpp: In member function ‘AsyncStaticWebHandler& AsyncStaticWebHandler::setLastModified(time_t)’:
.pio\libdeps\nodemcuv2\ESP Async WebServer\src\WebHandlers.cpp:73:60: error: ‘gmtime’ was not declared in this scope
return setLastModified((struct tm *)gmtime(&last_modified));
^
.pio\libdeps\nodemcuv2\ESP Async WebServer\src\WebHandlers.cpp: In member function ‘AsyncStaticWebHandler& AsyncStaticWebHandler::setLastModified()’:
.pio\libdeps\nodemcuv2\ESP Async WebServer\src\WebHandlers.cpp:78:25: error: ‘time’ was not declared in this scope
if(time(&last_modified) == 0) //time is not yet set
^
.pio\libdeps\nodemcuv2\ESP Async WebServer\src\WebHandlers.cpp: In member function ‘AsyncStaticWebHandler& AsyncStaticWebHandler::setLastModified(time_t)’:
.pio\libdeps\nodemcuv2\ESP Async WebServer\src\WebHandlers.cpp:74:1: warning: control reaches end of non-void function [-Wreturn-type]
}.

At first I installed all necessary libraries by using Install function in Platform IO but they were not recognised for some reason so I downloaded them and copied into the lib folder for the project.

Any advise will be greatly appreciated.

Eddie

@Eddie_Latuta check out my post on the V4 forum pages

I’ve just introduced Travis-CI to automatically build the DIYBMS v4 code - its currently passing all builds, so it must be working :slight_smile:

1 Like

Hello
Can someone please tell me how to get the wemos controller talking to a different access point. I can not get it talking to the closer access point, it keeps wanting to go to the router and it to far away.
Thanks
Andy

This is just how wifi works - its trying to get to the strongest signal for the access point. Do both points have the same wifi name (SSID) ?

No different names,
The laptop Spare_5500 that is the shed is working as it should but the wemos doesnt seem to be it stays on the wifi and doesnt move to the cable lan which is the new access point. I have moved the wemos out of the wifi range but in the cable lan wifi range and it just disappeared. Picture shown.
image

If you try resetting the WIFI config (jump pin on the controller board and power on/reset) and go through the wifi setup again - see if it will connect to the repeater.

Thanks Stuart, i thought that was happening when i load the BMS controller sketch onto the board. But that make sense now, after the initial upload it doesnt change. I will try and reset the wifi and go from there.
Andy

In my home, I have several routers with same wifi name and password. For devices that just pick the strongest one. Wemos bms controller, while selecting the wifi network - presented me with two networks with the same name - somehow or for some reason seeing/showing the two routers separately. I dont know at that low level how those devices can and do access different wifi hotspots but I’m guessing they can? Even if the name is the same.
Most devices dont, because built in logic that same name means use same credentials and pick the strongest. Do not know if this is written into wemos/esp wifi library…

I am about to embark on this bms journey for my power wall system, but before I do was wondering besides reading this whole post ( which i have done) Any advice or pointers to this newish guy??

chris

I think the shopping list did not include connecting wires and depending on where you live, getting all the stuff and then waiting another half a month for wires can be quite annoying. Check that you also get plugs for the sockets. And as stated before, go over the shopping list and makes sure there’s enough of everything and no import errors occurred.

Hello all.

Marvelous work that’s been done and I am glad to see such open source options exist.
I am looking at creating battery modules for my own open source project and am looking at incorporating this design.
However, through the iterations of updates, the information regarding use is scattered.
I’ve seen it stated many times and even the creators github mentions large parallel arrays in use with this BMS.
But I cannot find anywhere how this BMS board can balance any number of batteries without individual connections to each battery.
Clearly I must be missing something… Can someone please shed some light on this?

Thanks.

Hi Thassio,
Did you tried comment out
// uintl6_t temperature; and also have
float temperature;
see if temperature changes.
---------ooooooo------------
uintl6_float temperature;
float temperature;

I am having same issue with V3 and wounder if will work for me.
Thanks,
Humberto

So i am new to this and sorry for asking this question. I have been looking online for a active BMS so i can start working on my 10kw 18650 cells powerwall and of course i found Batrium but the price for that is way to high for my budget but of course i value security :wink: so here is the main question :

How does the opensource diy bms made by you @stuart compare to a Batrium ? I have read few places you discuss that your system is not geared for large powerwalls, what would you say large is ?
Are the differences in features ? Precision ? Better components ? Better tested ? I could care less if it’s missing an interface or so or the display is not as advanced but the place were i have interest is robustness.

Regarding battery bank monitoring, the Thor Battery Monitor (TBM) is available as open-source on TEROC. TBM measures cell or block voltages, battery current, does coulomb counting, etc and sends the data to Emoncms. It is not a BMS (no balancing).

I believe Stuart is on holiday at present, but will be back in a few days.

I didn’t build DIYBMS to compete/compare with Batrium. I’ve never seen/used Batrium equipment myself.

Looking at the “fact sheets” on the Batrium product, DIYBMS 4 will do the basic features like balancing and disconnecting loads (via relay/isolators etc.).

Batrium is a commerical product which also benefits from commercial support and a more polished product.

@stuart i know. I just wanted to understand the facts/difference to be able to make a better choice. I was hoping you or somebody else could chip in with more details. I think this is a great project and has gain lot of popularity.

btw thank you for the replay :wink: