A charging indicator can look convincing while a connected project prevents the charger from seeing the cell’s real taper current. Build a deliberately modest 100 mA charger module, calculate its current and heat budgets, and investigate why the battery connection is not a managed system-power output.
This is an unbuilt bench-design candidate, not a certified battery charger. No physical charge cycle, battery-temperature test, target run or safety qualification is claimed. The circuit lacks cell-temperature sensing, a charge safety timer, battery-protection circuitry and system load sharing. Use only a verified protected single cell whose manufacturer explicitly permits this charge profile, under supervision and within its specified conditions. Never use an unidentified, damaged, swollen, hot or primary cell.
Lithium-ion (Li-ion) and lithium-polymer (Li-polymer) describe rechargeable cell families; those labels alone do not define a safe final charging voltage. The selected Microchip MCP73831T-2ACI/OT implements a nominal 4.20 V profile. It is not a charger for a 4.35 V cell merely because that cell also says lithium, and it must not be substituted for a lithium iron phosphate profile. The cell maker’s voltage, current and temperature limits govern the experiment.
The part is an integrated circuit (IC), containing the pass transistor, current-control circuitry and charging logic. Its OT suffix selects a five-lead small-outline transistor package, commonly called SOT-23-5. The T denotes tape packaging; -2 denotes the 4.20 V option. AC selects particular preconditioning, termination and recharge ratios. Other similarly named MCP73831 or MCP73832 order codes must be checked independently rather than assumed equivalent.
The charger changes from constant current (CC), a phase regulating charging current, to constant voltage (CV), a phase regulating the cell terminal voltage while current tapers. A power path is the deliberate routing and control of energy between an input source, a battery and a system load. This small IC does not provide a separate managed system output. Adding a wire from BAT to a project does not add that missing function.

| Reference | Choice | Purpose |
|---|---|---|
| U1 | MCP73831T-2ACI/OT | Single-cell 4.20 V CC/CV charge controller |
| R1 | Vishay CRCW080510K0FKEA, 10 kΩ, ±1% | Set a nominal 100 mA fast-charge current |
| C1, C2 | TDK C3225X7R1E226M250AB, 22 µF, ±20%, 25 V, X7R, 1210 | Local input and battery-terminal bypass, with effective capacitance qualification |
| R2, D1 | 2.2 kΩ resistor; Lite-On LTST-C170KRKT red light-emitting diode | Local indication when STAT pulls LOW |
| J1, J2 | Samtec TSW-102-07-G-S two-pin headers | 5 V input and explicitly labelled battery positive/negative |
A light-emitting diode (LED) produces light when current flows in its forward direction. Here its anode faces the input supply through R2; its cathode faces STAT. The selected footprint’s polarity must match the manufacturer’s package drawing. The LED is an indicator of one controller signal, not an independent measure of cell capacity or battery health.
| U1 physical pin | Connection and role |
|---|---|
| 1, STAT | LED cathode; the MCP73831 has a tri-state status output |
| 2, VSS | Common ground, joined to input negative and battery negative |
| 3, VBAT | Battery positive and C2 |
| 4, VDD | Regulated input positive and C1 |
| 5, PROG | R1 to ground; no connection to a microcontroller |
Tri-state means an output can actively drive HIGH, drive LOW or become high impedance, depending on its operating state. The MCP73831’s status arrangement differs from the MCP73832’s open-drain output. This board keeps STAT local to the LED; it is not a ready-made 3.3 V processor signal. Never connect a 5 V-referenced status line directly to an input simply because both parts use the word digital.
The nominal programming equation can be written as Ireg in milliamperes = 1000 / Rprog in kilohms. Ten kilohms therefore requests 100 mA. That value is a design setting, not a measurement. The data sheet gives 90–110 mA at the stated conditions with a nominal 10 kΩ resistor; component tolerance, temperature, input headroom and thermal regulation must be kept in view. A ±1% resistor does not make the whole charger ±1% accurate.
For the selected AC option, the nominal preconditioning current is 10% of fast-charge current, or 10 mA in this design. Its nominal transition boundary is 66.5% of 4.20 V, approximately 2.793 V. Nominal termination current is 7.5%, or 7.5 mA, and the nominal recharge boundary is 96.5% of 4.20 V, approximately 4.053 V. These are distinct thresholds with documented tolerances. They should not be rounded into one universal “battery empty” or “battery full” number.
Do not charge a deeply discharged cell solely because the charger has a preconditioning phase. That phase cannot identify internal damage or decide whether a particular cell remains safe to use. Similarly, an active battery-protection board is not a substitute for choosing the correct charging voltage and current. Protection and normal charge control perform different jobs.
Imagine the cell itself is accepting only 3 mA near the end of a CV phase. With no other load, the charger’s output current can fall below a nominal 7.5 mA termination example. Now connect a project drawing 20 mA across BAT and GND. The charger may have to supply 23 mA: 3 mA into the cell plus 20 mA into the project. The IC does not have a separate sensor telling it which branch received that current.

