Skip to content

Instantly share code, notes, and snippets.

@ytyng
Created January 12, 2026 02:50
Show Gist options
  • Select an option

  • Save ytyng/9da428503ad6f7df97cf779259f88349 to your computer and use it in GitHub Desktop.

Select an option

Save ytyng/9da428503ad6f7df97cf779259f88349 to your computer and use it in GitHub Desktop.
TPL5110 + P-ch MOSFET power control circuit for Raspberry Pi Pico

TPL5110 電源制御回路設計

概要

TPL5110 を使用して、LiPo バッテリーから Raspberry Pi Pico への電源供給を周期的に制御する回路。

  • ポーリング間隔: 2分
  • 待機時消費電流: 約 35nA (TPL5110 のみ)

回路図 (Mermaid)

flowchart TB
    subgraph Power["電源部"]
        LIPO["LiPo Module<br/>4.5V OUT"]
    end

    subgraph TPL["TPL5110"]
        VDD["VDD"]
        EN["EN"]
        GND_T["GND"]
        DRV["DRV"]
        DONE["DONE"]
        DELAY["DELAY"]
    end

    subgraph Switch["P-ch MOSFET (SI2301)"]
        S["Source"]
        G["Gate"]
        D["Drain"]
    end

    subgraph Load["Raspberry Pi Pico"]
        VSYS["VSYS"]
        GP15["GP15"]
        GND_P["GND"]
    end

    R1["R1: 30kΩ<br/>(2分タイマー)"]
    C1["C1: 100nF"]
    C2["C2: 10μF"]
    GND["GND"]

    %% 電源接続
    LIPO --> VDD
    LIPO --> EN
    LIPO --> S
    LIPO --> C1
    C1 --> GND

    %% TPL5110 GND
    GND_T --> GND

    %% タイミング抵抗
    DELAY --> R1
    R1 --> GND

    %% MOSFET 制御
    DRV -->|"LOW=ON / HIGH=OFF"| G
    D --> VSYS
    D --> C2
    C2 --> GND

    %% Pico からのフィードバック
    GP15 -->|"DONE信号"| DONE
    GND_P --> GND
Loading

DRV ピンの動作

状態 DRV P-ch Gate P-ch 状態 Pico
タイマーカウント中 HIGH (4.5V) HIGH OFF (Vgs=0) 電源なし
タイマー完了 LOW (0V) LOW ON (Vgs=-4.5V) 電源供給
DONE信号後 HIGH (4.5V) HIGH OFF (Vgs=0) 電源遮断

なぜ外部 MOSFET が必要か?

Q: TPL5110 の DRV から直接 Pico に給電できないか?

A: できない。

項目 DRV ピン Pico の要求
設計目的 MOSFET ゲート駆動 電源供給
電流能力 数μA〜数mA程度 100mA以上 (WiFi時)
データシート記載 最大電流の記載なし -

DRV ピンは MOSFET のゲートを駆動するために設計されており、大電流を流す能力がない。 Pico は WiFi 使用時に 100mA 以上消費するため、外部の P-ch MOSFET でスイッチングする必要がある。


部品リスト

部品 型番/値 パッケージ 用途
U1 TPL5110 SOT23-6 ナノパワータイマー
Q1 SI2301 SOT23 P-ch MOSFET (ハイサイドスイッチ)
R1 30kΩ (1%) 0603 or THT タイミング抵抗 (≈2分)
C1 100nF 0603 or THT TPL5110 VDD バイパス
C2 10μF 0805 or THT Pico側 電源安定化

TPL5110 ピン配置 (SOT23-6)

        ┌─────┐
  GND  1│●    │6 DRV
  VDD  2│     │5 DONE
  EN   3│     │4 DELAY/M_DRV
        └─────┘
ピン 名称 接続先
1 GND GND
2 VDD LiPo OUT (4.5V)
3 EN VDD (常時イネーブル)
4 DELAY/M_DRV R1 経由で GND
5 DONE Pico GP15
6 DRV P-ch MOSFET Gate

SI2301 選定理由

項目
Vds(max) -20V
Id(max) -2.2A
Vgs(th) -1.0V 〜 -2.5V
Rds(on) 85mΩ @ Vgs=-2.5V
パッケージ SOT-23
  • Gate が LOW (0V) のとき、Vgs = -4.5V となり確実に ON
  • 低 Rds(on) で電圧降下が小さい (85mΩ × 100mA = 8.5mV)
  • Pico の消費電流 (数十〜100mA) に対して十分な余裕

タイミング抵抗 早見表

時間 抵抗値
1分 22kΩ
2分 30kΩ ← 今回使用
3分 34.7kΩ
5分 42.9kΩ
10分 57.4kΩ
30分 92.4kΩ
1時間 124.9kΩ
2時間 170kΩ

※ 正確な2分は 29.35kΩ だが、E24系列の 30kΩ で実用上問題なし


動作シーケンス

sequenceDiagram
    participant LiPo as LiPo Module
    participant TPL as TPL5110
    participant FET as P-ch MOSFET
    participant Pico as Raspberry Pi Pico

    Note over TPL: 電源投入
    TPL->>TPL: タイマー開始 (DRV=HIGH)
    Note over FET: OFF (Pico電源なし)

    Note over TPL: 2分経過
    TPL->>FET: DRV = LOW
    FET->>Pico: 電源供給 (4.5V)

    Note over Pico: 起動・処理実行
    Pico->>Pico: センサー読み取り
    Pico->>Pico: WiFi接続
    Pico->>Pico: データ送信

    Pico->>TPL: DONE = HIGH パルス
    TPL->>FET: DRV = HIGH
    FET->>Pico: 電源遮断

    Note over TPL: タイマー再開
Loading

Pico 側コード例

import board
import digitalio
import time

# DONE ピン設定
done_pin = digitalio.DigitalInOut(board.GP15)
done_pin.direction = digitalio.Direction.OUTPUT
done_pin.value = False

def send_done_signal():
    """TPL5110 に処理完了を通知して電源を切る"""
    done_pin.value = True
    time.sleep(0.001)  # 1ms パルス
    done_pin.value = False
    # ここで電源が切れる

def main():
    try:
        # センサー読み取り
        # WiFi接続
        # データ送信
        pass
    finally:
        # 成功/失敗に関わらず電源を切る
        send_done_signal()

main()

注意事項

USB デバッグ時

  • USB から給電しながら TPL5110 回路も接続すると電源が競合して TPL5110 が壊れる可能性あり
  • デバッグ時は TPL5110 を切り離すか、VSYS への接続を外すこと

DONE ピンのプルダウン

  • Pico 起動前に DONE ピンがフローティングになる
  • 必要に応じて 100kΩ のプルダウン抵抗を追加

起動時間の考慮

  • Pico の起動〜WiFi接続〜送信完了まで十分な時間が必要
  • タイマー間隔が短すぎると処理が完了しない可能性あり

参考リンク


更新履歴

  • 2026-01-12: Mermaid図追加、DRV電流制限の説明追加、動作シーケンス修正
  • 2026-01-12: 初版作成 (ポーリング間隔 2分)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment