Skip to content
A

Battery

Using MAX17043 Battery with Arduino Uno

What is the MAX17043?

MAX17043 practical reference

A single-cell fuel-gauge IC that reports accurate state-of-charge over I2C, far more reliable than estimating from raw voltage. Rather than just reading the battery's terminal voltage (which sags and recovers unpredictably under varying load), the MAX17043 uses a proprietary ModelGauge algorithm to track the cell's actual state of charge over time, giving a genuinely useful percentage reading for battery-powered projects — wearables, handheld devices, or anything that wants to show a realistic 'battery remaining' indicator rather than a rough voltage-based guess.

Key specifications

  • Chipset: Maxim MAX17043 single-cell Li-ion/LiPo fuel gauge
  • Operating voltage: 3.0V–4.2V DC (matches a single Li-ion/LiPo cell's voltage range directly)
  • Operating current: ~50 µA typical, very low quiescent draw suitable for always-on battery monitoring
  • Measurement: State-of-charge percentage (0-100%) via Maxim's ModelGauge algorithm, plus raw cell voltage
  • Accuracy: No characterization or calibration required — works out of the box across most standard Li-ion/LiPo chemistries
  • Interface: I2C, up to 400 kHz
  • I2C address: 0x36 (fixed)
  • Additional feature: Configurable low-battery alert via an interrupt output pin

Pinout and connection notes

This chip is specifically designed for single-cell (1S) Li-ion/LiPo batteries only and reads the cell voltage directly through its VDD pin rather than through a separate sense input, so it should be wired directly across the battery terminals (not through a regulator) for accurate readings; the ALRT pin can be used to trigger a low-battery warning or safe shutdown in software.

  • VDD: Power, 3.0–4.2V DC (typically wired directly to the same single-cell battery being monitored)
  • GND: Ground
  • SCL: I2C clock line
  • SDA: I2C data line
  • ALRT: Low-battery interrupt output, configurable threshold
  • QSTRT: Optional quick-start pin to force an immediate state-of-charge recalculation

Integration checklist

  1. Confirm the exact part number and breakout-board revision.
  2. Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
  3. Check controller pin assignments and bus address or interface mode against the example code.
  4. Power up with external loads disconnected, then test signals before full integration.
  5. If readings or communication fail, check power and ground first, then pin mapping, interface settings, and library initialization.

Troubleshooting and reproducibility

Record the board used, wiring, library/version, supply arrangement, and measured behavior. Use the selected board-specific wiring example as the source of truth. Never assume visually similar modules share identical voltage tolerance or pin order.

Setting Up MAX17043 with Arduino Uno

Library

SparkFun MAX1704x Fuel Gauge Arduino Library by SparkFun

Arduino IDE → Tools → Manage Libraries → search "SparkFun MAX1704x Fuel Gauge Arduino Library" → Install

Wiring

Component pinArduino Uno pinNote
VCC5VSome breakouts run at 3.3V — check your specific module.
GNDGND
SDAA4I2C data.
SCLA5I2C clock.

Swipe sideways to see every column →

C++
  • This IC only measures a single-cell LiPo (3.0-4.2V) — it is a fuel gauge, not a charger; pair it with a TP4056 or CN3065 for actual charging.
  • Call quickStart() once whenever you connect a freshly charged or fully discharged battery for the first time — it resets the gauge's internal model rather than relying on a stale prior estimate.
  • The state-of-charge percentage is model-based (from voltage curve), not a true coulomb counter, so expect it to drift a few percent over many cycles — good enough for "low battery" warnings, not for precision fuel gauging.

Related Components

Related Guides & Projects