The opposite problem is also possible. If a project demands 120 mA while the charger can presently provide only 100 mA, the current balance is 100 − 120 = −20 mA into the cell. The negative sign means net discharge in that simplified accounting example. A glowing indicator would not change this arithmetic. Real control mode, input limitations and cell voltage still have to be observed before assigning a physical current value.
A purpose-designed system power-path circuit can route input power to the load and manage the battery branch separately. That is a different design, with its own limits and review. This article leaves the system load disconnected during charging. It does not present an improvised diode network or a modified battery-protection board as a verified equivalent.
A linear charger converts much of the voltage difference into heat. In a first-order CC budget, P ≈ (Vin − Vbat) × Icharge. At 5.0 V input, 3.0 V cell voltage and 0.1 A, this gives 0.2 W, before additional losses. At 5.25 V and the nominal 2.793 V transition, it gives approximately 0.2457 W. The worst heating region can occur just after preconditioning ends rather than near a fully charged cell.
The IC can reduce charging current when its own die becomes hot. That protects an internal condition; it does not measure the cell temperature. Thermal resistance depends on the actual copper, assembly, enclosure and airflow, so a package number is not a measured temperature rise for this board. Record input voltage, current and component temperature in a supervised prototype test, using a measurement method appropriate to the small package. Stop rather than assuming repeated thermal reduction is a desirable operating target.
The current data sheet recommends at least 4.7 µF at VBAT for good AC stability. Alternating-current (AC) behavior here means changing voltages and currents, not permission to connect a mains supply. The selected 22 µF ceramic parts provide nominal margin, but ceramic capacitance can fall with applied DC voltage and changes with tolerance, temperature and aging. Verify at least the required effective capacitance in the intended conditions; do not substitute a smaller part on nominal marking alone.
Connect the regulated bench input while it is OFF and then enable it. This board has no input overvoltage transient clamp. The manufacturer explicitly discusses protection for hot-pluggable supplies because cable inductance can generate damaging transients. Its 3.75–6 V operating range and 7 V absolute maximum are not the same limit. This design is not a USB power-negotiation, hot-plug or arbitrary wall-adapter module.
No microcontroller is needed for the charger to operate. The supplied computer program calculates the exact prototype’s nominal budgets and makes the separate current branches visible. It does not simulate charging chemistry, predict a charge duration or decide whether a cell may be charged. Its temperature-independent arithmetic and phase hint must not replace the real controller state.
"""Offline arithmetic for the exact 100mA MCP73831-2AC prototype.
Not a charger simulator, battery model, temperature monitor or safety decision.
"""
import math
def finite(name, value):
value = float(value)
if not math.isfinite(value):
raise ValueError(name + ' must be finite')
return value
def prototype_budget(vin=5.0, vbat=3.0, rprog=10000.0):
vin, vbat, rprog = [finite(n,v) for n,v in
[('vin',vin),('vbat',vbat),('rprog',rprog)]]
if not 4.75 <= vin <= 5.25:
raise ValueError('This prototype uses only a 4.75 to 5.25V input')
if not 0 <= vbat <= 4.232:
raise ValueError('Cell voltage outside this arithmetic experiment')
if not 9900 <= rprog <= 10100:
raise ValueError('Only the 10kohm +/-1% prototype is covered')
nominal_ma = 1000000 / rprog
# Datasheet 90/100/110mA applies at nominal10kohm and its stated conditions.
# Scaling by resistor tolerance is an engineering allowance, not a new spec.
cc_low_ma, cc_high_ma = nominal_ma*.9, nominal_ma*1.1
term_low_ma, term_high_ma = cc_low_ma*.056, cc_high_ma*.094
hint = 'precondition' if vbat < .665*4.2 else 'CC_or_CV_requires_actual_observation'
return dict(nominal_cc_ma=nominal_ma, cc_allowance_ma=[cc_low_ma,cc_high_ma],
nominal_precondition_ma=.1*nominal_ma,
nominal_termination_ma=.075*nominal_ma,
termination_allowance_ma=[term_low_ma,term_high_ma],
nominal_precondition_boundary_v=.665*4.2,
nominal_recharge_boundary_v=.965*4.2,
nominal_cc_heat_w=max(0,vin-vbat)*nominal_ma/1000,
high_cc_heat_allowance_w=max(0,vin-vbat)*cc_high_ma/1000,
nominal_phase_hint=hint)
def current_balance(charger_ma, system_load_ma):
charger_ma, system_load_ma = [finite(n,v) for n,v in
[('charger_ma',charger_ma),('system_load_ma',system_load_ma)]]
if charger_ma < 0 or system_load_ma < 0:
raise ValueError('Use nonnegative current magnitudes')
return charger_ma-system_load_ma # positive charges; negative discharges
def termination_example(cell_taper_ma, system_load_ma, threshold_ma=7.5):
values = [finite(n,v) for n,v in [('cell_taper_ma',cell_taper_ma),
('system_load_ma',system_load_ma),('threshold_ma',threshold_ma)]]
cell_taper_ma, system_load_ma, threshold_ma = values
if cell_taper_ma < 0 or system_load_ma < 0 or threshold_ma <= 0:
raise ValueError('Currents must be nonnegative; threshold positive')
observed = cell_taper_ma+system_load_ma
return dict(charger_output_ma=observed,
below_example_threshold=observed < threshold_ma)
if __name__ == '__main__':
import json
print(json.dumps(prototype_budget(),indent=2))
print('3mA cell taper, no load:',termination_example(3,0))
print('3mA cell taper, 20mA system:',termination_example(3,20))
print('100mA charger minus 120mA load:',current_balance(100,120),'mA into cell')
print('These numbers do not authorize connecting or charging a battery.')
Run python3 charger_budget.py for the worked examples and python3 test_charger_budget.py for the delivered function tests. The tests check input limits, current and heat arithmetic, the selected AC ratios, resistor allowance, strict example thresholds and the load/discharge cases. Invalid or non-finite values are rejected. These are host software checks only; no firmware build, cell cycle or physical test is claimed.
The printed circuit board (PCB) proposal places the input capacitor near VDD and the battery capacitor near VBAT, with short ground returns and a quiet programming-resistor connection. It uses large ceramic footprints and space for polarity labels. Native electrical-rule and design-rule checks, actual footprint reconciliation and manufacturing-output review remain separate requirements; a neat board drawing is not a completed charging qualification.
The cell branch has tapered to 3 mA, but a permanently attached project uses 20 mA. Why can the charging indicator remain active, and why is changing only its LED resistor not a solution?
The charger sees the combined output demand, approximately 23 mA in the example, rather than a separately measured 3 mA cell branch. The LED reports STAT; its resistor changes indicator current, not the power-path topology. Disconnect the system load for this experiment or design and independently review a genuine system power path.
Download all experiment source files · Blank observations CSV. CSV means comma-separated values, a plain-text table format. The published MCP1700 supply experiment covers a regulator’s separate dropout question; a regulator and a charger are not interchangeable functions.