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