電源・省電力

充電IC

電池の充電を制御するIC。

概要

充電IC(Charger IC、バッテリーチャージャーIC)は、リチウムイオン電池やNiMH電池などの充電式電池(二次電池)を安全かつ効率的に充電するための専用ICである。電池の化学特性に合わせた充電プロファイル(定電流/定電圧制御)を実装し、過充電・過温度などの異常から電池とシステムを保護する機能を内蔵している。

リチウムイオン電池は充電管理を誤ると発火・爆発の危険があるため、適切な充電ICによる管理は必須である。充電ICは単体ICとして、またはPMICに内蔵された形で組み込みシステムに使われる。

充電ICの主な機能

機能内容
プリチャージ過放電電池の電圧を安全に回復させる低電流充電
定電流(CC)充電設定した電流で電池を充電する主フェーズ
定電圧(CV)充電満充電電圧(4.2V等)を保ちながら電流を絞るフェーズ
充電完了検出充電電流が閾値を下回ったら充電停止
過充電保護電池電圧が上限値を超えないよう制御
過温度保護電池や充電ICの温度が高すぎる場合に充電制限
NTC監視サーミスタ(NTC)で電池温度を監視
充電電流設定抵抗または通信(I2C)で電流を設定
状態出力充電中/完了/エラーをGPIO/LEDで通知

歴史・背景

リチウムイオン電池が1991年に商業化されて以降、その充電管理の重要性が認識され、専用充電ICの開発が進んだ。初期は汎用オペアンプやリニアレギュレータで充電回路を構成していたが、1990年代後半からリニア型の単機能充電IC(Maxim MAX712などNiMH向け、後にLi-ion向けが登場)が普及した。

2000年代のスマートフォン普及とともに、USB充電への対応、入力電流制限(USB規格に応じた電流制御)、急速充電対応が充電ICに求められるようになった。QualcommのQuick Charge、USB Power Delivery(USB PD)などの高速充電規格への対応が、2010年代の充電IC進化の中心となった。

現在では、TIのBQ25シリーズ、Maxim(Analog Devices)のMAX17シリーズ、RohmのBD25シリーズ、中国の南芯(Southchip)SC89シリーズなど多くのICが市場に存在し、単純なコイン型電池充電から100W超のラップトップPD充電まで幅広いラインアップが揃っている。

低コストIoT向けでは台湾のNanjing Top Power(NTP)のTP4056が非常に普及しており、わずか数十円で入手できる定番充電ICとなっている。

技術仕様

リチウムイオン電池の充電プロファイル

電圧 ↑
4.2V |          _______________
     |        /                \
3.0V |       /                  (CV領域: 電流が絞られる)
     |  (前処) (CC領域: 定電流)
     +--+------+----------------> 時間

電流 ↑
Ich  |  ___________________________
     |                             \
0.1C |                              \___  (充電完了)
     +--+------------------------------> 時間

フェーズ:
1. プリチャージ(Vbat < 3V 等の過放電時): 0.1C 程度の低電流
2. 定電流(CC): 設定充電電流(0.5C〜1C)で充電
3. 定電圧(CV): 4.2V一定、電流が自然減少
4. 充電完了: 電流 < 0.05C(5%)で充電停止

TP4056(低コスト定番充電IC)

最も普及している低コストリニア型充電ICの一つ。外付け部品が少なく、入門・低コスト用途に最適。

特徴:
- 入力電圧: 4.5〜5.5V(USB 5V対応)
- 充電電流: 外付け抵抗 RPROG で設定(最大1A)
- 満充電電圧: 4.2V(内部固定)
- 充電電流設定式: I_charge = 1000V / RPROG[Ω]
  例: RPROG = 1.2kΩ → I_charge = 1000/1200 = 833mA
      RPROG = 2.0kΩ → I_charge = 1000/2000 = 500mA
      RPROG = 10kΩ → I_charge = 1000/10000 = 100mA

ピン配置(SOT-23-5):
1: PROG(電流設定抵抗)
2: GND
3: VCC(5V入力)
4: CHRG(充電中: LOW、充電完了: Hi-Z)
5: BAT(電池接続)
// TP4056 充電状態の読み取り(CHRG/STDYピンのGPIO監視)
#define CHRG_PIN   GPIO_NUM_34  // 充電中: LOW
#define STDY_PIN   GPIO_NUM_35  // 充電完了: LOW(TP4057使用時)

typedef enum {
    CHARGE_STATUS_CHARGING,
    CHARGE_STATUS_COMPLETE,
    CHARGE_STATUS_STANDBY,
    CHARGE_STATUS_ERROR
} charge_status_t;

