Skip to content
Published on

FingerScore ハードウェア 5 — 電源・電池・回路設計

Authors

はじめに

第 4 回で FingerScore リングを BLE で賢く携帯へ点数を送るようにしました。しかし前提がひとつありました。リングに電源が入っていることです。指ほどの機器の中に電池を入れ、数日〜数週間もたせ、安全に充電するのは思ったより難しいです。電源設計が雑だと、電池が半日で死んだり、発熱で指が熱くなったり、最悪の場合 LiPo が膨らみます。

今回の第 5 回は電源・電池・回路設計です。電力予算を計算して電池寿命を予測する方法から、電池の種類選び、充電 IC と保護回路、電圧をきれいにするレギュレータ、そして発熱や ESD といった安全問題まで扱います。数式や回路図が出ますが、すべて噛み砕いて説明するので電子工学が専門でなくても追えます。


1. 電力予算 — 電池はどれだけもつか

最初にやることは「この機器が平均的にどれだけ電流を食うか」を計算することです。これを**電力予算(power budget)**と呼びます。

スリープとアクティブの平均

FingerScore リングはほとんどの時間をスリープで過ごします。たまに加速度計が衝撃を検知すると起き(アクティブ)、点数を処理し BLE で送ってまた眠ります。ですから平均電流はスリープ電流とアクティブ電流の加重平均です。

平均電流の計算(加重平均)

I_avg = (I_sleep × t_sleep + I_active × t_active) / (t_sleep + t_active)

例の値:
  I_sleep  = 10 uA      (大半の時間)
  I_active = 8 mA       (BLE 送信 + MCU 動作)
  一度起きる時間 t_active = 5 ms
  起きる頻度 = 毎分 6 回(10 秒に一度 点数/広告)

1 分(60 秒)基準:
  active 総時間 = 6 × 5 ms = 30 ms = 0.03 秒
  sleep  総時間 = 60 - 0.03 = 59.97 秒

I_avg = (10uA × 59.97 + 8000uA × 0.03) / 60
      = (599.7 + 240) / 60
      = 839.7 / 60
      = 約 14 uA

平均 14uA という結果になりました。アクティブ電流はスリープより 800 倍大きいですが、アクティブ時間が極めて短いので平均はスリープ電流に近く保たれます。低電力設計の核心は「どれだけ少なく食うか」ではなく「どれだけ頻繁に起きるか」です。

電池寿命の推定

電池容量(mAh)を平均電流で割るとおおよその寿命が出ます。

電池寿命の推定

寿命(時間) = 電池容量(mAh) / 平均電流(mA) × ディレーティング

CR2032 コインセル = 約 220 mAh
平均電流 = 0.014 mA(上で計算した 14 uA)
ディレーティング = 0.7(自己放電、温度、電圧降下の余裕)

寿命 = 220 / 0.014 × 0.7
     = 15714 × 0.7
     = 約 11000 時間
     = 約 458 日

(実際には広告頻度、接続維持、温度で大きく変わる。
 保守的に数か月〜1 年と見る。)

ディレーティング係数 0.7 を掛ける理由は、実際の電池はカタログ容量を 100% 使えないからです。自己放電、低温での容量減少、カットオフ電圧などを考慮して保守的に見ます。


2. 電池選び — コインセル vs 小型 LiPo

リングのフォームファクターで電池は最も大きな体積を占めます。二つの主要候補を比較します。

項目コインセル(CR2032)小型 LiPo
電圧3.0V(非充電)3.7V 公称、4.2V 満充電
容量約 220 mAh20-110 mAh(大きさ次第)
充電不可(使い捨て)可能
厚さ/形状厚く円形薄く四角、曲面可
安全性高い(安定)注意必要(過充電・穿孔の危険)
指輪適合厚さの負担曲面 LiPo が有利

どちらか

  • コインセル:充電回路が不要で回路が単純かつ安全です。ただし一度使うと交換が必要で、厚さ(約 3.2mm)のため指輪が厚くなります。プロトタイプ初期や極端な低電力設計に向きます。
  • 小型 LiPo:充電できて使用体験が良く、曲面形状があり指輪に巻けます。代わりに充電 IC、保護回路、安全設計が追加で必要です。量産品は通常 LiPo を選びます。

