How do I access the bms of a battery

Hello I have searched alot but the web but couldn't really finding anything useful so I came to the point were I didn't really where else to go.

This is mostly not an Arduino question but I can turn it into one.

I have 4 pieces of the type of battery shown in the picture.

I am having some problems with them, and I have a feeling it might be their BMS that's causing issues.

In the data sheets there is on this website Gacell, it states that an adapter and program are needed to communicate with it, but it doesn't specify what the program is called or where to get the right adapter. It also mentions that there should be Bluetooth built-in so that you can use your phone, but unfortunately, it doesn't specify which app to use.

Behandler: Screenshot_20241014-025755.jpg…


I hope you can help me a bit further so that I can actually get the batteries working again.

Can I use the Arduino to communicate with them?

Battery 1:
0.0v even if I connect a 24v charger, nothing happens.
I tried it once before and was able to get it working by connecting 24v.

Battery 2:
22.75v but it won't take any power, only 3mA.

cut off blue foil. get access to battery poles. measure voltage.

If it works... it has been called "tipping in"... Your three-wire JST could be async, serial comms with TX, RX and GND. Connect to a comm port, start a comm program like PuTTY or HyperTerm, and tap <RETURN> on your keyboard to see if communications start. You might have to try a few baud rates, like 9600, 2400, 115200.

Seems that a Texas Instruments BQ34Z100-G1 chip may be inside the battery pack.

The TI datasheet says:

Supports two-wire I2C and HDQ single-wire communication interfaces with host system

It's possible that the 3 pin connector has GND, SCL & SDA.

1 Like

Was the battery over-discharged? If so, its internal protection likely shut off the outputs to prevent a catastrophic failure, such as a fire.

Thanks for the answers.
If its either TX RX or I2C how should I connect it to a comm port?

I have only worked with TX RX and I2C with Arduino, so how would I connect the battery pack to something like PuTTY or HyperTerm

The GACELL web page you linked has a lot of detailed documentation on the battery and associated BMS, complete with circuit diagrams. Have you studied any of it?

image

1 Like

Yes many times and I can't find anything useful about how to communicate with the BMS.

According to the product page, the battery uses CAN bus communication.

(English translation): BMS communication takes place according to the CANopen profile SAEJ1939.

So you will need a suitable CAN bus adapter and an Arduino library. This document linked on the battery page describes the communication protocol.

There are plenty of posts on the Arduino forum and elsewhere discussing CAN bus, but not likely covering that device. See for example https://www.seeedstudio.com/blog/2019/11/27/introduction-to-can-bus-and-how-to-use-it-with-arduino/

The three pin connector is GND, CAN_Low and CAN_High. From the 15582_BMS-Specification_12 document:

1 Like

I looks like its easier just replace those bms with something better. Because it seems that the bms in all 4 batteries have failed to do their job when I look into it.

2 batteries are stuck on 22.50v and won't take charge.
1 battery are stuck at 0,00v
1 battery are stuck at 17v and when I investigated the batteri the plastic was beginning to melt underneath the label. So when I took it apart I saw the BMS have failed and overheated and therefore is dead.

The configuration I have been using them in is 2s2p

The 0v and 17v battery was in series and clearly one of them failed and taking the other one with it.
The two batteries with 22.50v was in series and have probably keept discharging because the two other failed and are now stuck in safe state.

I'm considering just taking all 4 batteries apart and build them into a 48v pack instead with 1 proper bms.

I can't even find a new BMS of this model just to replace it.


Very likely, many of the cells in the batteries have been destroyed.

I hope not!

Okay I looked a little into CAN bus communication and understand the basics of it now. It's quite neat.
I also discovered that the Arduino need an adaptor to support it but that the ESP32 has build in CAN communication.
It happens that I actually have some ESP32 laying around also.
I have tried watching some YouTube videos of how to use it on a ESP32 but they all seems to connect an extra module to communicate with whatever device they have.
It confuses me, because should the ESP32 not be capable of do it without any additional hardware?

CAN bus uses balanced communications, with voltage levels that are not necessarily compatible with MCU digital inputs, so in general, you need dual line CAN RX/TX interfaces for the signals.

Oh you mean that the ESP32 operates with 3.3v but the BMS might be communicating using 5v so therefore I would need a level switching device so I don't fry the ESP32?

Close.

Thank you for the datasheet.

To be honest I'm getting more and more confused about this CAN communication.
Because I can find super expensive CAN to USB adaptors but also super cheap, and then there this mention of CANopen profile SAEJ1939 which is for vehicle communication if I understand it correctly, then I get even more puzzled about what software to use.

No. It uses CAN bus SAE J1939 voltage levels, which switch by about 2V, alternating between 1.5V, 2.5V and 3.5V.

Oh... Okay but now I noticed a new term "TTL". Does it mean I can use this adapter???