電源・省電力

PMIC

電源管理を1チップ化したIC。

概要

PMIC(Power Management IC、パワーマネジメントIC)は、電子システムに必要な電源管理機能を1つのICに集積したものである。複数のDC-DCコンバータ(バック、ブースト)、LDOレギュレータ、充電IC、電圧監視、電源シーケンス制御、GPIOエキスパンダなど、従来は個別のICで実現していた機能をワンチップに統合する。

スマートフォン、タブレット、IoTデバイス、産業用機器など、複数の電源レール(電圧)が必要でかつ省スペース・高集積化が求められるシステムに広く採用されている。

PMICが統合する主要機能

機能内容
DC-DCコンバータ(バック)システムコアへの高効率降圧電源
DC-DCコンバータ(ブースト)ディスプレイバックライト、LED等の昇圧
LDOアナログ・RF回路向けの低ノイズ電源
充電コントローラリチウム電池のCC/CV充電制御
電池保護過充電・過放電・過電流保護
電源シーケンス制御複数レールの起動順序管理
電圧監視・BOD各電源レールの電圧異常検知
RTC用バックアップ電源主電源断時のRTCへのバックアップ供給
I2C/SPI通信インターフェースマイコンからの電源設定・状態読み出し
ウォッチドッグシステムのハングアップ検知・リセット

歴史・背景

1990年代のポータブル電子機器(PDA、携帯電話)の普及とともに、電源管理の複雑さが増し、個別ICによる設計では基板面積・部品点数の増大が問題になった。初期のPMICは充電コントローラとLDOを組み合わせた比較的シンプルなものであったが、スマートフォンの登場(2000年代後半)とともに高機能化・多機能化が急速に進んだ。

AppleのiPhoneや各Androidスマートフォンメーカーは、独自仕様のPMICをQualcomm、MediaTek、Dialog Semiconductor(現Renesas)などと共同開発・調達するようになり、PMIC設計はスマートフォン差別化の要素の一つとなった。

IoT分野では、espressifのESP32向けにAXP192/AXP202(X-Powers)、M5Stack向けデバイス等で使われるPMICが普及しており、コンパクトなIoTモジュールの電源設計を簡略化している。Raspberry Pi 4Bに搭載されているのもMXL7704というPMICである。

技術仕様

PMICの典型的な構成例(スマートフォン向け)

高機能スマートフォン向けPMIC(例: Qualcomm PM8998)の構成は以下のようになる。

[バッテリー(4.35V)] → PMIC
   ├── Buck1 (CPU core): 0.5〜1.4V, 4A
   ├── Buck2 (GPU core): 0.5〜1.1V, 2A
   ├── Buck3 (Memory): 1.2V, 3A
   ├── Buck4 (Display): 1.8V, 1A
   ├── LDO1 (RF): 1.8V, 300mA(低ノイズ)
   ├── LDO2 (Sensor): 2.85V, 200mA
   ├── LDO3 (Camera): 2.8V, 300mA
   ├── 充電コントローラ (CC/CV, USB PD対応)
   ├── 電池保護回路
   ├── 電源シーケンサ
   └── I2C通信インターフェース → SoC

IoT向けPMIC(AXP192)の使用例

M5Stack Core2などに採用されているAXP192のESP32との接続例を示す。

#include "driver/i2c.h"

#define AXP192_I2C_ADDR  0x34

// AXP192 レジスタアドレス
#define AXP192_REG_DCDC1  0x26   // DC-DC1出力電圧
#define AXP192_REG_DCDC3  0x27   // DC-DC3出力電圧
#define AXP192_REG_LDO2   0x28   // LDO2/LDO3出力電圧
#define AXP192_REG_LDO23  0x12   // LDO2/LDO3有効化
#define AXP192_REG_DCDC_CTRL 0x12  // DC-DC制御

// I2Cレジスタ書き込み関数
esp_err_t axp192_write_reg(uint8_t reg, uint8_t data) {
    i2c_cmd_handle_t cmd = i2c_cmd_link_create();
    i2c_master_start(cmd);
    i2c_master_write_byte(cmd, (AXP192_I2C_ADDR << 1) | I2C_MASTER_WRITE, true);
    i2c_master_write_byte(cmd, reg, true);
    i2c_master_write_byte(cmd, data, true);
    i2c_master_stop(cmd);
    esp_err_t ret = i2c_master_cmd_begin(I2C_NUM_0, cmd, pdMS_TO_TICKS(100));
    i2c_cmd_link_delete(cmd);
    return ret;
}

void axp192_init(void) {
    // DC-DC1: ESP32コア電圧 3.3V
    axp192_write_reg(AXP192_REG_DCDC1, 0x68);  // 3.3V = 0.7V + 0x68 × 25mV

    // LDO2: LCD バックライト 3.0V(PWM輝度制御用)
    axp192_write_reg(0x28, 0xF0);  // 3.0V

    // LDO3: Touch Panel 3.0V
    axp192_write_reg(0x28, 0xF0 | 0x0F);

    // LDO2, LDO3 有効化
    axp192_write_reg(0x12, axp192_read_reg(0x12) | 0x0C);

    // 充電電流: 780mA
    axp192_write_reg(0x33, 0xC0 | 0x05);
}

// バッテリー電圧の読み取り
float axp192_get_battery_voltage(void) {
    uint8_t hi = axp192_read_reg(0x78);
    uint8_t lo = axp192_read_reg(0x79);
    uint16_t raw = ((uint16_t)hi << 4) | (lo & 0x0F);
    return raw * 1.1f / 1000.0f;  // 1.1mV/LSB
}