FingerScore の最終製品は充電式なので、以降は小型曲面 LiPoを基準に説明しますが、プロトタイプ段階ではコインセルでファームウェアを先に検証することを推奨します。


3. LiPo 充電 IC と保護回路

LiPo は便利ですが危険です。過充電すると膨らみ、過放電すると壊れ、過電流が流れると発熱します。ですから二つの保護装置が必須です。

充電 IC(例:TP4056 系)

リチウム電池は決まった曲線(CC-CV:定電流-定電圧)で充電する必要があります。これを自動でやるチップが充電 IC です。代表的に TP4056 系が初心者によく使われます。

CC-CV 充電曲線

電圧/電流
  ^
  |        CC 区間          CV 区間
  |  電流 --------          ‾‾\___
  |  一定                       \___  (電流が徐々に減少)
  |
  |  電圧  ___/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾  (4.2V 到達後は一定)
  |     /
  +------------------------------------> 時間
     充電開始                  満充電近く
  • CC(定電流):最初は一定電流で速く充填します。
  • CV(定電圧):4.2V に達したら電圧を固定し電流を徐々に減らします。電流が十分小さくなれば充電完了とみなします。

充電電流は通常容量の 0.5C〜1C 程度に設定します。50mAh の電池なら 25〜50mA。小さな電池に大きすぎる電流を流すと危険なので、充電 IC のプログラム抵抗(R_PROG)で充電電流を制限します。

保護回路(保護 IC)

充電 IC とは別に、電池自体を守る保護回路が必要です。保護 IC(例:DW01 系 + デュアル MOSFET)は次を遮断します。

  • 過充電(Over-charge):電圧が高くなりすぎたら充電遮断
  • 過放電(Over-discharge):電圧が低くなりすぎたら放電遮断
  • 過電流/短絡(Over-current/short):大電流が流れたら即遮断

多くの LiPo セルはすでに保護回路が内蔵(PCM)されて販売されます。保護回路のない「raw cell」を使うときは必ず別途保護 IC を追加してください。安全に直結するので絶対に省略しないでください。


4. レギュレータ — LDO vs バックコンバータ

電池電圧は充電状態で変わります(満充電 4.2V → 放電 3.0V)。しかし MCU や BLE チップは安定した電圧(例:3.3V や 1.8V)を望みます。この変わる電圧を一定にするのがレギュレータです。

項目LDOバック(Buck)コンバータ
原理余る電圧を熱で捨てるスイッチングで効率変換
効率低い(電圧差が大きいほど損)高い(80-95%)
ノイズ非常にきれいスイッチングノイズあり
部品数少ない(コンデンサ 2 個)多い(インダクタ、コンデンサ等)
サイズ小さいインダクタのため大きい
静止電流超低電力品を選択可能品により様々

FingerScore の選択

リングは空間が極端に狭く、入力(3.0〜4.2V)と出力(3.3V)の電圧差が小さいです。電圧差が小さいと LDO の効率損失も小さくなります。さらに BLE ラジオはきれいな電源を好むのでノイズの少ない LDO が有利です。

したがって FingerScore は超低静止電流(quiescent current)LDOを基本にします。スリープ状態で LDO 自体が食う電流(Iq)が数十 nA〜数 uA の品を選ぶ必要があります。もし LDO の Iq が 100uA なら、先に計算した平均電流(14uA)よりはるかに大きくなり電池寿命を台無しにします。

LDO 静止電流の重要性

機器平均消費 = 14 uA
LDO Iq = 1 uA   -> 合計 15 uA、寿命ほぼ維持(良い)
LDO Iq = 100 uA -> 合計 114 uA、寿命 1/8(悪い)

教訓:スリープが長い機器で LDO 静止電流は核心スペック

5. デカップリングと電源インテグリティ