charge_status_t get_charge_status(void) {
    int chrg = gpio_get_level(CHRG_PIN);
    // TP4056の場合、CHRG = LOW で充電中、HIGH で充電完了/スタンバイ
    if (chrg == 0) {
        return CHARGE_STATUS_CHARGING;
    } else {
        return CHARGE_STATUS_COMPLETE;
    }
}

BQ25895(高機能スイッチング充電IC)

TIの高機能充電IC。スイッチング方式(バック型)で効率が高く、USB PD/QC対応も可能。

特徴:
- 入力電圧: 3.9〜14V(USB PD対応)
- 充電電流: 最大3.25A(0〜3250mA、64mA刻り)
- スイッチング周波数: 1.5MHz
- I2C制御インターフェース(0x6B)
- ADC内蔵(バッテリー電圧、充電電流、システム電圧等)
- VINDPM(動的入力電力管理)
- 温度モニタリング(NTC対応)
#include "driver/i2c.h"

#define BQ25895_ADDR     0x6B
#define BQ25895_REG00    0x00  // Input Source Control
#define BQ25895_REG02    0x02  // ADC Control
#define BQ25895_REG04    0x04  // Charge Current Control
#define BQ25895_REG06    0x06  // Charge Voltage Control
#define BQ25895_REG0B    0x0B  // VBUS / Charge Status
#define BQ25895_REG0E    0x0E  // Battery Voltage ADC

void bq25895_init(void) {
    // 充電電流を1024mA に設定(64mA × 16 = 1024mA)
    i2c_write_reg(BQ25895_ADDR, BQ25895_REG04, 0x10);

    // 充電電圧を4.208V に設定
    // VREG[5:0] = 0b010000 = 16 → 3.840 + 16×16mV = 4.096V(例)
    i2c_write_reg(BQ25895_ADDR, BQ25895_REG06, 0x8E);  // 4.208V

    // ADC 連続変換有効化
    i2c_write_reg(BQ25895_ADDR, BQ25895_REG02, 0x9D);
}

float bq25895_get_vbat(void) {
    uint8_t reg = i2c_read_reg(BQ25895_ADDR, BQ25895_REG0E);
    // BATV[6:0]: 2.304V + N × 20mV
    uint16_t raw = reg & 0x7F;
    return 2.304f + raw * 0.020f;
}

typedef enum {
    CHRG_NOT_CHARGING = 0,
    CHRG_PRE_CHARGE = 1,
    CHRG_FAST_CHARGE = 2,
    CHRG_CHARGE_DONE = 3,
} bq25895_chrg_status_t;

bq25895_chrg_status_t bq25895_get_charge_status(void) {
    uint8_t reg = i2c_read_reg(BQ25895_ADDR, BQ25895_REG0B);
    return (bq25895_chrg_status_t)((reg >> 3) & 0x03);
}

動作原理

リニア型とスイッチング型の違い

充電ICには大きく2種類のトポロジーがある。

リニア型(例: TP4056):

  • 内部のPMOSトランジスタで電流・電圧を制御
  • 回路シンプル、外付け部品少、低コスト
  • 入力と出力の電圧差が大きいと発熱が大きい
  • 効率 = Vbat / Vin(例: 4.2/5.0 = 84%)
発熱 = (Vin - Vbat) × I_charge
例: Vin=5V, Vbat=3.7V, I=500mA → (5-3.7) × 0.5 = 0.65W

スイッチング型(例: BQ25895):

  • DC-DCコンバータ(バック型)で電流・電圧を制御
  • 外付けコイル等が必要で回路が複雑
  • 発熱が少なく効率が高い(80〜95%)
  • 大電流(1A以上)の高速充電に適する

NTC(サーミスタ)による温度保護

多くの充電ICは、電池に貼り付けたNTC(Negative Temperature Coefficient)サーミスタを使って電池温度を監視し、以下の保護動作を行う。

温度範囲と動作:
- 45℃〜60℃: 充電電流を低減(ウォームゾーン)
- 60℃以上: 充電停止
- 0℃〜10℃: 充電電流を低減(クールゾーン)
- 0℃以下: 充電停止(低温でのリチウム析出防止)
// NTCによる温度計算例
// Beta方程式を使って抵抗値から温度を計算

#define NTC_BETA    3950     // NTC の Beta値
#define NTC_T0      298.15f  // 25℃ = 298.15K
#define NTC_R0      10000.0f // 25℃での抵抗値(10kΩ)
#define NTC_RDIV    10000.0f // 分圧抵抗

float ntc_resistance_to_temp_celsius(float resistance) {
    // Beta方程式: 1/T = 1/T0 + (1/B) × ln(R/R0)
    float temp_k = 1.0f / (1.0f / NTC_T0 + logf(resistance / NTC_R0) / NTC_BETA);
    return temp_k - 273.15f;
}

