← Projects
electronics intermediate 1 hr ago ◯ 6 min read

Build a DIY Milliohm Meter for Battery Internal Resistance and Weld Quality Checks

Build time: A weekend (4-6 hours)
Tools needed: Soldering iron and solder, wire strippers, small screwdriver set, multimeter for calibration, hot glue gun, drill for enclosure holes
Parts List
milliohm meterinternal resistancekelvin probefour wire measurementbattery testingspot weldina226shunt resistor

A standard multimeter is useless for measuring resistance below about one ohm. It's not a limitation of cheap meters specifically — it's physics. The resistance of your test leads, the contact resistance at the probe tips, and the resistance inside the meter's own switching all add up to tens or hundreds of milliohms, which completely swamps a measurement where the thing you're actually trying to read is a handful of milliohms. That's a real problem for two jobs makers run into constantly: checking the internal resistance (IR) of lithium cells to catch aging or damaged packs before they become a safety issue, and verifying that a spot weld or crimped connection is actually making good electrical contact rather than a high-resistance joint quietly generating heat. This build gets you a purpose-made four-wire milliohm meter that solves both.

Why You Need Four-Wire (Kelvin) Measurement

The trick that makes milliohm-range measurement possible is separating the current path from the voltage-sensing path, using four contact points instead of two — a technique called Kelvin sensing. Current flows through the outer pair of probe tips, through the resistance you're measuring, and back. The inner pair of probe tips, placed closer together right across the resistance itself, carries essentially no current and so drops essentially no voltage across whatever lead and contact resistance exists in that sensing path. The voltage you read across those inner leads is then almost entirely the voltage drop across the actual resistance under test, not the parasitic resistance of your probes. This is exactly how commercial milliohm meters and battery analyzers work, and it's the only way to get believable readings below about 100 milliohms.

Circuit Design: Constant Current Plus Differential Sensing

The approach here uses a known, switched constant current (set by the shunt resistor and a MOSFET acting as a current-limited switch) driven briefly through the outer Kelvin leads, while the INA226 measures the tiny voltage that appears across the inner sensing leads during that pulse. Because the INA226 is designed as a current/power monitor, it already has a precision differential amplifier front end meant for reading small voltages across a shunt — here we're repurposing that same front end to read the voltage across whatever unknown resistance sits between the inner probe tips, with the known current value from our own drive circuit used to calculate resistance by Ohm's law (R = V / I) in firmware. Driving the test current in short pulses rather than continuously is deliberate: it keeps the test current from meaningfully heating a small battery cell or thin weld joint during the brief measurement window, which would otherwise skew the reading as resistance changes with temperature.

Choosing Your Current Source and Shunt

A test current in the 100mA to 1A range, switched through a logic-level MOSFET gated from the microcontroller, works well for both battery IR testing and weld-quality checks — higher current gives a larger, easier-to-resolve voltage drop on low resistances, at the cost of more self-heating risk if your pulse timing is sloppy. Size your drive-side shunt resistor so the voltage drop across it at your chosen test current stays within the INA226's input range, and budget for the shunt itself having some tolerance — a 1% part is adequate here since you're calibrating the whole system against a known reference anyway, not relying on the shunt's rated value in isolation.

Firmware: Reading, Calculating, and Displaying

The firmware loop is straightforward: pulse the MOSFET on, wait a few milliseconds for the reading to settle, take several INA226 samples and average them, pulse off, then compute resistance from the averaged voltage and your known current and display the result in milliohms on the LCD. Averaging multiple samples per pulse meaningfully improves repeatability — a single sample is noisy enough to make readings jump around in a way that erodes confidence in the tool, while averaging eight to sixteen samples per pulse settles that down considerably. Keep each pulse short (tens of milliseconds) and add a cooldown between measurements if you're testing in rapid succession, both to protect what you're testing and to avoid self-heating inside your own drive MOSFET and shunt.

Calibration Against a Known Reference

Before trusting any reading, measure your precision 1.000 ohm reference resistor with the finished meter and compare against its rated value. Any consistent offset you see is coming from residual lead or contact resistance that your Kelvin arrangement didn't fully eliminate, or from a small error in your assumed test current — apply that offset as a calibration constant in firmware (either a simple additive offset or a scaling factor, whichever fits your error pattern better) so subsequent readings are corrected automatically. Re-check calibration periodically and anytime you swap probe leads, since contact resistance at the Kelvin clip jaws themselves is one of the more variable parts of the whole chain.

Using It: Battery Internal Resistance Testing

Clip the outer Kelvin leads across a cell's terminals with the inner sensing leads placed just inside them, and take a reading. Internal resistance climbing over a cell's life, or one cell in a pack reading noticeably higher than its neighbors, is one of the most reliable early warnings of an aging or damaged lithium cell — well before capacity loss becomes obvious in normal use. This pairs naturally with the fuel-gauge and battery-pack content already on this site: a fuel gauge IC tells you state of charge, this tool tells you the health of the cell doing the charging and discharging.

Using It: Weld and Connection Quality Checks

The same technique works on spot-welded nickel strip connections on 18650 packs, crimped lugs, bus bar joints, and relay contacts. A good weld or crimp reads close to the bulk resistance of the metal itself; a cold weld, a poorly seated crimp, or a corroding contact reads noticeably higher, often well before it's hot enough to notice by touch or obvious enough to see. Checking every weld on a new battery pack build this way, before it goes into service, catches the handful of bad joints that visual inspection alone misses.

Safety Notes

This tool is designed for low-voltage DC measurement only — battery packs, welds, and connections well under 60V. It is not rated and not intended for any mains-connected or high-voltage measurement; don't adapt the probe leads for that use. When testing lithium cells directly, follow normal lithium battery handling precautions: don't short the outer Kelvin leads together while connected to a cell, keep the test pulses brief as designed to avoid localized heating, and don't leave a cell connected to the test leads unattended.

A meter like this costs a fraction of a commercial milliohm meter in parts and gives you a diagnostic capability that a standard multimeter simply cannot provide. Once it's built and calibrated, it earns a permanent spot on the bench next to the multimeter and LCR meter rather than coming out only for special occasions — checking a few welds on every pack build becomes routine fast.