充電器が 65 W を表示していても、バッテリーに届く電力が 30 W しかない場合、必ずしもプロトコルの失敗を意味するわけではありません。デバイスが画面やプロセッサの駆動に電力を供給しているか、バッテリーが電流制限フェーズに入っているか、温度が入力電力を制限している可能性があります。充電システムは、入口でのネゴシエーション、電力変換、バッテリー制御、保護の 4 つの部分に分け、エネルギーパスに沿ってそれぞれ判断する必要があります。
アダプタ / Source 交渉した出力を供給 デバイスの電源パス 変換、バイパス、電流制限 バッテリーパック セル、保護、測定 システム負荷 画面、プロセッサ、ワイヤレス まずシステム予算を満たす デバイスのポリシーはバッテリーと温度情報に基づいて入力要求を調整する 電源プロトコルが入力能力を決定し、充電制御がバッテリーに実際に届くものを決 定する 破線は制御関係を示しており、バッテリーがアダプタに直接接続されているわけではありません。プロトコル制御、充電IC 、保護回路は互いに代替できません。
問題 本稿での着眼点 最初に明確にするべきこと
定格出力に達しない理由 ネゴシエーションと能力の共通部分 総電力、単一ポートの電力、デバイスの要求
PPS が発熱を軽減する理由 変換トポロジとケーブル損失 入力電流とバッテリー電流
急速充電が後期に遅くなる理由 CC/CV と終了条件 充電制限とセルの受容能力
デバイスを接続しても充電が終了しない理由 パワーパス システム負荷とバッテリー枝の電流
ワイヤレス充電が発熱しやすい理由 エンドツーエンドの効率 コイル伝送と完全なバッテリーパス
アダプタは完全なバッテリー充電コントローラではない
壁コンセント用アダプタは通常、交流を制御された直流に変換し、一部のプロトコルネゴシエーションを提供します。デバイス内の充電ICは、セル、電源、システムの状態に基づいて充電を制御します。車載電源、モバイルバッテリー、ワイヤレス受信端も入力源となり得るため、「充電器は必ず AC-DC である」とは限りません。
定格最大電力は能力の限界を示すだけであり、対応する電圧、電流、ポートの組み合わせを確認する必要があります。デバイスは、Source、Sink、ケーブル、コネクタ、電源パスが共に許容する条件内で要求し、電力を取り出すことができます。複数のポートを同時に接続すると、アダプタは電力を再分配し、ネゴシエーションの変化を引き起こす可能性があります。
単一ポートが 20 V/3.25 A を提供できると仮定しても、ケーブルが 3 A しか許容できない場合、そのパスは 3.25 A で動作できません。デバイスが 9 V/2 A を要求する場合、実際の契約は 18 W となります。両方が PD に対応していても、最大電力要件を満たす共通の電圧ステップが存在するとは限りません。
PD 固定電圧、PPS、EPR はそれぞれ何を解決するか
固定 PDO は一連の電圧/電流能力を宣言し、Sink が選択して要求します。Source が受け付けると切り替え、PS_RDY 後に電源が準備完了したことを報告します。完全な接続、役割、ネゴシエーションフローについては USB と Type-C を参照してください。Accept のみを受信した時点で、新しい電圧/電流条件が安定したものと見なしてはいけません。
PPS はプログラム可能電源能力を使用し、デバイスが Source が宣言した範囲内で電圧と電流の制限値を要求できるようにします。一般的な PPS 要求は微細なステップを持ちますが、要求の分解能は出力精度とは異なります。電圧範囲、最大電流、利用可能な電力は対応する APDO に基づき、すべての PPS 電源が 3.3~21 V、5 A を統一して提供するわけではありません。
EPR は電力範囲を拡張し、より高い電圧能力を含み、最大 48 V×5 A=240 W に達します。ポート、ケーブル、電源パス、プロトコル状態はすべて EPR に対応している必要があります。従来の 5 A/100 W ケーブルには電流能力がありますが、EPR 電圧と識別能力を備えているわけではありません。PD のバージョン番号も、デバイスがすべてのオプション機能を完全に実装していることを保証するものではありません。USB-IF:Power Delivery
「直充」は可変電源をセルに裸で接続することではない
デバイス内では、インダクティブ降圧、昇降圧、スイッチドキャパシタ変換、または制御されたバイパスなどの構造を採用できます。スイッチドキャパシタ 2:1 変換は、入力電圧を半分近くに下げると同時に、理想的な条件下で出力電流を約2倍に高めます。実際の値は損失と制御条件の影響を受けます。PPS を使用すると、入力電圧をバッテリー電圧に合わせて調整でき、変換器が適切な範囲で動作します。
例えば、TI BQ25980 は2直列セル向けのスイッチドキャパシタ充電器ですが、電圧、電流、温度保護を内蔵しており、対応するメイン充電器と連携して充電サイクルを完了します。これは「PPS にはデバイス内の回路不要で発熱しない」という主張が成り立たないことを示しています。TI:BQ25980
入力 9 V/3 A、変換効率 95%、出力バッテリー枝電圧が 4.2 V で、システム負荷への配分を一時的に無視すると、出力電流は約 9×3×0.95/4.2=6.11 A となります。この数学的な例は、入力 3 A がバッテリー 3 A とは等しくないことを示しています。これは特定のセルに 6.11 A を推奨するものではなく、セルが許容する電流と特定の変換器の動作範囲は別途制約する必要があります。
電力向上の利益はケーブルと変換損失と合わせて計算する
同じ入力電力 P において、伝送電圧を上げると通常電流 I=P/V が低下し、ケーブル損失は I²R となります。比較用の 30 W、ループ抵抗 0.10 Ω を例にとります。5 V/6 A で伝送する場合、線損は 3.6 W です。15 V/2 A で伝送する場合、線損は 0.4 W です。前者の電流は通常の USB-C で直接使用できる契約ではありません。これは同じ電力下での数学的な対照としてのみ機能します。
電圧を上げた後のデバイス変換器でも損失が増加する可能性があるため、ケーブルのみを計算して最高効率を宣言することはできません。低電圧大電流の専用ソリューションでも、ケーブル、接点、制御された充電パスとマッチさせる必要があり、標準 USB の電流能力と混用してはいけません。
電力読取位置 含まれるもの / 除外されるもの
壁の交流入力 アダプタ自体の損失を含む
アダプタの直流出力 ケーブルとコネクタの損失をまだ控除していない
デバイス USB 入力 システム負荷と内部変換に供給する必要がある
バッテリー端子電圧×電流 バッテリー枝の電気電力。すべてが利用可能な化学エネルギーに変換されるわけではない
「充電電力」を比較する際は、同じ位置を使用する必要があります。ワイヤレス充電の場合も同様で、受信端の出力電力、充電パッドの入力、壁の入力を一つの効率の分母に混同してはいけません。
CC/CV:充電で容量をピーク電流で割って計算してはならない理由
多くの充電池リチウムイオンセルにおいて、充電制御には、低電圧時の制限付き予備充電、通常の定電流、規定電圧到達後の定電圧減流、条件満たし後の終了が含まれます。具体的な閾値、電流、温度ウィンドウはセルと充電器の仕様によって決定され、「リチウムイオン電池」すべてが一律に 3.0/4.2 V であるわけではありません。
予備充電 定電流 CC 定電圧 CV 終了 電圧 電流 規定電圧上限を維持 電流が徐々に低下 電圧、電流は独立した縦軸で示す;段階の長さは実際の時間比ではない 典型的なリチウムイオン充電:電流制限予備充電、定電流、定電圧減流、終了 閾値、温度範囲、終了条件は具体的なセル/充電器仕様に基づく;これはすべての化学系に共通する固定パラメータ曲線で はない。
予備充電は、許容条件下で低電圧のセルに小さな電流で処理するために使用され、満充電後に長期間維持されるトリクルチャージと呼ぶべきではありません。低電圧のセルが規定時間内に回復できない場合、コントローラは故障と判断する可能性があります。無限に予備充電を行うことはできず、過放電されたすべてのバッテリーを回復可能な対象として扱うこともできません。
定電流フェーズでは充電電流が制限され、端子電圧は上限に徐々に近づきます。端子電圧には、開放電圧、オーム降下、分極寄与が含まれ、大きな電流では制限電圧に早く到達する可能性があります。CV に入ると、コントローラは電圧上限を維持し、電流を徐々に減少させます。温度、入力能力、またはシステム電力の制限により、どの段階でも先に電流低下がトリガーされる可能性があります。
終了には、バッテリー枝電流が設定された閾値を下回るなどの条件が必要であり、タイマーと状態判断が組み合わされることもあります。終了後はポリシーに基づいて再充電条件を監視しますが、リチウムイオンバッテリーに継続的に小さな電流を供給し続けるわけではありません。TI:BQ2407x 充電状態と終了
ピーク電力で全体を宣伝するのではなく、分段電流で時間を推定する
C-rate は容量で正規化された電流であり、例えば 3 Ah セルの 1C は 3 A です。純粋な教育的な電量計算として、3 Ah の電量を補給する必要があり、そのうち 2.4 Ah が 3 A で補給され 0.8 時間かかり、残りの 0.6 Ah が平均電流 0.75 A で補給され 0.8 時間かかると仮定すると、合計 1.6 時間となります。直接 3Ah/3A=1h とすると、後期の減流が無視されます。
実際の SOC、電量効率、段階の配分はこれらの固定数ではありません。充電時間は容量、化学系、熱設計、カットオフ定義、許容される充電戦略に依存し、条件を離れて特定の分数が必然的に可能か不可能かを証明することはできません。
充電量はピーク電流か面積か?
カーソル左の電流面積が積算電荷。減流後は3 A矩形との差が増える。電荷をSOC百分率とせず、指数曲線を全電芯共通モデルともせず、ピーク外挿が外れる理由だけを示す。
Q ( t ) = ∫ 0 t I ( u ) d u
図を準備しています 再読み込み
充電量はピーク電流か面積か? 電荷は電流の時間積分で、減流開始後はピーク電流×時間が過大評価になる。
{"id":"charge-current-area","title":"充電量はピーク電流か面積か?","summary":"電荷は電流の時間積分で、減流開始後はピーク電流×時間が過大評価になる。","height":1000,"html":"<h2 data-i18n=\"heading\"></h2><p class=\"intro\" data-i18n=\"intro\"></p><div class=\"control\"><label for=\"time\" data-i18n=\"time\"></label><output for=\"time\" id=\"time-value\"></output><input id=\"time\" type=\"range\" min=\"0\" max=\"2\" value=\"1.6\" step=\"0.01\"></div><div class=\"control\"><label for=\"tau\" data-i18n=\"tau\"></label><output for=\"tau\" id=\"tau-value\"></output><input id=\"tau\" type=\"range\" min=\"0.1\" max=\"0.6\" value=\"0.3\" step=\"0.01\"></div><div class=\"chart-wrap\"><div class=\"chart-label\" data-i18n=\"plot\"></div><svg id=\"plot\" class=\"curve\" viewBox=\"0 0 360 210\" role=\"img\" data-i18n-label=\"plot\"></svg></div><div class=\"metrics\"><div><span data-i18n=\"current\"></span><strong id=\"current\"></strong></div><div><span data-i18n=\"charge\"></span><strong id=\"charge\"></strong></div><div><span data-i18n=\"wrong\"></span><strong id=\"wrong\"></strong></div></div><p id=\"eq\" class=\"formula\"></p><details class=\"scope\"><summary data-i18n=\"scopeLabel\"></summary><p data-i18n=\"scope\"></p></details>","css":".intro{margin:8px 0 18px;color:var(--muted);font-size:14px}.caption,.hint{font-size:12px;color:var(--muted);margin-top:12px}.control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;align-items:center;margin:14px 0;font-size:13px}.control label{font-size:13px}.control output{color:var(--accent);min-width:5em;text-align:right;font-variant-numeric:tabular-nums}.control input{grid-column:1/-1;width:100%;margin:0}.presets{display:flex;gap:4px;align-items:stretch}.presets button{flex:1 1 0;min-width:0;overflow-wrap:anywhere;font-size:13px}.actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.actions button{flex:1;min-width:0;font-size:13px;min-height:42px}.copy{display:grid;font-size:14px;margin:16px 0}.copy>*{grid-area:1/1;margin:0}.reserve{visibility:hidden}.scope{margin-top:14px;color:var(--muted);font-size:12px}.scope summary{padding:8px 0;cursor:pointer}.scope p{margin-top:10px}.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}.card{border:1px solid var(--rule);border-radius:9px;padding:14px;min-width:0}.card header{font-size:14px;font-weight:600;margin-bottom:10px}.card button{font-size:12px;width:100%;min-width:0}.card small{display:block;font-size:12px;color:var(--muted)}.card code{font-size:12px;overflow-wrap:anywhere}.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}.metrics>div{border-left:2px solid var(--accent);padding-left:10px;min-width:0}.metrics span{display:block;min-height:3.2em;color:var(--muted);font-size:12px}.metrics strong{font-size:23px;display:block;font-weight:550;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.formula{border-top:1px solid var(--rule);padding-top:12px;margin-top:14px;font-size:13px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.value{font:550 20px ui-monospace,monospace}.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--muted);margin:12px 0}.legend span:before{content:'';display:inline-block;width:8px;height:8px;border-radius:2px;background:var(--accent);margin-right:6px}.legend .second:before{background:var(--second)}.check{display:flex;align-items:center;gap:8px;font-size:13px;margin:12px 0}.check input{width:16px;height:16px;flex-shrink:0;accent-color:var(--accent)}select,input[type=text],input[type=number]{background:var(--paper);color:var(--ink);font:inherit;font-size:13px;padding:10px;border:1px solid var(--rule);border-radius:7px;max-width:100%;min-width:0}select{width:100%;min-height:42px}.band{height:20px;display:flex;background:var(--surface);border-radius:4px;overflow:hidden}.band i{height:100%;display:block;background:var(--accent);transition:width .25s}.band i.second{background:var(--second)}button:disabled{cursor:default}.status{font-size:13px;min-height:4.8em}.mono{font-family:ui-monospace,monospace;font-variant-numeric:tabular-nums}.muted{color:var(--muted)}\n@media(max-width:480px){.two{gap:8px}.card{padding:12px 9px}.actions button,.presets button{font-size:12px}.metrics strong{font-size:20px}.metrics{gap:8px}}\n@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}\n.track-row{margin:16px 0}.track-row>span{display:block;font-size:12px;color:var(--muted);margin-bottom:7px}.track{display:flex;gap:5px;min-width:0}.cell{flex:1;min-width:0;min-height:48px;border:1px solid var(--rule);border-radius:5px;background:var(--surface);display:flex;align-items:center;justify-content:center;text-align:center;padding:5px 3px;font-size:12px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.cell.on{background:var(--accent-soft);border-color:var(--accent)}.cell.gold{background:var(--second-soft);border-color:var(--second)}.cell.empty{border-style:dashed;color:var(--muted)}.cell.error{border-color:var(--second);text-decoration:line-through}.choices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:14px 0}.choices button{min-width:0;padding:10px 4px;font-size:12px;overflow-wrap:anywhere}.choices button[aria-current=true]{border-color:var(--accent);background:var(--accent-soft)}.relation{display:grid;grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);align-items:center;gap:6px;margin:12px 0}.relation .cell{min-height:72px}.relation>i{text-align:center;font-style:normal;color:var(--accent)}.readout{font-size:13px;white-space:pre-line;min-height:6.4em;overflow-wrap:anywhere}.plot{position:relative;border-left:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:8px 0;margin:18px 0}.plot-row{height:28px;position:relative;margin:4px 0;background:var(--surface)}.plot-row i{position:absolute;inset-block:5px;background:var(--accent);min-width:2px;transition:width .2s,left .2s}.plot-row b{position:relative;padding:4px 6px;font:11px/28px ui-monospace,monospace;background:var(--paper);border-radius:3px}.axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}\n\n/* Action labels must remain readable across locales and narrow embeds. */\n.actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}\n.actions button{overflow-wrap:anywhere;white-space:normal;min-height:58px;padding:8px}\nbutton{overflow-wrap:anywhere}\n@media(min-width:640px){.actions{grid-template-columns:repeat(3,minmax(0,1fr))}}\n\n.metrics span{overflow-wrap:anywhere}\n.panel{border:1px solid var(--rule);border-radius:9px;padding:12px;margin:14px 0;min-width:0}.panel h3{font-size:13px;margin:0 0 10px;color:var(--muted)}.source{font:13px/1.8 ui-monospace,monospace;white-space:pre-wrap;overflow-wrap:anywhere;margin:12px 0}.source mark{background:var(--accent-soft);color:var(--ink);border-bottom:2px solid var(--accent)}.source .fault{background:var(--second-soft);border-color:var(--second)}.diagram{display:block;width:100%;height:auto;max-height:320px;margin:14px 0;overflow:visible}.diagram text{fill:var(--ink);font:12px ui-monospace,monospace}.diagram .edge{stroke:var(--muted);stroke-width:1.5;fill:none}.diagram .edge.on{stroke:var(--accent);stroke-width:3}.diagram .node{fill:var(--surface);stroke:var(--rule);stroke-width:1.5}.diagram .node.on{fill:var(--accent-soft);stroke:var(--accent)}.diagram .node.gold{fill:var(--second-soft);stroke:var(--second)}.log{font:12px/1.8 ui-monospace,monospace;white-space:pre-line;overflow-wrap:anywhere;min-height:7.2em}.table{display:grid;gap:5px;margin:14px 0}.table .tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.table .tr>*{padding:8px 5px;background:var(--surface);border-radius:4px;min-width:0;overflow-wrap:anywhere;font-size:12px}.table .tr .on{background:var(--accent-soft)}.table .tr .gold{background:var(--second-soft)}.choices button{min-height:44px}.metrics strong{min-height:1.6em}.code-line{display:block}.code-line.on{background:var(--accent-soft);border-left:2px solid var(--accent);padding-left:6px}.status-badge{font-size:12px;color:var(--accent)}.tile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.tile-grid .cell{min-height:40px}.actions button{min-height:48px}.form-field{display:grid;gap:8px;margin:14px 0;font-size:13px}.form-field input{width:100%;font-family:ui-monospace,monospace}.metrics.three{grid-template-columns:repeat(3,minmax(0,1fr))}.formula{min-height:3.2em}.presets{flex-wrap:wrap}.presets button{flex-basis:25%;min-height:44px}\n\n.budget{display:flex;height:28px;margin:16px 0;background:var(--surface);border-radius:5px;overflow:hidden}.budget i{display:block;background:var(--accent);transition:width .2s}.budget i.gold{background:var(--second)}.intervals{margin:16px 0}.interval{position:relative;height:36px;background:var(--surface);margin:6px 0;border-radius:4px;overflow:hidden}.interval i{position:absolute;height:100%;background:var(--accent-soft);border-left:2px solid var(--accent)}.interval i.gold{background:var(--second-soft);border-color:var(--second)}.interval span{position:relative;z-index:1;font:12px/36px ui-monospace,monospace;padding-left:7px}.table .tr>*{min-height:4.8em}.formula{white-space:pre-line;min-height:7.2em}.actions:has(>button:only-child){grid-template-columns:1fr}.metrics strong{min-height:3.2em}.rangegrid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:3px;margin:14px 0}.rangegrid .cell{min-height:30px;padding:3px 1px;font-size:10px}.message{min-height:7.2em;white-space:pre-line;font:13px/1.8 ui-monospace,monospace;overflow-wrap:anywhere}\n/* Allow CJK hanging punctuation without overflowing a metric's border box. */\n.metrics>div{padding-right:4px}.metrics span{line-break:anywhere}\n\n.chart-wrap{margin:18px 0}.chart-label{font-size:12px;color:var(--muted);min-height:3.2em}.curve{display:block;width:100%;height:auto;max-height:320px;overflow:visible}.curve text{font:11px ui-monospace,monospace;fill:var(--muted)}.gridline{stroke:var(--rule);stroke-width:1}.metrics strong{font-size:20px;min-height:3.2em}.formula{font:12px/1.8 ui-monospace,monospace;min-height:9em}.readout{min-height:8em}.presets button{flex-basis:30%}.scope p{overflow-wrap:anywhere} .unit-note{font-size:12px;color:var(--muted);margin:10px 0}\n\n.metrics span{word-break:break-all;line-break:strict}.metrics>div{padding-right:6px}\n\n","js":"const $=s=>document.querySelector(s);const set=(id,v)=>$('#'+id).textContent=v;const t=k=>viz.t(k);function cells(id,values){$('#'+id).replaceChildren(...values.map(v=>{const e=document.createElement('div');e.className='cell '+(v.cls||'');e.textContent=v.text;e.title=v.title||v.text;return e;}));}function pressed(mode){document.querySelectorAll('[data-mode]').forEach(e=>e.setAttribute('aria-pressed',String(e.dataset.mode===mode)));}const esc=s=>String(s).replace(/[&<>\"']/g,c=>({'&':'&','<':'<','>':'>','\"':'"',\"'\":'''}[c]));const fmt=s=>'{'+[...s].sort().join(', ')+'}';function graph(id,nodes,edges){const el=$('#'+id);el.setAttribute('viewBox','0 0 360 200');el.innerHTML='<defs><marker id=\"arrow-'+id+'\" viewBox=\"0 0 10 10\" refX=\"8\" refY=\"5\" markerWidth=\"5\" markerHeight=\"5\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"var(--muted)\"/></marker></defs>'+edges.map(e=>{const a=nodes[e[0]],b=nodes[e[1]],dx=b.x-a.x,dy=b.y-a.y,d=Math.hypot(dx,dy)||1;if(edges.some(r=>r[0]===e[1]&&r[1]===e[0])){const nx=-dy/d,ny=dx/d;return '<path class=\"edge '+(e[2]?'on':'')+'\" d=\"M '+(a.x+dx/d*22+nx*12)+' '+(a.y+dy/d*22+ny*12)+' Q '+((a.x+b.x)/2+nx*38)+' '+((a.y+b.y)/2+ny*38)+' '+(b.x-dx/d*25+nx*12)+' '+(b.y-dy/d*25+ny*12)+'\" marker-end=\"url(#arrow-'+id+')\"/>';}return '<line class=\"edge '+(e[2]?'on':'')+'\" x1=\"'+(a.x+dx/d*25)+'\" y1=\"'+(a.y+dy/d*25)+'\" x2=\"'+(b.x-dx/d*28)+'\" y2=\"'+(b.y-dy/d*28)+'\" marker-end=\"url(#arrow-'+id+')\"/>';}).join('')+nodes.map(n=>'<g><circle class=\"node '+(n.cls||'')+'\" cx=\"'+n.x+'\" cy=\"'+n.y+'\" r=\"25\"/><text x=\"'+n.x+'\" y=\"'+(n.y+4)+'\" text-anchor=\"middle\">'+esc(n.name)+'</text>'+(n.sub?'<text x=\"'+n.x+'\" y=\"'+(n.y+43)+'\" text-anchor=\"middle\">'+esc(n.sub)+'</text>':'')+'</g>').join('');}function table(id,rows){$('#'+id).classList.add('table');$('#'+id).replaceChildren(...rows.map(r=>{const row=document.createElement('div');row.className='tr';row.style.gridTemplateColumns='repeat('+r.length+',minmax(0,1fr))';r.forEach(x=>{const c=document.createElement('div');if(typeof x==='object'){c.textContent=x.text;c.className=x.cls||'';}else c.textContent=x;row.append(c)});return row;}));}function band(id,parts,total){$('#'+id).replaceChildren(...parts.map((p,i)=>{const e=document.createElement('i');e.style.width=(100*p.value/total)+'%';e.className=i%2?'gold':'on';e.title=p.name+': '+p.value;return e}));}function intervals(id,items,total){$('#'+id).replaceChildren(...items.map(p=>{const row=document.createElement('div');row.className='interval';const bar=document.createElement('i');bar.style.left=(100*p.start/total)+'%';bar.style.width=(100*(p.end-p.start)/total)+'%';bar.className=p.cls||'';const label=document.createElement('span');label.textContent=p.label;row.append(bar,label);return row;}));}function plot(id,series,xr,yr,opts={}){const e=$('#'+id),X=x=>42+(x-xr[0])/(xr[1]-xr[0])*298,Y=y=>175-(y-yr[0])/(yr[1]-yr[0])*148;let out='<defs><clipPath id=\"clip-'+id+'\"><rect x=\"42\" y=\"27\" width=\"298\" height=\"148\"/></clipPath></defs>';for(let i=0;i<3;i++){let x=xr[0]+i*(xr[1]-xr[0])/2,y=yr[0]+i*(yr[1]-yr[0])/2;out+='<path class=\"gridline\" d=\"M '+X(x)+' 27V175M42 '+Y(y)+'H340\"/><text x=\"'+X(x)+'\" y=\"194\" text-anchor=\"middle\">'+esc(opts.xfmt?opts.xfmt(x):Number(x.toFixed(2)))+'</text><text x=\"36\" y=\"'+(Y(y)+4)+'\" text-anchor=\"end\">'+esc(opts.yfmt?opts.yfmt(y):Number(y.toFixed(2)))+'</text>';}out+='<g clip-path=\"url(#clip-'+id+')\">';for(const s of series){out+='<path fill=\"none\" stroke=\"'+(s.color||'var(--accent)')+'\" stroke-width=\"2.5\" '+(s.dash?'stroke-dasharray=\"5 4\"':'')+' d=\"'+s.pts.map((p,i)=>(i?'L':'M')+X(p[0]).toFixed(2)+','+Y(p[1]).toFixed(2)).join(' ')+'\"/>';}for(const p of opts.points||[])out+='<circle cx=\"'+X(p[0])+'\" cy=\"'+Y(p[1])+'\" r=\"4\" fill=\"var(--second)\" stroke=\"var(--paper)\" stroke-width=\"1.5\"/>';if(opts.cursor!==undefined)out+='<path d=\"M'+X(opts.cursor)+' 27V175\" stroke=\"var(--muted)\" stroke-dasharray=\"3 3\"/>';e.innerHTML=out+'</g>';e.dataset.curves=JSON.stringify(series.map(s=>s.pts));}const curve=(fn,lo,hi,n=120)=>Array.from({length:n+1},(_,i)=>{const x=lo+(hi-lo)*i/n;return[x,fn(x)]});function inputs(draw){document.querySelectorAll('input,select').forEach(e=>{e.addEventListener('input',draw);e.addEventListener('change',draw)});draw()}const n=id=>+$('#'+id).value;const show=(id,v,d=3)=>set(id,Number(v.toFixed(d)));function draw(){let time=n('time'),tau=n('tau'),i=t=>t<=.8?3:3*Math.exp(-(t-.8)/tau),q=3*Math.min(time,.8)+(time>.8?3*tau*(1-Math.exp(-(time-.8)/tau)):0);show('time-value',time);show('tau-value',tau);plot('plot',[{pts:curve(i,0,2,240)},{pts:[[0,3],[2,3]],dash:true,color:'var(--second)'}],[0,2],[0,3.2],{cursor:time,points:[[time,i(time)]]});show('current',i(time));show('charge',q,4);show('wrong',3*time,4);set('eq','QCC = 3 × min(t, 0.8) Ah\\nQtail = 3τ[1 − exp(−(t−0.8)/τ)], t>0.8\\nQ = ∫I dt = '+q.toFixed(4)+' Ah');}inputs(draw);","audio":false,"strings":{"charge":"積算入力電荷(Ah)","current":"現在電流(A)","heading":"充電量はピーク電流か面積か?","intro":"時刻と減流時定数を変え、積分電荷とピーク外挿を比較。","plot":"横軸 h、縦軸 A、破線:全時間3 Aの外挿","reset":"リセット","scope":"学習用電流曲線:3 Aを0.8 h、その後指数減流。電芯電圧、SOC、予備充電、終了、実充電制御は扱わない。","scopeLabel":"モデルの範囲と前提","tau":"減流時定数(h)","time":"時刻(h)","wrong":"ピーク×時間(Ah)"}}
システムが充電中に使用する場合、パワーパスは負荷をバッテリー電流として扱わない
システム負荷がバッテリーノードに直接並列接続されている場合、充電器が検出する出力電流には負荷電流とバッテリー電流の両方が含まれ、終了判断に影響を与える可能性があります。パワーパス付きのソリューションでは、システム給電とバッテリー充電を分離して管理でき、入力制限時にはまず充電電流を低下させ、必要に応じてバッテリーがシステム電力を補完します。
デバイスの入力実利用可能電力が 18 W で、システム消費が 6 W だと仮定します。残りの 12 W が仮定される 90% 効率の充電パスを経由し、バッテリーには 10.8 W しか届きません。バッテリー電圧が 4 V の場合、約 2.7 A となります。システム負荷が上がると充電予算を圧迫するため、高負荷アプリケーション実行時に「充電が遅くなる」現象は、アダプタの電力のみを見て判断できません。
負荷管理と終了検出は、具体的な IC の電流測定位置、電流制限ループ、バッテリー補給動作を結合して分析する必要があり、任意の充電モジュールに負荷を並列接続した時点で自動的に完全なパワーパスが備わっていると仮定してはいけません。
充電制御、保護、計測、バランシングは同一機能ではない
機能 一般的なタスク 代替できないもの
Charger 通常の CC/CV、入力電流制限、温度降格、終了 独立した故障保護の全責任
Protector / BMS 保護部 境界超過の検出と充放電パスの遮断 日常の精密な充電調整
Fuel Gauge 電量、状態、容量の推定 較正なしの絶対的な真値
Balancer 直列セル間の状態差の縮小 劣化したセルの修復や過充電制限の緩和
保護閾値は通常、異常な境界で使用され、「保護が 4.25 V で動作する」ことを「充電は 4.25 V に設定すべき」と記述してはいけません。直列バッテリーはセルごとに監視する必要があります。パック全体の電圧が正常でも、特定のセルがすでに高い可能性があります。バランシング戦略は化学系、構成、システム設計に依存し、すべての多直列ソリューションが同じバランシング回路で動作するわけではありません。
クーロン積分計は、バイアス、初期 SOC、容量劣化、温度の影響を受け、単に「積分しているから」と言って正確であるとは呼びません。より詳細なモデルと直並列エネルギー計算については バッテリー技術 を参照してください。
独自の急速充電プロトコルはプロトコルの共通部分を比較し、固定の速度順位を並べない
QC、メーカー固有のソリューション、USB PD/PPS は、特定の製品上で共存する可能性があります。しかし、互換性の方向性、ケーブル認識、認証、フォールバック能力は具体的な製品によって決定されます。ブランドプロトコルを一律に「スマホが発熱しない」「すでにすべて PPS に移行した」と一般化することはできず、独自の 100 W システムが別の PD 65 W よりも必ず速く充電できると断言することもできません。
一連のデバイスに対して、サポートしている実際の入力ステップ、プログラム可能範囲、ケーブル定格、単一/複数ポートの配分、充電曲線を記録します。より高い定格能力は、通常の互換性ネゴシエーション中にデバイスがより多くの電力を吸収することを強制しません。重要なのは共通モードとデバイス自体の制限であり、単に最大の数字を選ぶことではありません。
ワイヤレス充電:アライメントで損失を低減し、プロトコルと熱制限は存在し続ける
Qi はコイル結合を通じてエネルギーを伝送し、対応する制御、認識、保護メカニズムを持っています。磁気アライメントは幾何学的な結合を改善しますが、ワイヤレスリンクに損失がないことを意味しません。送信コイル、受信整流、シールド、筐体、異物すべてが温度上昇と利用可能な電力に影響を与えます。
Qi2 を一律に最大 15 W と記述することはできません。WPC は 2025 年に Qi2 25W を発表し、Qi v2.2.1 に関連する能力に対応しています。具体的なスマートフォン、充電器、および付属条件は依然としてマッチングが必要であり、「磁石があるから」と認証や電力を推測してはいけません。WPC:Qi2 25W 発表
壁で 25 W を測定し、明確に定義された受信側で 18 W を測定した場合、このセグメントの効率は 72% です。バッテリー端の電力を使用すると、結果にはシステムと内部変換の損失も控除されます。測定境界がない場合、「ワイヤレス効率は通常 70%~80%」と書くことは、比較対象を間違えやすくなります。定格周波数と電力もモードによって変化するため、1 つの周波数ですべての Qi プロダクトを概括してはいけません。
電力と充電時間の再計算
from math import isclose
p , loop_r = 30 , 0. 1
low_v_loss = ( p / 5 ) * * 2 * loop_r
high_v_loss = ( p / 15 ) * * 2 * loop_r
assert isclose ( low_v_loss , 3. 6 )
assert isclose ( high_v_loss , 0. 4 )
assert isclose ( low_v_loss / high_v_loss , 9 )
assert isclose ( 9 * 3 * 0. 95 / 4. 2 , 6. 107142857142857 )
assert isclose ( 2. 4 / 3 + 0. 6 / 0. 75 , 1. 6 )
assert isclose ( ( 18 - 6 ) * 0. 9 , 10. 8 )
assert isclose ( ( 18 - 6 ) * 0. 9 / 4 , 2. 7 )
assert isclose ( 18 / 25 , 0. 72 )
print ( ' 線損、変換電流、分段時間、システム電力予算のチェックが通過しました' )
本稿の計算例は境界を理解するためのものです。電源の操作、セルへの充電、実際の急速充電曲線の測定を行うものではありません。
続きの参照