NIDX-PM-26

Public

@niledex

Download board files

Files for version 1. Pick what you came for.

Share NIDX-PM-26

Check access before sharing the link.

Who can open this board

Anyone can open this board. No sign-in is required.

This link opens the latest version. Copying it does not grant additional access.

Loading 3D model… large boards can take a moment.

README

NIDX-PM-26: Dual-Channel MCU Power Management & Protection Module

NIDX-PM-26 is a dual-channel power distribution, circuit protection, and telemetry module designed by NileDex for microcontrollers (MCUs), development boards (ESP32, STM32, Arduino, Raspberry Pi), and sensitive embedded systems.

The module provides active reverse polarity protection, programmable current-limiting switches with hardware fault flags, and high-precision 20-bit digital power monitoring (voltage, current, power, and energy accumulation) over a shared I2C bus.


Key Features

  • Dual Independent Channels: Two isolated power paths (Channel 1 & Channel 2) capable of operating from independent or common supply rails.
  • Active Reverse Polarity Protection: Low-$R_{DS(on)}$ P-Channel MOSFETs (AO3401A) prevent reverse-voltage damage with negligible voltage drop compared to traditional Schottky diodes.
  • Precision Electronic Current Limiting & Load Switching: Integrated Texas Instruments TPS2553DBVR power switches with programmable current limit threshold, fast short-circuit response, and thermal shutdown with auto-recovery.
    • Set to ~500 mA per channel ($R_{ILIM} = 47\text{ k}\Omega$), adjustable from 75 mA to 1.7 A by changing resistor values.
  • High-Resolution Power Telemetry (INA228): Dual 20-bit Delta-Sigma ADCs monitoring bus voltage, shunt voltage, bidirectional current, and power consumption with high accuracy.
  • Hardware Fault & Alert Reporting: Dedicated open-drain FAULT (TPS2553) and programmable ALERT (INA228) outputs broken out for direct microcontroller interrupt handling.
  • Flexible Logic Level Compatibility: On-board I2C pull-up resistors are tied to an external VDD_I2C pin, allowing seamless operation with 1.8V, 3.3V, or 5V microcontroller logic.

System Architecture

                  CHANNEL 1
J1 Pin 1 ──► [Q1: AO3401A] ──► [U1: TPS2553] ──► [R1: 0.1Ω Shunt] ──► J2 Pin 1
 (VIN1)     (Reverse Protect)  (Current Limit)             │          (VOUT1)
                                      │                    ▼
                                      │              [U2: INA228]
                                      ▼             (20-bit I2C: 0x40)
                              FAULT1 ──► J4 Pin 7          │
                                                    ALERT1 ──► J4 Pin 5

                  CHANNEL 2
J1 Pin 2 ──► [Q2: AO3401A] ──► [U4: TPS2553] ──► [R2: 0.1Ω Shunt] ──► J2 Pin 2
 (VIN2)     (Reverse Protect)  (Current Limit)             │          (VOUT2)
                                      │                    ▼
                                      │              [U3: INA228]
                                      ▼             (20-bit I2C: 0x44)
                              FAULT2 ──► J4 Pin 8          │
                                                    ALERT2 ──► J4 Pin 6

                  CONTROL & I2C INTERFACE (J4)
J4 Pin 1 ──► VDD_I2C (Pull-up Reference: 1.8V - 5V)
J4 Pin 2 ──► GND
J4 Pin 3 ──► SDA (Shared I2C Data bus, 4.7kΩ pull-up R3)
J4 Pin 4 ──► SCL (Shared I2C Clock bus, 4.7kΩ pull-up R4)

Detailed Circuit Design

1. Reverse Polarity Protection (Q1, Q2)

  • Part: Alpha & Omega AO3401A (-30V, -4.0A, SOT-23 P-Channel MOSFET).
  • Function: Gate tied to GND; Source connects to the circuit rail, and Drain connects to the input power connector.
  • Behavior: If reverse voltage is applied ($V_{IN} < 0\text{V}$), $V_{GS} > 0\text{V}$ keeps the MOSFET off, completely blocking reverse current. When correct polarity is applied, the channel turns fully on with $R_{DS(on)} \approx 44\text{ m}\Omega$, minimizing power loss and voltage sag.

