Recommendations for simple lipo chargers?

Hey everyone,
I’ve been working on bringing up my first very complex board, and I’ve ended up running into what feels like a roadblock. The boards themselves include isolated CAN, SPI ports & a high power buck controller to control ~100 RGB leds with high-side current sensing, a UART to control several servos, a half dozen shielded capacitive sensor ports, and an integrated 3S lithium battery charger IC and a protection IC. I’ve got everything working with RTOS drivers written, except for the battery ICs.

Both the battery ICs are the smallest parts (the only QFNs I’m using), I think I’ve found a mistake or two in their schematics (shouldn’t be showstoppers, but definitely they could be better), and worst of all, they’re really becoming a sticking point, in that I can’t bring up that portion of the board (I’ve only managed to establish communications with one chip, a MAX77960, while the MAX17320 doesn’t respond at all).

The MAX77960 does respond to my read requests, but when I write new values to program it, the values I write only seem to persist in 2 of the configuration registers (the others go back to factory settings). The chip also gets hot to the touch with only a 300mA flowing through it, which is worrisome since I designed the board/chip to handle at least 6A. I’m guess that it might be overheating.

I’m assuming that these are pretty rare, specialty chips, and so I don’t think I’ll be able to get help in debugging them, and so now I’m thinking I need to redesign this part of my board to derisk it, since I’ve managed to get everything else operational.

Do you have any ICs or circuits you could point me towards to solve this onboard power problem? I need to be able to charge & possibly protect a 3S lipo battery pack (the pack probably needs each cell in a different place, due to mechanical constraints). I need the charger to be integrated into the PCB, because once the device is assembled, it would be very, very inconvenient to require removing the cells to recharge them.

Here’s the features I think I need:

  • 3S Lipo charger
  • 3S Lipo protector (overvoltage, undervoltage, thermal protection (ideally supporting 3 thermistors in order to sense each cell)) – this I feel like maybe could be changed to a much, much simpler circuit without any smarts or fancy current counting.
  • I need to be able to draw at least ~80mA while charging in order to power the microcontroller and a few other circuits that decide when it’s OK to start charging
  • Need to be able to disable charging functionality, even if power is applied to the charger
  • I have pretty limited routable space remaining, so the easiest thing would be to control with I2C (happy to use an additional microcontroller), although I could use the I2C as GPIO instead, and I could maybe squeeze a single analog input to the host microcontroller as well.
  • I have about 20x40mm board area I can reclaim from the MAX17320 and MAX77960.
  • In stock now (LOL)

Thank you for your thoughts and advice on the highest-success-chance way to create this integrated battery pack!

How are you measuring the 300mA? I recently had a charger that was “sort of working” that turned out to be regulating below the designed current limit because I had my inductor rotated. Only after I put it on the scope did I realize that the current was spiking at each FET turn-on and then shutting down. The thing was robust enough to keep operating while putting out low charging current! (https://twitter.com/toybuilder/status/1424815413259472900)

BTW, the MAX77960 is a 3A chip with the MAX77961 as 6A. Just want to make sure you saw that.

Under System Faults page 42 I see:

The MAX77960/MAX77961 have a die temperature sensing circuit. When the die temperature exceeds the thermal shutdown threshold, 165°C (TSHDN), the MAX77960/MAX77961 shut down and reset O Type I2C registers.

Is that perhaps what you’re experiencing? I can’t easily find which registers are “Type O”, but perhaps the two you see “stick” are not Type O?

You may want to re-check your schematic and the soldering (even if for the umpteenth time :wink: )… ?

The 300mA is what I’m measuring from my bench supply, which I connected to to the MAX77960 charger input and to the output (without a battery, it seems like it doesn’t want to pass current by default, even though I set it to pass 100mA before it’s initialized so that I could bootstrap it).

I’m pretty sure my inductor is oriented correctly–it has the leads that come up the sides some, so I can see it’s oriented correctly.

Also, the 3A applies to the input power limit–I contacted maxim, and they confirmed that both models can supply 10A via the battery. But I’m not coming close to these limits.

I’ve searched for what “Type O” registers are, but :man_shrugging: I don’t think they actually documented which registers are which. I’ll contact them to clarify. (Since my post, I accidentally shorted a 12V wire to SDA and SCL, so I’m reworking all the ICs on that board, and I haven’t gotten around to the battery ICs yet. Otherwise I’d be able to remember which were the registers that kept their state).

I’ve rechecked the schematic a million times, but I’ll do it again :slight_smile:

I’ll also try to remake a board again, but this time, only soldering the MAX77960 and support passives. Then, I’ll use an AD2 to try configuring it. If that works, then I know either there’s a soldering problem or there’s an interaction with something else on the board, but at least that’s somewhere to begin!

I know this really sounds pedantic, but have you tried the eval board?
When things don’t work I often jump back a couple of steps, and check my work against a known design.

This is going to be my next step, if the remake and double check approach doesn’t work.

One thing I did find after rereading the datasheet for the umpteenth time is that there is a write protection scheme. I thought there was, and I searched for keywords like “Lock” and “Protection”, but I needed to search for “prot” to find it. It’s not clear what registers are write protected, but that would certainly go a long way to explain the behavior I saw.

So, I’ve managed to remake a board with only the MAX77960 circuit, and I have that working properly. I also connected that board’s ground & MAX77960 output to the other board with the microcontroller, and it’s able to provide power to the “rest of the board, but off-board”.

I then tried using my hot air gun to make the MAX77960 circuit on the board that was receiving power. This, unfortunately, only half-worked: the uC is able to successfully communicate with and program the MAX77960, but the MAX77960 doesn’t do its buck/boost power thing. Instead of seeing the switching waveform on the inductor (which I see on the working circuit), it just hangs out around at a constant ~0.9V.

Could it be that my lack of ESD safety is damaging the switcher circuit but not the I2C comms? Or could excessive heat from my newbie reflow technique be destroying the switcher but not the I2C comms? The MAX77960’s LDO is functioning, too, and the I2C status reports things are working.

How do you approach distinguishing between:

  • My circuits interact such that they work fine separately, but together they don’t
  • I’ve partially destroyed ICs due to heat
  • I’ve partially destroyed ICs due to ESD

Thanks for your advice! I’ve created a new thread b/c this really changes the content of this post, such that the title no longer applies: Approach for diagnosing non-functional circuit?