When a textbook asks, "what is the source of energy in a circuit?" the expected answer is usually a battery, a solar cell, or a wall adapter. But on the workbench, the actual source of energy is the entire power delivery network (PDN). It is the electrochemical cell combined with its internal impedance, the PCB traces, the decoupling capacitors, and the voltage regulator. If you only design for the ideal voltage source, your microcontroller will brownout and reset the moment it turns on its WiFi radio.
To build reliable embedded systems, we must move past the theoretical ideal source and design a practical source network. In this guide, we will design a robust 3.3V power topology for an ESP32-C3 IoT sensor node powered by a single-cell lithium-polymer (LiPo) battery, contrasting topologies, sizing real components, and mapping out exact failure modes.
The Theoretical vs. Real Source of Energy
According to Thevenin's Theorem, any linear electrical network can be simplified to an ideal voltage source in series with an internal resistance. In a real-world circuit, the energy originates at the electrochemical terminals, but the usable energy is delivered to the load after passing through the PDN's parasitic resistances and inductances.
Let us map the nodes of a practical source topology:
- Node A (Raw V_BAT): The positive terminal of the 3.7V LiPo cell (ranges from 4.2V fully charged to 3.0V discharged).
- Node B (Regulated VCC): The 3.3V output of the voltage regulator.
- Node C (Common GND): The shared ground plane connecting the battery negative, regulator ground, and load ground.
- Node D (Load VCC): The physical VCC pin on the ESP32-C3 microcontroller.
The energy originates at Node A, but the microcontroller only "sees" the energy at Node D. The voltage drop between Node B and Node D during high-current transients is what causes most hobbyist circuit failures.
Topology Showdown: LDO vs. Buck-Boost for LiPo
Why choose a buck-boost switching regulator over a simple Low Dropout Regulator (LDO) for this application? A single-cell LiPo battery operates between 4.2V and 3.0V. Your target logic level is 3.3V. This means your input voltage will cross your output voltage during the discharge cycle.
| Criteria | LDO (e.g., MCP1700) | Buck-Boost (e.g., TI TPS63020) |
|---|---|---|
| Efficiency at 4.2V in | ~78% (burns 0.9V as heat) | >90% (switches efficiently) |
| Operation at 3.2V in | Fails (drops to ~2.7V out) | Maintains 3.3V out |
| Quiescent Current (Iq) | ~2 µA | ~25 µA |
| Transient Response | Excellent (no switching noise) | Good (requires output LC filter) |
| Component Count | 2 (Regulator + 1 cap) | 5 (IC, Inductor, 3 caps) |
For an IoT node that spends 99% of its time in deep sleep but spikes to 350mA during WiFi transmission, the efficiency and voltage-crossing capability of the buck-boost topology far outweigh its slightly higher quiescent current and component count.
Design Walkthrough: Sizing the Source Network
Let us design the source network using the Texas Instruments TPS63020 buck-boost converter. Sizing the passive components correctly is critical to handling the ESP32's RF transmission spikes.
Real Component Values
- Input Capacitor (C_IN): 10µF, 10V, X7R ceramic. Placed within 2mm of Node A and the IC VIN pin. X7R is mandatory; Y5V dielectrics lose up to 80% of their capacitance under DC bias.
- Inductor (L): 1.5µH, shielded, rated for 3A saturation current (e.g., Coilcraft XEL1005-152ME). If the inductor saturates during a 350mA TX burst, the IC will see a dead short and trigger overcurrent protection.
- Output Capacitor (C_OUT): 22µF, 6.3V, X5R ceramic. This provides the immediate charge reservoir for Node B when the load spikes.
- Local Decoupling (C_DEC): 100nF (0.1µF) placed directly adjacent to Node D (the ESP32 VCC pin). This handles high-frequency switching noise that the bulk 22µF capacitor cannot respond to quickly enough due to trace inductance.
Behavior Table: Load Transients
Here is what happens to the source network when the ESP32-C3 changes states, assuming a 3.7V nominal battery:
| Load State | Current Draw | Voltage at Node B (Regulator Out) | Voltage at Node D (MCU Pin) |
|---|---|---|---|
| Deep Sleep | 15 µA | 3.305V | 3.305V |
| Active (CPU running) | 45 mA | 3.298V | 3.295V |
| WiFi TX Burst | 350 mA | 3.280V (temporary dip) | 3.250V (trace drop) |
According to the ESP32-C3 Datasheet, the minimum operating voltage is 2.3V. Our worst-case transient dip to 3.250V at Node D provides a massive safety margin, preventing brownout resets.
Failure Modes: What Breaks at the Extremes?
A robust design must account for worst-case faults. Let us contrast what happens when things go wrong with our chosen buck-boost topology versus alternative battery configurations.
Short Circuit at Node B (Output Short to GND)
- Buck-Boost (TPS63020): The IC detects the overcurrent condition within microseconds, shuts down the switching MOSFETs, and enters a "hiccup" mode, periodically checking if the short is removed. It survives indefinitely.
- LDO Alternative: Unless it has active foldback current limiting, the LDO will attempt to pass maximum current, dissipating massive heat (P = V * I) until the silicon junction melts or the PCB traces delaminate.
Open Circuit at Node A (Battery Disconnect Under Load)
If the battery connector is yanked out while the ESP32 is transmitting, the inductor's collapsing magnetic field generates a massive voltage spike (inductive kickback). The TPS63020 contains internal clamp diodes that safely route this energy to ground. An improperly designed discrete boost converter without a snubber or clamp diode will blow the switching MOSFET gate oxide.
Series vs. Parallel Battery Failure Contrast
Why not use two smaller cells to get more capacity?
- Series (2S - 7.4V): If one cell develops an internal open-circuit fault, the entire string dies. Worse, if one cell shorts internally, the remaining cell forces its full voltage backward through the dead cell, leading to thermal runaway and fire.
- Parallel (1P2C): If you connect two cells in parallel without perfectly matching their voltages first, the higher-voltage cell will dump massive current into the lower-voltage cell to equalize. This cross-current can easily exceed the tabs' ampacity, melting the battery packaging and causing a short.
Verdict: Stick to a single, high-capacity 1S LiPo cell (e.g., 2000mAh) and let the buck-boost regulator handle the voltage conversion safely.
Breadboard Testing: Step-by-Step Verification
Never connect a $15 microcontroller to a newly assembled power topology without verifying the source network first. Follow this exact bench procedure:
- Isolate the Load: Do not plug in the ESP32-C3. Leave Node D (Load VCC) unconnected.
- Inject Simulated Power: Connect a benchtop power supply to Node A (Raw V_BAT). Set the voltage to 4.20V and the current limit to 100mA.
- Verify Static Output: Use a multimeter to measure Node B. It should read 3.30V ± 2%. If it reads 4.2V, your regulator is bypassed or dead. If it reads 0V, check the EN (Enable) pin pull-up.
- Test the Crossover Point: Lower the bench supply to 3.30V. Node B must remain at 3.30V. Drop the supply to 3.00V. Node B must still read 3.30V, proving the boost stage is active.
- Simulate the TX Burst: Connect a 10Ω power resistor in series with a logic-level N-channel MOSFET (like a 2N7000) between Node B and GND. Toggle the MOSFET gate with a 1kHz square wave from a function generator.
- Scope the Rails: Connect an oscilloscope probe to Node B. Trigger on the falling edge. You should see a voltage dip of no more than 50mV that recovers within 50µs. If the rail rings or dips below 3.1V, your output capacitor is too small or has too much equivalent series resistance (ESR).
Decision Tree: Picking Your Exact Source Component
Stop guessing which regulator to buy. Use this decision path to select the exact part number for your next build.
| Condition | Decision |
|---|---|
| Is your input voltage always at least 0.5V higher than your target output? (e.g., 5V USB to 3.3V) | Use an LDO. Pick the Microchip MCP1700-3302E. |
| Does your input voltage cross your output voltage, AND is your peak load < 500mA? | Use a low-power buck-boost. Pick the TI TPS63020. |
| Does your input voltage cross your output voltage, AND is your peak load > 1A? (e.g., driving motors or high-power LEDs) | Use a high-current buck-boost. Pick the TI TPS63060 or a dedicated buck like the TPS54308 (if input is always > output). |
| Are you powering a raw sensor from a 12V lead-acid battery down to 3.3V? | Use a wide-VIN buck. Pick the TI LM2596 or MP2315. |
The Default Recommendation
For 90% of hobbyist and prosumer IoT sensor nodes running on a single-cell LiPo battery and powering 3.3V logic (ESP32, nRF52, STM32), the definitive, no-compromise pick is the Texas Instruments TPS63020 paired with a 22µF X5R ceramic output capacitor. It eliminates dropout brownouts, maximizes battery extraction down to 2.0V, and handles 350mA RF spikes without flinching. Build your source network around this topology, and your circuit's energy delivery will be bulletproof.






