A power supply sequencer controls the order in which multiple voltage rails power up and shut down, preventing latch-up, inrush damage, and logic conflicts in complex circuits. Any project with multiple voltage rails (3.3V + 5V + 12V, or analog + digital supplies) benefits from sequenced power-up. This guide covers sequencing theory, common methods, and a practical Arduino-based sequencer.
Why Power Supply Sequencing Matters
Modern electronic systems often have multiple power rails that must start in a specific order. Problems from incorrect sequencing include:
- CMOS latch-up: When I/O voltage exceeds supply voltage (e.g., 3.3V I/O pin connected to a chip whose 3.3V rail has not yet started), parasitic SCR structures activate, creating a low-impedance path that can destroy the IC
- Inrush current: Multiple rails starting simultaneously draw combined inrush current that may exceed the source capacity, causing brownout
- FPGA/MCU conflicts: FPGAs require specific core-before-I/O sequencing; violating this can damage the device
- Analog noise: Digital rails switching on before analog rails causes noise coupling into sensitive analog circuits
Sequencing Hazards in Multi-Rail Systems
| Scenario | Risk | Correct Sequence |
|---|---|---|
| 3.3V core + 5V I/O | Latch-up if 5V starts first | 3.3V core → 5V I/O |
| FPGA with 1.0V/1.8V/3.3V | Core damage | 1.0V → 1.8V → 3.3V |
| Audio DAC analog + digital | Pop noise, ground bounce | Analog → Digital |
| Motor driver + logic | Motor spike damages logic | Logic → Motor (with delay) |
Sequencing Methods
1. RC delay + enable pin: Each regulator’s enable pin is driven through an RC network from the previous rail’s output. Simple and passive.
2. Dedicated sequencer IC: TPS3808, LTC2923, UCC3817 provide programmable sequencing with power-good monitoring and configurable delays.
3. Microcontroller-based: Arduino/ATtiny controls relay or MOSFET for each rail, with configurable delays and monitoring. Most flexible for prototyping.
Arduino-Based Power Sequencer
// 3-Rail Power Sequencer with Arduino
const int RAIL_3V3 = 4; // MOSFET gate for 3.3V rail
const int RAIL_5V = 5; // MOSFET gate for 5V rail
const int RAIL_12V = 6; // MOSFET gate for 12V rail
const int SEQ_DELAY = 200; // 200ms between rails
void setup() {
pinMode(RAIL_3V3, OUTPUT);
pinMode(RAIL_5V, OUTPUT);
pinMode(RAIL_12V, OUTPUT);
// All rails off initially
digitalWrite(RAIL_3V3, LOW);
digitalWrite(RAIL_5V, LOW);
digitalWrite(RAIL_12V, LOW);
delay(500); // Stabilisation delay
// Sequence ON: 3.3V → 5V → 12V
digitalWrite(RAIL_3V3, HIGH);
delay(SEQ_DELAY);
digitalWrite(RAIL_5V, HIGH);
delay(SEQ_DELAY);
digitalWrite(RAIL_12V, HIGH);
}
void shutdown() {
// Reverse sequence: 12V → 5V → 3.3V
digitalWrite(RAIL_12V, LOW);
delay(SEQ_DELAY);
digitalWrite(RAIL_5V, LOW);
delay(SEQ_DELAY);
digitalWrite(RAIL_3V3, LOW);
}
FAQ
Do I need a power sequencer for simple Arduino projects?
For most Arduino projects with a single 5V or 3.3V rail, no. Sequencing becomes important when you have multiple voltage domains, sensitive analog circuits, or FPGA-based designs.
What delay should I use between rails?
100-500ms is typical. The exact delay depends on rail capacitance and load — the previous rail must be fully stable before the next one starts. Use an oscilloscope to verify rail stability if available.
Add comment