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
- Confirm the exact part number and breakout-board revision.
- Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
- Check controller pin assignments and bus address or interface mode against the example code.
- Power up with external loads disconnected, then test signals before full integration.
- 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 pin | Arduino Uno pin | Note |
|---|---|---|
| VCC | 5V | Some breakouts run at 3.3V — check your specific module. |
| GND | GND | |
| SDA | A4 | I2C data. |
| SCL | A5 | I2C clock. |
Swipe sideways to see every column →
- 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
Arduino Uno R4 Minima Pinout: Every GPIO, ADC, DAC, and Op-Amp Pin Explained
A complete Arduino Uno R4 Minima pinout reference — digital I/O, ADC, DAC, op-amp, CAN, dual UART, and exactly what it leaves out compared to the WiFi variant.
Mastering PWM on Arduino: Dimming LEDs and Controlling Motors
Understand what PWM actually is on Arduino, dim an LED smoothly, and safely control a DC motor's speed with a driver chip -- plus the mistakes (like wiring a motor straight to a pin) that damage boards.
4-Digit 7-Segment Counter with TM1637 & Arduino
Drive a TM1637-based 4-digit 7-segment display with Arduino Uno to show a real-time up/down counter, elapsed timer, and scrolling text. Covers library setup, brightness control, and custom segment mapping.
Arduino Uno R4 Minima vs WiFi: Which One Should You Choose?
Same processor, same memory, different price. Here's what the WiFi variant's extra hardware actually gets you, and when the Minima is the smarter buy.