チップが突然多くの電流を要求すると(BLE 送信の瞬間など)電源電圧が瞬間的に揺れます。この揺れはチップを誤動作させたり BLE 信号を壊したりします。これを抑えるのが**デカップリングコンデンサ(decoupling capacitor)**です。

デカップリングコンデンサはチップの電源ピンのすぐ隣に置く小さなコンデンサで、小さなエネルギー貯蔵庫の役割をします。チップが急に電流を引くと遠い電池の代わりにすぐ隣のコンデンサが即座に供給して電圧の揺れを減らします。

デカップリングコンデンサの配置(概念)

[電池]---[LDO]----+----+----[MCU/BLE VDD ピン]
                  |    |
                100nF 1uF   <- チップピンにできるだけ近く
                  |    |
                 GND  GND

要点:コンデンサをチップ電源ピンに物理的に近く置くこと。
      遠ざかると配線のインダクタンスで効果が落ちる。

通常 100nF(高周波ノイズ用)1 個と 1uF〜10uF(低周波/大容量瞬間供給用)1 個を組み合わせてチップ電源ピンごとに配置します。これは第 6 回 PCB 設計で配置位置がさらに重要になります。


6. 低電力設計技法

電力予算の節で見たように、寿命を左右するのは「どれだけ頻繁に、どれだけ長く起きるか」です。ファームウェアとハードウェアの両方で使える技法です。

  • ディープスリープ活用:MCU の最も深いスリープモード(例:System OFF)を使うと数 uA 以下に下がります。起こすトリガーは加速度計の割り込みやボタン。
  • クロックゲーティング:使わない周辺装置(タイマー、ADC、UART)のクロックを切って電流を減らします。
  • 周辺装置オフ:使わないセンサー・LED・レギュレータチャネルを GPIO で完全に遮断します。LED ひとつ点いているとスリープ電流が無意味になりかねません。
  • 広告周期の最適化:BLE 広告を頻繁にすると電力を食います。接続後は広告を止めます。
  • センサーモード選択:加速度計を「動作検知(motion wake)」低電力モードにすれば、衝撃があるときだけ MCU を起こします。普段 MCU は完全に眠ります。
電力消費の優先順位(大きな泥棒から捕まえる)

1. 点いた LED / 常時オンのセンサー   <- 最大の泥棒、最優先
2. 頻繁な BLE 広告 / 短い interval
3. 高い LDO 静止電流
4. 切らない周辺装置のクロック
5. 非効率コード(busy-wait 等)

原則:uA を節約する前に mA を食う奴から捕まえよ。

電池残量の推定 — 電圧ゲージ vs クーロンカウント

携帯アプリに「電池 30%」を表示するには残量を知る必要があります。方法は二つです。

  • 電圧ゲージ(voltage gauge):電池電圧を ADC で読み残量を推定します。単純ですが、LiPo は放電曲線が平坦(中間区間で電圧変化が小さい)なので不正確です。負荷がかかると電圧が瞬間的に下がり誤差が大きくなります。
  • クーロンカウント(coulomb counting):出入りする電流を積分して正確に追跡します。専用の燃料ゲージ IC(例:MAX17048 系)を使えば正確ですが部品が増えます。
LiPo 放電曲線と残量推定の落とし穴

電圧
 4.2 |‾‾\
     |   ‾‾‾‾‾‾‾‾‾‾‾\        <- 平坦区間:電圧だけでは
 3.7 |              ‾‾‾‾\       残量を区別しにくい
     |                  ‾‾\
 3.0 |                     \_
     +------------------------> 使用量(%)
     100%                  0%

平坦区間で電圧ゲージは 60% か 40% か混同する。
正確な残量が重要なら燃料ゲージ IC を検討。

FingerScore は残量を 4 段階(100/70/40/10%)程度で表示すれば十分なので、コストを抑えるなら電圧ゲージ + 補正テーブルで始め、ユーザー体験が重要になれば燃料ゲージ IC へアップグレードする戦略が合理的です。

電池の劣化 — 寿命は永遠ではない

