SparkFun will be closed Nov 26th and 27th for the Thanksgiving holiday. Orders placed after 2:00pm MT on the 25th will ship out Monday the 30th.

Creative Commons images are CC BY-NC-SA 3.0

$ 9.95

added to your
shopping cart

In stock 47 in stock
9.95 1+ units
9.45 10+ units
8.96 25+ units
8.46 100+ units

Description: LiPo batteries are a great way to power your projects. They’re small, lightweight, and pack a pretty good punch for their size. Unfortunately, even the best batteries eventually run low on power and when they do it’s often unexpected (and at the worst time). Don’t be caught by surprise next time your board suddenly powers-down! The SparkFun LiPo Fuel Gauge connects your battery to your project and uses a sophisticated algorithm to detect relative state of charge and direct A/D measurement of battery voltage. In other words, it tells your microcontroller how much ‘fuel’ is left in the tank. The LiPo Fuel Gauge communicates with your project over I2C and an alert pin also tells you when the charge has dropped below a certain percentage.


  • Fuel gauge system for single cell lithium ion batteries
  • Can be connected in circuit to monitor battery.
  • Hardware and Software Reset.
  • I2C Interface


Recommended Products

Customer Comments

  • so, when can we expect to see a Battery/Charger/fuel gage/current measuring/ boosting/with “system out” combo ?
    basically… a complete lipo solution package.
    you give it power say from a solar cell, usb, 7805, or what ever you can source power from… and you have a battery backed 4.2-3.0 V output…seamless… with no hassel…….
    you could include a switch maybe to boost to 5v the incoming power for better charging efficiencies or boost the outgoing power for 5v system operation…. mabey throw in a few comparators to make the power input have some hysterisis (only start charging when incoming voltage is 3V…..)
    i foresee power harvesting solutions…. spark fun… make this real!

      1. nice to know how much juice is left, but then I have to plug the LiPo into another board to charge it?
      • There are two separate pin headers where you can access the battery voltage. You can use one of them to connect a charger and, let’s say, the other can connect to your system power.

        • Now, these two headers, could I hook up the Sparkfun 5v boost thingy up to one, and the Sparkfun LiPo charger up to the other? Regarding the charger, would I be able to run the device directly off of the charger input with this setup?

    • Yes, I would also be interested in something like this! As of right now I’m taking pieces and parts from SparkFun boards to basically make this… Would be nice to have a ALL-IN-ONE Solution!

    • That would be heaven.

  • Would of been nice to see this incorporated into some kind of battery charger board as well…

  • Would anyone be interested in a complete system? Charger, Fuel Gauge, Boost / Buck Power supply, low battery protection? I am considering designing this and selling on sparkfun, just wondering on interest?

    • Been looking EVERYWHERE for an integrated solution like this and I can’t find a good one! This is a great opportunity for you Spark Fun! A one board complete battery solution - plug the battery on one end, then connect the device on the other! You have all the pieces, just put it together into one (very small) board!

  • This would be so perfect for me if it supported a 2-cell LIPO. There’s even an IC that handles it (MAX17044G+U). I’m really hoping to see a 2-cell version of this board soon.. :)

    • Big +1 on this!

    • I had actually bought this for that specific purpose, but upon reflection had purchased the wrong design. this will work great for one portion of my project, but a multi cell gauge would work better for larger projects like UAVs or tanks. really need a more expansive model. could two of these be linked to create a 2-cell or 3 to make a 3-cell? SFE any word?

      • I was just thinking about this. I was looking for a fuel guage for my 3s battery packs. They are for R/C applications but I was thinking of building a DC/DC converter so I could used my R/C batteries to charge my cell phone while I’m playing Ingress. Draining a LiPo too far is really bad for them so I wanted something to monitor the R/C batteries.

        My R/C batteries have what is called a balance connector, which is basically a breakout for each cell so that it can be (re)charged independently. These little guys output I2C, so you need something to make that into people speak. I was thinking that I could connect one of these to each cell via the balance connector and send all the data to an Arduino (actually a teensy) with either some LEDs or a LCD display. This is turning out to be a pretty big project.

  • For those looking for example arduino code, see: http://www.sparkfun.com/products/10711

  • I’ve started a new library for this fuel gauge (based on Wire) available on Github: http://github.com/MattNewberry/MAX1704

    <br> Enjoy!

  • Hi, I have a question regarding the schematic. VCC is the lipo positive terminal, that according to this schematic, is going to be connected to the VDD line through a 180 ohm resistor, to the ALERT pin through a 4.7 K resistor and to the I2C bus (SDA and SCL) through 4.7 K resistors. Shouldn’t be a 3.3V regulator after the VCC line (battery) to have a stabilized voltage level on the I2C bus and on the other lines (not the CELL pin since the battery’s capacity and voltage is measured there)? Best regards

  • Hi folks,

    I’ve bought a couple of these fuel gauges, but am having trouble figuring out the hookup from the supplied information. Can you tell me precisely what the + and - are on this picture:


    It’s not too apparent (to me, anyway) if they are JP1, JP5 or VDD … I don’t want to guess - it took months for my stuff to arrive from the UK, and I dislike blue smoke, trashed batteries and melted solar chargers ;-)



  • I have been using this module for a month now with no issues until now. For some reason it is reading a fully charged lipo (2000mah) incorrectly. After being fully charged it is only reading the battery as 80% charged. I’ve been using the same battery since day 1, and it’s being used on a low drain system (1-3ma).

    Any idea why this could be happening?

  • More example code for Arduino => https://github.com/awelters/LiPoFuelGauge.

  • So, if I understand correctly - this is intended as an “in line” solution - right? I put my battery into the JST connector, then I can power my project from the OUTPUT vcc/gnd, as well as use the I2C to measure my juice. Yes? Any concerns when the output vcc/gnd are not used? Or if I was wrong to begin with, what is up with those connections period?

  • I got the LiPo Fuel gauge perfectly work on Arduino uno (SDA and SCL Analog pins 4 and 5, GND Arduino @ GND Fuelgauge). I also got it just work nice and fine on Arduino Mega ADK (as SDA and SCL are located @ PINS 20 ans 21). So now i want to connect two Fuel gauges on the Arduino Mega ADK …. Any ideas how i could do that?

    • I’d use either a multiplexer to switch the data lines between the two cells or a software base I2C so you can just use completely separate pins.

  • :D can i test it by simply wiring it to some DC power source? or it has to be a lipo batery?

  • Twpsyn / last year / 1

    Does anyone have a Fritzing part for this? I’ve been trying without success to convert the eagle file to fritzing, and am close to just giving up and not incorporating this into the project.

  • i’m using a tenergy 11.1V pack in a high-output LED light project; currently, i’ve got the logic side regulated down to 9V. i’m only looking to pull the bat% off the Maxim chip, so i had planned to plug this board in behind the regulator on the logic side (i.e. CELL = 9V).

    (?) Am I fouling up the Maxim IC by feeding it regulated power – (or stated another way) – can one use this board to gauge a pack >5V via regulating the incoming power?


  • What if I need to use LiPo Fuel Gauge with this >> https://www.sparkfun.com/products/11360 battery pack as you see its complete with charging circuitry and all but I needed to also have the charge level read off it! is it fine. I see that this battery pack>> https://www.sparkfun.com/products/11360 uses a single cell LiPo so this would be fine with this LiPo power fuel gauge but what if I hack the battery pack and its too congested to access all the points to read the battery that I seek?

  • Excellent solution! But should have two pins JST for battery input, and output, for use with the Power Cell or any other …

  • Is there any limitation in the capacity of the battery?

  • So this is probably a really simple question, in reading the data sheet for MAX17043 and designing a circuit for it, i came across the following line

    Alert Output. Active-low interrupt signaling low state of charge. Connect to interrupt input of the system microprocessor.

    So my question is what exactly do they mean? Is the line usually HIGH and when the IC detects an Alert it will turn the Alert line LOW?

  • This example code did not work on atmega128A, After using sample code from this page, It worked fine :) http://www.nongnu.org/avr-libc/user-manual/grouptwidemo.html

  • Here is a library I put together that has proven helpful to me: https://github.com/awelters/LiPoFuelGauge. Hope it helps others.

  • Um, maybe I’m missing something, but can you set the address on these or is it permanently 0110110 (0x36)? If not how do you use more than one on your Arduino?

    • It’s a fixed address, so you’ll either have to use a software I²C library (.e. softi2c) to have things on a physically separate set of lines, or you’ll have to switch between devices. There’s specialized I²C multiplexers, see e.g. http://www.kerrywong.com/2012/10/08/i2c-multiplexer-shield-testing/. You could also try making your own guage using a chip that does have selectable/settable addresses (I’m assuming they’re out there).

      Any particular reason you’d want to have, and monitor, more than 1 battery on the same system?

      • Hi Kamiquasi, Well see it is one battery, but multiple cells. The battery is usually used for R/C applications. It is a LiPo 11.1v 3S (three cells in series). They come standard with connector that breaks out each cell so that each cell can be charged evenly. This is usually called the balance connector. This is a good example: http://www.hobbyking.com/hobbyking/store/6307ZIPPY_Flightmax_1500mAh_3S1P_20C.html

        Anyway thanks for the advice, haven’t been able to find another similar device, but I’m not sure I’m looking in the right places. I mentioned earlier in an earlier post that I’m trying to make a cell phone battery charger that uses the R/C battery to recharge my cell phone. I need a way to protect the LiPo from discharging too much and my plan was to use 3 of these fuel gauges and with an arduino to monitor the battery and turn off when the LiPo got too low. In the R/C world this capability is part of the electronic speed controller (ESC). If there is another easier way, I’d love suggestions.

        • ah, same project as 4 months back, then :) Yeah, I’m familiar with the RC batteries (I fly a heli from time to time) - unfortunately I don’t know of anything like this product, but for a 3S (or 2S, or 4S, etc.). There’s a few chips from TI (probably Maxim as well) that could do the job, but you’d have to design a board around it, etc.

          The I²C multiplexer approach could work for you. However, it may be easier to dig up a protection circuit (amazon, ebay, the usual, since that’s your more immediate goal.
          Alternatively, you could try measuring the voltage of each cell directly on your arduino and do your own guesswork on ‘charge’, since that’s what most of these ICs do (in a wide range of algorithms with trademarked names, though granted some also add ambient temperature and such into the mix), or just go by the voltage itself (cut off at 3.3V, 3.4V if on the cautious side).
          There’s also some off-the-shelf field fuel gauges you could try, like the AKE PM3C. It’s intended for continuous monitoring and gives visual indication when a cell goes low. Of course you’d have to actually be present in order to notice the red light, but you could try hacking it into input signals for the Arduino - though at that point, measuring directly seems just as sane :)

          Perhaps somebody else knows of an Arduino-hacker-friendly multi-cell monitoring solution; looking at the comments, it does seem a common request (and by looking at the lack of answers, one perhaps not yet catered to).

          • Is it possible to run this across a single cell of a 3S battery (using the balance connector) and use the reading as indicative of all 3 cells (i.e. multiply the reading by 3 to get the full voltage)?

            • That’s a tricky question to answer, The main reason for using a balancing charger in the first place is so that you don’t get, say, 2 batteries at 3.4V and 1 battery at 4.3V and everything still looking fine at 11.1V total. The balancing charger will also help indicate when such a situation is more likely to occur because the batteries end up charging/discharging differently, and you might get a new cell (or typically a whole new pack). So if you put a monitor on only a single cell, you can’t really be 100% sure that a reading on 1 cell is going to be indicative of readings on the other cells unless your balancing charger was quite recently used and indicated no problem. In that case I’d say it would be indicative..but still not a certainty.

              If you’re trying to save money (or weight!) in a live monitoring case, perhaps it would be better to switch the fuel gauge to each cell independently, e.g. using an analog switch. This would require control circuitry (presumably that’s not an issue given that the fuel gauge tends to be hooked up to a microcontroller anyway) and appropriate read-outs as well, though.. and I haven’t checked to see if added resistance from said switch would throw off the monitoring.

  • Anyone knows if this could be directly pugged to a SBC’s I2C bus (Raspberry Pi, etc.) and be recognized out of the box by a linux driver?

    If not, is there such a board?

  • I want to hook this up to a dev unit which I’ve been told uses an LTC3576 for battery charging – the contacts I get on the board are +, -, SCL, SDA, and TC (thermistor sense). It does not have a fuel gauge so I was thinking of hooking this one up to it - if I understand correctly, the SCL, SDA, +, and - pins on the gauge would go to the exact same contacts on the board, the QST can be connected to GND and ALT can be left open if I’m not planning on using those… It seems the VCC is connected to the + already, so does it make sense to not connect it to anything additional if I’m fine with it sipping the power there?

  • I cut the track that joins the Cell positive to the Chip VCC and pull up resistors. The track is easy to find, when looking at the back of the board, with the “Fuel Gauge” text at the top, the track to cut is the one that runs around (from 12 oclock to 3 oclock) the CELL -ve pad in the center of the board and attaches to the VCC pad on the right side.

    Once this track is cut, the VCC needs to be connected to a 3.3V (2.5V to 4.5V) supply, but you will have nicely isolated the LiPo voltage from the other supplies you have. This is for version V11

    • Yeah the schematic was causing me to freak out (CELL and VDD tied with forced pullups? gonna kill my µCU!! D:) Does cutting that trace keep the SDL/SDA pullups to VCC? So it just unties +/VCC?

  • Hi,

    Did anyone tried using it when running a Lithium Polymer battery while dischraging it on high current? When i am not consuming any current it look fine but when I’m discharging it at 20A-30A I’m getting strange results..


  • Digikey and Mouser no longer stock the MAX17043G+U, is there a good replacement IC I can use?

    • They’re still listed as active production… You should be able to buy them straight from Maxim at the above link.

  • Where’s the mounting holes!?

  • how do you order the max17043’s? I can’t find them anywhere, I just need the IC’s

  • Where do I plug the QST into, when using Arduino?

  • Any chance of Just being able to get the IC itself?

    • nvm

    • The data sheet states:

      “Clearing the ALERT bit while SOC is below the alert threshold does not generate another interrupt. The SOC register must first rise above and then fall below the alert threshold value before another interrupt is generated.”

      What does this mean exactly. What if say the SOC has a range from 0 to 100, 100 being fully charged and 0 is totally dead. If I write 4 if cases where I set the threshold alert levels to below, 100, below 75, below 50, and below 25. if the SOC first goes below 100, the FW then sets it to 75. If that statement is true, it has to rise above 100 and THEN go below to 75 for me to get another interrupt. Am I reading this right?


  • I have been trying to use this device and still am having problems. I am using an Atmega328 at 3.3V, running at 8MHz and the example code from this page. I noticed in the schematic that there are pull-up resistors (4.7K) on the breakout board so I assumed that I do not need external pull-up resistors in order to use this I2C interface. Am I right?
    Has anyone else been able to get this to work with the example code?
    Also I have been searching for an Arduino library and example code without any luck. Has anyone found any working Arduino examples?

    • To answer your other questions…
      Yes, the pullup resistors are included, so you don’t need more. I haven’t tried with Arduino/Atmega yet. For libraries, there’s an i2c library for the arduino called Wire: http://arduino.cc/en/Reference/Wire

    • From the datasheet and schematic I see a possible issue for 3.3V systems. They connected all the pullup resistors and the chips VDD to the battery voltage (labeled VCC), however Figure 7 in the datasheet shows the connections should be tied to the 3.3V of the microcontroller and isolated from the battery’s voltage, which could fluctuate from 2.6V to 4.2V. I think this could mean up to 4.2V signal levels on the 3.3V chip, but I’m not sure if this would actually cause a problem. Maybe try this out with a 5V Arduino? Looking at the signals with a logic probe or oscope might help. If I get I2C working on the datalogger (which runs at 3.3V) I’ll give this a try. Hopefully it’s just a code issue.

      • I was about to use this with a 3.3V setup too when I noticed this problem. Odds are, if you are using this in a system, you’re going to regulate the battery voltage, either up to 5V or down to 3.3V. Point being that by tying this board’s Vcc line directly to the battery, its logic lines are going to vary with the battery voltage. This seems like a bad idea, IMHO.
        This IC should be able to handle up to 5.5V inputs, but check that your system can handle IO voltages from 4.2V down to ~2.6V.
        Note, ATmega640/1280/1281/2560/2561 doesn’t like inputs above Vcc +0.5V.
        edit: I would recommend separating Vcc and Vdd from the battery voltage and letting the user connect them if they want. Otherwise, I need to cut traces on this board.

        • I agree that the pullups are a little weird. The I2C pins are open drain output, and I’d expect the host to pull them up… though if you’re using this in a standalone config (just using the alert pin), maybe the chip would freak out. And since they pull up the alert pin, I assume that’s an open drain output as well.

          The pullups won’t cause damage on most systems though, since the ESD diodes (present on most chips) will shunt the higher voltage, and the pullup resistors will limit the current.

          I think the VCC pin is dangerous though… if you didn’t fully understand the documentation, most would expect to power the chip through the VCC pin, but in this case, you’d end up connecting your 3.3V rail directly to the battery pack. Or, in a worse scenario, connect it to your 5V system VCC and set your LiPo on fire.

          It’s nice that you don’t need to connect regulated power to this (the datasheet recommended configurations show powering directly from the battery), but you just need to be extra careful and read the documentation. I’m just gonna leave the VCC header pin unpopulated to remind myself to not use it.

          BTW, in regards to the comment on Figure 7, that’s showing the 2S version (MAX17044), which needs a regulated voltage. They don’t recommend a regulator for the 1S version (MAX17043)… though they don’t explicitly recommend against one either.

  • Great chip.

  • How about one for multi-cell packs? And I second mitpatterson suggestion of having LED indicators on board, 1 red, 2 yellow, 3 green (racing christmas tree style) with everything lit up when it’s full and then progressivly turn them off as the power gets low, so the red is the last one to remain on.

  • Does anyone know of a similar IC which performs the same functions as this MAX17043 but in a larger, hand-solderable package?
    Maybe like MSOP or bigger.

  • Can I connect this to the output pins of a PRT-10300 - Power cell lipo charger/booster and get the current state of charge?
    In other words, add onto the charger/booster abilities of the PRT-10300 by adding the ability to gauge the power that’s left with this item?

  • Would be nice to have something like this that could directly output to a few LED’s (like you have “select” the “precision” of the output, 3, 5, 7 LED’s, have the last one red, yellow or 2, rest green) or even just an output to our own LED’s

  • Can you charge the battery while it is connected to this? Like if I connect a battery to this, then this to an Arduino FIO, can I charge the battery through the FIO still?

    • I think you’d need to just run power off the FIO board and over to the vias on the fuel gauge. Considering it uses an ASIC for monitoring the SOC, I have a feeling maxim would have realised that you need to charge the thing at some point :P

  • Only works with single cell lipos, from the datasheet.

  • Hi all, anyone has a library to implement PIC microcontroller and CCS compiler, please if someone has a different library of Arduino, and who can help me, I have several days trying to implement the circuit but I could not communicate with the PIC by I2C.

Customer Reviews

5 out of 5

Based on 1 ratings:

5 star
4 star
3 star
2 star
1 star

1 of 1 found this helpful:

It Works!!

I’ve received my new fuel gauge in the mail just days after ordering. I am thrilled to say that it works great. I had previously purchased five of these from ebay and none of them worked. DO NOT BUY THESE FROM EBAY!! I can darn near guarantee that they will not work. All I did to make this work was connect the SDA, SCL, B+ & B-. Uploaded the same code I had used previously recommended by Arduino and written by Luca Dentella; http://www.lucadentella.it/max17043-libreria-per-arduino/

I will try the spark fun code some other time. I did this in just 3 minutes an am in a hurry to get back to other projects. Thank you Spark Fun!