12.7V が 100%
| 下限電圧 | DoD |
|---|---|
| 12.5V | 10% |
| 12.4V | 20% |
| 12.2V | 30% |
| 12.0V | 50% |
| 11.8V | 70% |
鉛蓄電池(標準的な液式)

特性: 最も一般的で安価。定期的な精製水の補充(メンテナンス)が必要な場合があります。自己放電が比較的多いです。
特徴:電解液:液体(硫酸),上にキャップあり(水補充できる),一番安い,自動車用に多い
弱点:深放電に弱い,液漏れ・ガス発生あり,傾けると危険
AGM(吸着ガラスマット)バッテリー

特性: 電解液をガラスマットに染み込ませた構造。メンテナンスフリーで漏液しにくく、充放電効率や耐震性に優れています。アイドリングストップ車によく使われます。
特徴:電解液:ガラスマットに染み込ませて固定、密閉型(VRLA)、内部抵抗が低く大電流OK、アイドリングストップ車に多い
強み:振動に強い、自己放電が少ない、開放型より深放電耐性あり
弱点:過充電に弱い、高温で劣化が早い、充電電圧管理が重要
ゲル(GEL)バッテリー

特性: 電解液をゲル状にしたもの。深い放電(ディープサイクル)に強く、寿命が長い傾向がありますが、充電電圧の管理がシビアです。
特徴:電解液:ゼリー状、完全密閉、ディープサイクル向け、ソーラー・非常電源で多い
強み:深放電に一番強い、長寿命、横倒しOK
弱点、急速充電NG、寒さに弱い、高価
リチウムイオンバッテリー(主にLiFePO4:リン酸鉄リチウム)
LiFePO₄(リン酸鉄リチウム)バッテリー
一般的な鉛蓄電池(12V)の充電は、通常以下の3段階で行われます。
バルク充電(定電流充電): CCフェーズ
吸収充電(定電圧充電): CVフェーズ
フロート充電(維持充電):
バッテリー種類毎の安全電圧:FLA(液式) 14.4v AGM 14.2-14.4v GEL 14.0-14.2v
| 放電深度(DoD) | 電圧下限 | サイクル寿命 |
|---|---|---|
| 10% | 12.5V | 2,000回以上 |
| 20% | 12.4V | 1,200〜1,500回 |
| 30% | 12.2V | 700〜1,000回 |
| 50% | 12.0V | 300〜500回 |
| 80% | 11.6V | 100〜200回 |
| 100% | 10.5V | 数十回 |
| DoD | サイクル回数 |
|---|---|
| 10% | 2,000回 |
| 20% | 1,400回 |
| 30% | 900回 |
| 50% | 400回 |
| 70% | 200回 |
生涯電力量 = 定格Wh × DoD × サイクル回数
| 下限電圧 | DoD | 1サイクルWh | サイクル | 生涯Wh |
|---|---|---|---|---|
| 12.5V | 10% | 48Wh | 2,000 | 96,000Wh |
| 12.4V | 20% | 96Wh | 1,400 | 134,400Wh |
| 12.2V | 30% | 144Wh | 900 | 129,600Wh |
| 12.0V | 50% | 240Wh | 400 | 96,000Wh |
| 11.8V | 70% | 336Wh | 200 | 67,200Wh |
一般利用では「40-80ルール」が推奨されますが、AC電源が常時確保できるキオスク端末等の場合、さらに踏み込んだ制御が理想的です。
Androidのバージョンによって取得方法が異なります。下位互換性を確保するための2つの実装方法です。
BatteryManager クラスから直接数値をプロパティとして取得します。
// BatteryManagerを使用してダイレクトに取得
BatteryManager bm = (BatteryManager) getSystemService(BATTERY_SERVICE);
int capacity = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
// 戻り値は 0 〜 100 の整数
システムからのブロードキャスト(Intent.ACTION_BATTERY_CHANGED)を受信して計算します。
// 粘着インテント(Sticky Intent)を利用して現在の状態を即時取得
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = (level / (float)scale) * 100;
USBの規格上、接続相手との通信状態によって供給電力が変わります。
2026/04/30