2. Overcurrent Protection & Load Switching (U1, U4)

  • Part: Texas Instruments TPS2553DBVR (SOT-23-6).
  • Operation: Active-high enable (EN) tied to IN for automatic power pass-through.
  • Current Limit Programming: The trip current is set by $R_{ILIM}$ resistors R5_LM1 and R6_LM1 ($47\text{ k}\Omega$): $$I_{OS(typ)} \approx \frac{24212}{(R_{ILIM})^{0.985}} \approx \frac{24212}{(47000)^{0.985}} \approx 595\text{ mA}$$ (Nominal continuous working current: $\sim 500\text{ mA}$).
  • Fault Detection: The active-low open-drain FAULT pin signals over-current or thermal shutdown events to the host MCU via J4.

3. Precision Current & Power Sensing (U2, U3)

  • Part: Texas Instruments INA228 (TSSOP-10).

  • Resolution: 20-bit Delta-Sigma ADC with $1\text{ }\mu\text{V}$ shunt voltage LSB and $195.3125\text{ }\mu\text{V}$ bus voltage LSB.

  • Current Sense Resistors: R1, R2 = $0.1\text{ }\Omega$ ($100\text{ m}\Omega$, 0805 SMD package).

  • I2C Addressing:

    ChannelIC DesignatorA1 PinA0 Pin7-bit I2C Address (Hex)7-bit I2C Address (Binary)
    Ch 1U2GNDGND0x401000000b
    Ch 2U3VS (Rail)GND0x441000100b
  • Alert Pins: Open-drain output asserted when programmed power, current, or voltage limits are exceeded.


Connector Pinouts

J1: Input Power Connector (1x03 Pin Header, 1.00mm Pitch)

Pin #SilkscreenSignalTypeDescription
1+5vVIN1Power InputChannel 1 Input Voltage (+2.5V to +6.5V)
23v3VIN2Power InputChannel 2 Input Voltage (+2.5V to +6.5V)
3GNDGNDGroundCommon Power Ground

J2: Output Power Connector (1x03 Pin Header, 1.00mm Pitch)

Pin #SilkscreenSignalTypeDescription
1+5vVOUT1Power OutputChannel 1 Protected & Monitored Power Output
23v3VOUT2Power OutputChannel 2 Protected & Monitored Power Output
3GNDGNDGroundCommon Power Ground

J4: Telemetry & Diagnostics Interface (1x08 Pin Header, 1.00mm Pitch)

Pin #SilkscreenSignalTypeDescription
1VIOVDD_I2CPower InputI2C pull-up reference voltage (1.8V, 3.3V, or 5V MCU logic)
2GNDGNDGroundSystem Ground reference for digital signals
3SDASDAI/OI2C Data line (pulled up via R3 $4.7\text{ k}\Omega$ to VIO)
4SCLSCLInputI2C Clock line (pulled up via R4 $4.7\text{ k}\Omega$ to VIO)
5ALRTALERT1Output (OD)Channel 1 INA228 programmable threshold alert
6ALRTALERT2Output (OD)Channel 2 INA228 programmable threshold alert
7FAULTFAULT1Output (OD)Channel 1 TPS2553 fault flag (Active Low)
8FAULTFAULT2Output (OD)Channel 2 TPS2553 fault flag (Active Low)

Electrical Specifications

ParameterMinTypicalMaxUnitNotes
Input Voltage ($V_{IN}$)2.53.3 / 5.06.5VLimited by TPS2553 supply range
Current Limit Threshold ($I_{LIMIT}$)450500600mAConfigured by $47\text{ k}\Omega$ $R_{ILIM}$ resistors
Current Sense Resistance ($R_{SHUNT}$)-0.1-$\Omega$Tolerance 1%, 0805 package
Reverse Polarity Voltage Blocking---30V$V_{DS(max)}$ of AO3401A
I2C Bus Speed104001000kHzStandard, Fast, and Fast-Mode+ supported
Digital Logic Voltage (VDD_I2C)1.83.35.5VFeeds pull-ups R3 and R4
Operating Ambient Temperature-40+25+85°CIndustrial rated components

Bill of Materials (BOM)