LiPo は充放電を繰り返すと容量が減ります。通常 300〜500 サイクルで初期容量の 80% 程度に落ちます。満充電(4.2V)で長く保管したり高温に置くと劣化が速まります。

  • 毎回 100% まで充電せず 80〜90% で止めると寿命が延びます。
  • 長期保管時は 50% 程度に充電しておきます。
  • ファームウェアで充電終了電圧をやや低く(例:4.1V)設定すると容量は少し減りますが寿命が大きく延びることがあります。

こうした配慮は、指にはめて毎日使う製品で「1 年後も一日もつか」を左右します。


7. 電流測定 — 見えない消費を測る

設計が終わったら実際にどれだけ食うか測定する必要があります。問題はスリープ電流(uA)とアクティブ電流(mA)が 1000 倍違うので、普通のマルチメータでは両方を正確に測りにくいことです。

  • 普通のマルチメータ:平均は見えますが、短いアクティブパルスを見逃しスリープ電流も不正確です。
  • 専用電流測定器(例:Nordic PPK2、Joulescope):uA から mA まで広い範囲を同時に、時間軸で見せます。起きるパルスの形まで見えるので「なぜ平均が高い?」を追えます。
電流波形の測定(専用測定器で見た様子)

電流
  ^
  | mA      ┌┐        ┌┐        ┌┐
  |         ││        ││        ││   <- BLE 送信パルス
  | uA  ____┘└________┘└________┘└___  <- スリープのベースライン
  +-----------------------------------> 時間

確認ポイント:
 - スリープのベースラインが予想(uA)より高くないか?
 - パルスが長すぎ・頻繁すぎないか?

測定なしに「うまくいくだろう」と思うと、ほぼ必ずどこかに隠れた消費があります。測定は選択ではなく必須です。


8. 回路図 — 電源部 ASCII

これまでの要素をひとつの電源部ブロックに描くと次のようになります。

FingerScore 電源部ブロック図

 USB-C  ---> [ESD 保護] ---> [充電 IC TP4056 系] ---+---> [LiPo + 保護 IC]
 (VBUS)                          (CC-CV 充電)        |
                                                     |
                                                     v
                                           [電源スイッチ/ロードスイッチ]
                                                     |
                                                     v
                                       [LDO 3.3V(超低 Iq)]
                                          |       |
                                       100nF     1uF  (デカップリング)
                                          |       |
                                          v       v
                                    [MCU + BLE SoC VDD]
                                          |
                                          +--> [加速度計 VDD]
                                          +--> [状態 LED(GPIO 制御)]

流れを整理すると:USB-C から入った電気が ESD 保護を経て充電 IC へ行き、充電 IC が LiPo を安全に充填します。使用時は LiPo → ロードスイッチ → LDO を経てきれいな 3.3V が作られ、デカップリングコンデンサを通って MCU/BLE/センサーへ供給されます。


9. 充電と USB-C

最近は USB-C で充電するのが標準です。ただし小さな機器なのでフル USB-C 仕様をすべて実装する必要はありません。

  • 電源のみ受ける場合:VBUS と GND だけ接続し、CC1/CC2 ピンにそれぞれ 5.1kΩ のプルダウン抵抗を付けると「私は電源だけ受ける装置だ」と USB-C ホストに伝えます。この抵抗を抜かすと充電できないことがあります。
  • データも必要なら:ファームウェア更新用の USB を入れられますが、リングのような小さな機器は通常無線(OTA)更新を使い USB は充電専用にします。

指輪のような小さな機器では USB-C コネクタ自体も体積を取ります。そこで磁石式充電ドック(ピン 2〜4 個を接点として露出)や無線充電(小型 Qi)を使うこともあります。接点式は回路が単純ですが防水と腐食に注意が必要です。

電源オン/オフ — ロードスイッチとブート

指輪には物理電源ボタンを置きにくいです(防水・空間)。ですから電源管理はファームウェアとハードウェアの協業で行われます。

  • ロードスイッチ:電池と回路の間のスイッチ(P-MOSFET または専用ロードスイッチ IC)で、使わないとき全回路を切り漏れ電流をほぼゼロにします。
  • ボタンで起こす:小さなタクトスイッチや静電容量式タッチで「オン」を実装します。長押しでオン、さらに長押しでオフという具合。
  • 充電時の自動ブート:充電器を挿すと自動でオンになり、保管中に完全にオフの状態からも復活させます。
