This is an important development for my company. So I want to give it thorough thought because I may have to live with the consequences of decisions I make now for years to come. On the other hand, if this effort has taught me anything it is that there is such a thing as overthinking it. By trying to plan for everything, and think of everything that may ever be necessary, you end up just spinning your wheels and nothing ever gets accomplished.
So once I had done that for a couple of months, it was time to bring this back to reality. The first thing was to list what were important aspects to me from a high level, "platform" point of view. If I was now going to start making "LiFePO4wered" battery packs, what did I want from them? What did I want my customer's perception to be? Here are some important things I considered:
- Voltage. I love the fact that the useful LiFePO4 voltage range perfectly matches the voltage range of many 3.3V chips. This is great and makes for very efficient power systems, and I will keep producing boards that support this for low power systems, but that's not what this effort is about. This is about powering SBCs and other "higher power" systems, and I need a higher voltage to keep up with their power requirements. Most of them nowadays require 5V input, although as they get more and more power hungry, that may change in the future.
On the #LiFePO4wered/Pi+ I currently use a boost converter to bring the single cell voltage of ~3.2V up to 5V for the Pi. If the voltage input range can be either above or below the output voltage, you need a buck-boost converter which tends to be a little more expensive. In general, the highest cost and power efficiency can be had from a buck converter, which converts voltage down. With a useful voltage range of ~2.7V - 3.6V for LiFePO4, two series cells gives a voltage range of 5.4V - 7.2V. We can generate 5V from this with a simple buck converter.
I want the battery stage on any board that uses these packs to be compatible with a pretty wide battery voltage range though so at least 4S LiFePO4 (14.4V max) will also work. - Cell chemistry. My bread and butter is LiFePO4 cells, which give some great reliability and lifetime benefits versus consumer LiPos. But I have also had interest in Lithium Titanate (LTO) for a long time. They are like LiFePO4 on steroids, getting 10K charge/discharge cycles versus LiFePO4's 2K (and LiPo's pathetic 0.3K), and dealing better with cold temperatures. Downsides are lower capacity and lower voltage, with a useful voltage range of ~1.7V - 2.8V.
I may not be making LTO based packs right away, but I want my platform to be compatible with them so I can add them as a super rugged option in the future. The problem is that two series LTO cells only give me 3.4V at the end of discharge. Even at the nominal voltage of 2.4V, two series cells would only make a pack of 4.8V, lower than the 5V output voltage I want. A system using either 2S (2 series) LiFePO4 or 2S LTO cells would have to have a buck-boost to generate 5V.
The other option is to go to three series cells (3S) for LTO. This would give a minimum pack voltage of 5.1V, and I can use a buck converter to get 5V. I think this is the way to go. - Current capability. The whole point of doing a pack is to reduce current at high power, but that doesn't mean that I want it to be wimpy. One great thing about LiFePO4 is its low internal resistance and high current capability. In the #LiFePO4wered/Pi+, the battery output is designed for 4A, in order to be able to still get 2A @ 5V to the Pi when the battery is at 2.7V. So the system is capable of about 10W. I'm reasonably comfortable with 4A, but don't really want to go higher than that. With a 2S LiFePO4 system that is 4A capable, that gives a 20W+ system.
- Physical interface. Or: how do I connect this pack to the board that uses it? There are tons of connector options. Most consumer LiPos use a JST PH connector. RC packs usually have one of these for balanced charging and a separate set of wires and connector for the high current output. With a design current of 4A, JST PH (which is only rated for 2A) wouldn't do. I don't want my packs to have the same connector as most LiPo packs out there anyway since you could pretty much guarantee someone would plug it in to a LiPo charger and ruin the pack.
Still, it needs to be something low cost and readily available to pack manufacturers. In the end, I settled on the JST VH series, which is rated for up to 10A, and allows some headroom for the future.Then there was the question of how many pins. That was a big one.
First of all, even though I'm starting out with 2S LiFePO4, I may do more series cells in the future for systems that need either higher power or higher voltage. And the minimum configuration for LTO would already need three series cells. If you do off-pack balancing like is done with RC packs, you need a different connector depending on the number of series cells. So, was I going to make charge boards that would only be compatible with certain packs? Or have a bunch of different charge connectors on each board to it would be compatible with various packs? The alternative would be to do balancing in the pack, and just bring out the +/-.
Second, there is also the question of what else needs to be connected. For instance, what about an NTC thermistor to measure pack temperature? Or a heater for the pack to be able to charge in low temperature? We could eat up a pin for either. Between balancing, NTC and heater, this connector could become huge.
So I made a decision: since I can't predict what's going to happen exactly, and to keep this as compact as possible, as flexible as possible for the future and as easy to use as possible, I decided to do a 3-pin JST VH connector with +, - and a digital interface to deal with all the rest. - Digital interface. Short of doing something complicated such as modulating a signal onto the power pin, I would need at least 1 pin for communications, so it was easy to settle on a 1-wire interface for this. The goal is to be 1-wire compatible enough on the physical and addressing level to be able to live on the same bus with other 1-wire devices, but beyond that, since Dallas (now Maxim) never defined a "battery pack" device type, I'm doing pretty much what I want beyond that. ;)
The 1-wire interface will be used by the connected board to read out pack ID information, so this will hopefully make the whole system "plug and play". The charger will read the pack ID and know what the pack is, how to charge it, pack limits and features. It will also read out the thermistor(s) and control the pack heater (if available) through the 1-wire interface. The first simple packs will use passive balancing (burn off excess charge as heat) but future ones may have active balancing (redistribute charge between cells) which will also be managed through the 1-wire interface.
This may start to look like a lock-in feature. I hate lock-in, so I intend to make the full protocol publicly available, and the goal is that at least some of my products will also work with individual cells as well. The user in that case will have to configure the charger themselves, while a pack with the interface should be able to configure everything automatically.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.