DesignatorValue / Part NumberDescriptionFootprint / Package
U1, U4TPS2553DBVRPrecision Adj. Current-Limited SwitchSOT-23-6
U2, U3INA22820-bit Current/Power/Energy MonitorTSSOP-10 (3x3mm, 0.5mm pitch)
Q1, Q2AO3401AP-Channel MOSFET (-30V, -4.0A)SOT-23-3
R1, R20.1 ($100\text{ m}\Omega$)Current Shunt Resistor, 1%SMD 0805
R3, R44.7kI2C Bus Pull-Up ResistorsSMD 0805
R5_LM1, R6_LM147kCurrent Limit Set Resistors (TPS2553)SMD 0805
C1, C2, C3, C4100n ($0.1\text{ }\mu\text{F}$)Ceramic Decoupling Capacitors, 50VSMD 0805
C5, C6, C7, C810u ($10\text{ }\mu\text{F}$)Ceramic Bulk Filter Capacitors, 16V/25VSMD 0805
J1, J2Conn_01x033-pin Power Input/Output Header1x03 Pin Header (1.00mm pitch)
J4Conn_01x088-pin Diagnostics & Telemetry Header1x08 Pin Header (1.00mm pitch)

Firmware Integration Example (Arduino / C++)

#include <Wire.h>

// I2C Addresses
#define INA228_CH1_ADDR 0x40
#define INA228_CH2_ADDR 0x44

// Pin Definitions on Host MCU
#define PIN_FAULT1 4
#define PIN_FAULT2 5
#define PIN_ALERT1 6
#define PIN_ALERT2 7

void setup() {
  Serial.begin(115200);
  Wire.begin();

  pinMode(PIN_FAULT1, INPUT_PULLUP);
  pinMode(PIN_FAULT2, INPUT_PULLUP);
  pinMode(PIN_ALERT1, INPUT_PULLUP);
  pinMode(PIN_ALERT2, INPUT_PULLUP);

  Serial.println("NIDX-PM-26 Initialized.");
}

void loop() {
  // Check for TPS2553 hardware fault (Active LOW)
  if (digitalRead(PIN_FAULT1) == LOW) {
    Serial.println("WARNING: Channel 1 Over-Current or Thermal Fault detected!");
  }
  if (digitalRead(PIN_FAULT2) == LOW) {
    Serial.println("WARNING: Channel 2 Over-Current or Thermal Fault detected!");
  }

  // Read voltage & current telemetry via I2C (INA228)
  readTelemetry(INA228_CH1_ADDR, "Channel 1");
  readTelemetry(INA228_CH2_ADDR, "Channel 2");

  delay(1000);
}

void readTelemetry(uint8_t address, const char* channelName) {
  // Read VBUS Register (0x05 for INA228)
  Wire.beginTransmission(address);
  Wire.write(0x05);
  if (Wire.endTransmission() == 0) {
    Wire.requestFrom(address, (uint8_t)3);
    if (Wire.available() >= 3) {
      uint32_t rawVbus = ((uint32_t)Wire.read() << 16) | ((uint32_t)Wire.read() << 8) | Wire.read();
      rawVbus >>= 4; // 20-bit data alignment
      float voltage = rawVbus * 195.3125e-6; // 195.3125 uV/LSB
      Serial.print(channelName);
      Serial.print(" Voltage: ");
      Serial.print(voltage, 3);
      Serial.println(" V");
    }
  }
}

Repository Structure

mcu-protection/
├── .gitignore                     # Git ignore rules (schematics, netlists & temporary files ignored)
├── LICENSE                        # MIT License
├── README.md                      # Hardware documentation and wiring guide
├── mcu-protection.kicad_pro       # KiCad 10 project file
├── mcu-protection.kicad_pcb       # KiCad PCB layout
├── mcu-protection.png             # PCB 3D preview render
└── ERC.rpt                        # Electrical Rules Check report

License

This project is licensed under the MIT License. Copyright (c) 2026 NileDex (NIDX-PM-26 Contributors).

Comments

No comments yet. Be the first to ask about this board.

Ask about this board

Sign in to BoardRepo

New here? Signing in creates your account; there is no separate sign-up.