float read_battery_temp(void) {
    uint32_t adc_val = adc_read(NTC_ADC_CHANNEL);
    // ADC値から分圧抵抗を計算(VCC-NTC-R_div-GND の分圧)
    float voltage = (adc_val / 4095.0f) * 3.3f;
    float resistance = NTC_RDIV * (3.3f - voltage) / voltage;
    return ntc_resistance_to_temp_celsius(resistance);
}

用途・ユースケース

IoTデバイスのUSB充電

USB Micro-BやUSB-Cから5Vを受け取り、LiPoバッテリーを充電するシステムに最も多く使われる。TP4056や類似品が広く採用され、ESP32やArduino系のプロトタイプボードにも多く搭載されている。

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

USB PDや独自急速充電規格に対応したスイッチング型充電ICが使われる。Qualcomm QC5.0、USB PD EPR(最大240W)など、規格の進化に合わせた充電ICが各スマートフォンメーカーによって採用されている。

ウェアラブルデバイス

スマートウォッチ、健康バンドでは小型の充電IC(QFN・DFNパッケージ)と小容量LiPoが使われる。ワイヤレス充電(Qi)の場合は、受電コイル→整流→充電ICという経路になる。

ドローン・モバイルロボット

大容量・高レートの充電が必要な場合、専用のバランス充電器やマルチセルBMS(Battery Management System)と連携した充電ICが必要となる。

UPS・産業機器バックアップ

AC電源断時にバックアップとして使うLiPoに対して、フロート充電(満充電後に自己放電分を補充するトリクル充電)を行う充電ICが採用される場合がある。

実装・開発のポイント

1. 充電電流の設定と熱設計

リニア型充電ICでは発熱計算が重要である。ICパッケージの熱抵抗から接合温度を確認し、必要に応じてPCBのサーマルパッドやビアで放熱する。

リニア型: 最大充電電流の計算(熱制限)
P_loss = (Vin - Vbat) × I_charge
Tj = Ta + P_loss × θJA ≤ 125℃

例: TP4056 (θJA = 178℃/W)、Vin=5V、Vbat=3.7V、Ta=25℃
P_loss_max = (125 - 25) / 178 = 0.56W
I_charge_max = 0.56 / (5 - 3.7) = 0.43A → 400mA以下に制限

2. USB入力電流制限

USB 2.0規格では電流上限が500mAであり、USB-BポートからR充電する場合に充電電流+システム消費電流の合計が500mAを超えないよう制限する必要がある。高機能充電ICは入力電流制限(ILIM)機能を持つ。

3. 電力パス設計(Power Path Management)

充電中もシステムを動作させ続けるには、電池と入力電源の両方からシステムに電力を供給できる「電力パス管理」が必要である。BQ25895などは電池電圧とVUSBの高い方からシステムに給電するダイナミック電力管理(DPM)機能を持つ。

4. 充電状態のフィードバック

ユーザーへの充電状態通知(充電中LEDの点灯、満充電後の点灯色変化など)はCHRGピンとSTDYピンをLEDに接続するか、MCUのGPIOで読み取って制御する。

// 充電状態に応じたLED制御例
void update_charge_led(void) {
    charge_status_t status = get_charge_status();
    switch (status) {
        case CHARGE_STATUS_CHARGING:
            led_set_color(255, 100, 0);  // オレンジ: 充電中
            break;
        case CHARGE_STATUS_COMPLETE:
            led_set_color(0, 255, 0);   // 緑: 満充電
            break;
        case CHARGE_STATUS_ERROR:
            led_set_color(255, 0, 0);   // 赤: エラー
            break;
        default:
            led_off();
            break;
    }
}

他技術との比較

比較軸リニア型充電ICスイッチング型充電ICPMIC内蔵充電回路
効率Vbat/Vin(60〜90%)80〜95%スイッチング相当
発熱多い少ない少ない
外付け部品少ない(抵抗のみ)多い(コイル必須)最少
コスト最安(数十円〜)中程度高い
充電電流〜1A(発熱制限)〜5A以上〜3A
設計の難しさ低い高い低い(統合済み)
通信インターフェースなし(アナログ設定)I2C/SPI対応品ありI2C/SPI
USB PD/QC対応なしあり(高機能品)あり(高機能品)

充電ICの選定は、充電ソース(USB 5V、ソーラー、アダプタ)、充電電流要件、システムコスト、基板面積の制約を総合的に判断して行う。プロトタイプや量産品の低コスト用途にはTP4056系リニア充電ICが、急速充電・高効率が必要な商業製品にはBQ25895などの高機能スイッチング充電ICが、スペースと部品点数を最優先する場合はPMICが適している。

関連用語

参考リンク