電源状態マシン(概念)

  [完全オフ]  --ボタン長押し--> [ブート]  --初期化完了--> [動作]
       ^                                                   |
       |                                                   |
       +------- ボタンさらに長押し / 低電圧 ---- [終了] <----+

要点:「完全オフ」ではロードスイッチが回路を切り漏れを防ぐ。
      保管数か月でも電池が生きている秘訣。

この設計のおかげで、ユーザーが数日使わなくても電池が漏れず、再びはめるとすぐオンになります。小さなディテールですが「引き出しに置いた指輪が一か月後もオンになるか」を左右します。


10. 発熱・安全・ESD

小さな機器を指にはめるので発熱と安全は特に重要です。

発熱

  • 充電中は充電 IC と LDO から熱が出ます。充電電流を大きくしすぎると熱くなるので 0.5C 以下に保守的に設定します。
  • LDO は入力-出力電圧差 × 電流の分だけ熱を出します。電圧差が小さい設計は発熱も少ないです(LDO を選んだもう一つの理由)。

LiPo の安全

  • 過充電・穿孔・圧着時に LiPo は膨らんだり発火したりします。保護 IC は必須で、機構設計時にセルを押さないよう余裕空間を取ります。
  • 温度範囲を外れた充電(低温・高温)は危険です。充電 IC のうち温度保護(NTC)機能のある品を使うとよいです。

ESD 保護

指が触れる機器は静電気(ESD)に晒されます。ドアノブを掴んだときに走るあの静電気がチップを殺すことがあります。

ESD の脅威点と防御

USB-C ピン  ----[TVS ダイオード]---- 内部回路
接点/ボタン  ----[TVS ダイオード]---- GPIO

原則:人の手が触れるすべての露出導体に TVS(過渡電圧抑制)ダイオードで
      過剰な静電気をグラウンドへ流す。

TVS ダイオードは普段は何もしませんが、静電気のような瞬間的な高電圧が入るとそのエネルギーをグラウンドへ流して内部チップを守ります。USB-C のデータ/電源ラインと外部に露出したすべてのピンに付けるとよいです。


11. よくある間違い

  • LDO 静止電流の無視:データシートで Iq を見ずに選び、スリープ電流が 100 倍高く電池が一日で死にます。
  • 保護回路の省略:raw LiPo セルに保護 IC を付けないと過放電でセルが壊れ、過充電で膨らみます。安全事故に直結します。
  • CC プルダウン抵抗の欠落:USB-C で 5.1kΩ を付けないと充電器が電源を出しません。
  • デカップリングコンデンサの位置:コンデンサをチップから遠くに置くと効果がなく BLE が間欠的に死にます。
  • 充電電流過多:小さな電池に 1C を超える電流を流すと発熱・寿命低下・安全問題が起きます。
  • 測定の省略:計算だけを信じて実測しないと隠れた消費を捕まえられません。

12. おわりに — 次回予告

今回の第 5 回では FingerScore リングを本当に点け続ける電源設計を扱いました。電力予算で寿命を予測し、電池(コインセル vs LiPo)を選び、充電 IC と保護回路で安全に充電し、LDO できれいな電圧を作り、デカップリングと低電力技法で効率を高め、発熱・ESD・安全まで押さえました。

これで私たちは賢く通信し(第 4 回)長く点く(第 5 回)電子回路を手にしました。しかしこのすべての部品をどうやって指輪サイズの小さな基板の上に載せ、配線し、曲面に合わせ、アンテナがよく動くようにするのでしょうか。

次回の第 6 回PCB 設計と小型化では、スキマティックから PCB への流れ、部品配置とルーティング、指輪フォームファクターの制約、アンテナレイアウト、製造適合性(DFM)とガーバー出力、アセンブリ、そして量産と認証(FCC/KC)まで — 回路を本当に触れる物にする最後の段階を扱います。


参考資料