// バッテリー充電電流の読み取り
float axp192_get_charge_current(void) {
    uint8_t hi = axp192_read_reg(0x7A);
    uint8_t lo = axp192_read_reg(0x7B);
    uint16_t raw = ((uint16_t)hi << 4) | (lo & 0x0F);
    return raw * 0.5f;  // 0.5mA/LSB
}

電源シーケンス制御

多くのSoC/CPUは、電源投入の順序(電源シーケンス)が規定されており、順序を誤るとSoCが破損する可能性がある。PMICはこの電源シーケンスを内部タイマーや外部トリガーで自動制御する。

電源シーケンス例(Raspberry Pi 4B / MXL7704 PMIC):
t=0ms:    VDD_CORE (CPU コア: 0.825V) 立ち上げ
t=2ms:    VDD_SDRAM_P/Q/R/C (LPDDR4: 1.1V) 立ち上げ
t=5ms:    VDAC (3.3V) 立ち上げ
t=10ms:   その他 LDO 立ち上げ
t=50ms:   nRESET 解除 → CPU 起動開始

動作原理

電圧出力の可変制御

多くのPMICでは、I2CまたはSPIを通じてMCU/SoCから各電源レールの電圧や有効/無効をリアルタイムに制御できる。これにより、動作状況に応じた動的電圧変更(DVFS: Dynamic Voltage Frequency Scaling)が実現される。

軽負荷時:  DCDC1(CPU電圧)を0.9V → 0.7Vに下げる → 消費電力低減
高負荷時:  DCDC1を0.7V → 1.1Vに上げる → CPU性能向上
スリープ時: 不要なLDOをすべてオフ → 静止電流最小化

電池保護回路の動作

PMICに内蔵された電池保護回路は、以下の条件を常時監視し、電池や回路を保護する。

保護機能条件動作
過充電保護Vbat > 4.35V(例)充電停止
過放電保護Vbat < 2.8V(例)放電カット
過電流保護Iout > 閾値出力遮断
過温度保護T > 80℃(例)充電電流低減
短絡保護急峻な過電流即座に出力遮断

用途・ユースケース

スマートフォン・タブレット

スマートフォンのメインボードでは、SoC、モデム、メモリ、表示系など10〜30種類の電源レールを管理するために、1〜2個の高機能PMICが使われる。電源シーケンス、バッテリー充電、USB Power Delivery対応をすべて統合する。

IoTモジュール

ESP32やnRF52840などのIoTモジュールと組み合わせて、コイン電池やLiPoバッテリーからの電源管理を行う。M5StackシリーズやT-Watchなどの小型IoTデバイスでAXP192/AXP202が使われている。

産業用組み込みシステム

広い電源電圧範囲(9〜36V)から複数の精密な電源を生成する産業用PMICも存在する。電源異常の検知・記録や、冗長電源の切り替えにも対応する。

医療機器・ウェアラブル

バッテリー残量の精密な管理(ガスゲージ機能内蔵)、充電安全性、小型化を両立するPMICが医療グレードの機器に採用される。

SBC(Raspberry Pi など)

Raspberry Pi 4B以降のモデルにはPMICが搭載されており、各電源レールの管理、電源シーケンス制御、過温度保護などを担っている。

実装・開発のポイント

1. PMICの選定基準

確認項目:
- 入力電圧範囲(電源ソースと整合性)
- 出力レール数と電圧範囲
- 各チャンネルの電流定格
- 充電機能の有無(LiPoを使う場合)
- 通信インターフェース(I2C/SPI)
- ガスゲージ機能の有無
- パッケージサイズ(小型化要求)
- コスト・入手性

2. 電源シーケンスの設計

SoCのデータシートで指定された電源投入・遮断シーケンスをPMICの設定で正確に実現する。誤ったシーケンスはSoCの破損やシステム不安定の原因になる。

3. I2C通信の信頼性確保

PMICへのI2C通信が失敗すると電源設定が不正になる可能性がある。初期化時に設定値の読み返し(ベリファイ)を行うか、フォールバック設定(デフォルト電圧)で安全に動作できる設計にする。

// 設定後のベリファイ
esp_err_t axp192_verified_write(uint8_t reg, uint8_t data) {
    axp192_write_reg(reg, data);
    
    uint8_t readback = axp192_read_reg(reg);
    if (readback != data) {
        ESP_LOGE("PMIC", "Verify failed: reg=0x%02X, wrote=0x%02X, read=0x%02X",
                 reg, data, readback);
        return ESP_FAIL;
    }
    return ESP_OK;
}

4. デバッグ時のPMIC状態確認

PMICは複数のステータスレジスタを持つため、起動時や異常発生時にこれらを読み出してログに記録することで、電源関連の問題をデバッグしやすくなる。

5. 熱設計の考慮

PMICは複数の電源を統合するため発熱量が大きくなる場合がある。特に充電中かつシステムが高負荷状態では発熱が重なるため、PMIC周囲の放熱設計(銅箔面積、サーマルビアなど)が重要である。

他技術との比較

比較軸PMIC(統合型)個別IC(LDO+DC-DC+充電IC)SiP(System in Package)
部品点数少ない(1〜2個)多い(5〜10個以上)最少
基板面積最小
設計の柔軟性中(PMICの仕様に依存)高(自由に組み合わせ)低(固定構成)
コスト中〜高(機能に依存)低〜中
開発期間短い長い最短
機能追加困難(IC変更が必要)容易不可

PMICはLDODC-DCコンバータ充電ICなどを一体化することで、設計の簡略化・小型化を実現するが、カスタマイズ性は個別IC設計より劣る。製品の量産規模・設計リソース・基板面積の制約に応じて、適切な電源設計アプローチを選択することが重要である。

関連用語

参考リンク