power-budget-calculator について
組み込みプロジェクト向けの消費電力と電池寿命の見積もりスキルです。部品、動作モード、デューティ比から平均電流と稼働時間を計算し、部品の電流データベース、電池資料、低消費電力設計の指針を含みます。
主な機能
- 01部品と動作モード別に電流を見積もり
- 02デューティ比を計算
- 03電池の稼働時間を推定
- 04部品電流データベースを収録
- 05ハードウェアとソフトウェアの省電力指針
活用シーン
- 01電池駆動デバイスの稼働時間を見積もり
- 02センサーや通信モジュールの消費電力を比較
- 03スリープと復帰の周期を計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wedsamuel1230/ embedded-engineering-skills --skill power-budget-calculatorインストール後、Claude Code で/power-budget-calculatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/example-project.jsonreferences/component-database.mdscripts/calculate_power.py詳細
電力バジェット計算ツール
組み込みプロジェクトの消費電力とバッテリー駆動時間を推定します。
リソース
- scripts/calculate_power.py - コンポーネントデータベース、デューティサイクル対応、バッテリー駆動時間の推定機能を備えた Python 計算ツール
- references/component-database.md - データシートに基づく包括的な消費電流リファレンス
- assets/example-project.json - プロジェクト設定のサンプル
クイックスタート
計算ツールを対話形式で実行します:
uv run --no-project scripts/calculate_power.py --interactive
単一のコンポーネントについて計算します:
uv run --no-project scripts/calculate_power.py --component ESP32 --mode deep_sleep --duty 95
プロジェクト設定を読み込みます:
uv run --no-project scripts/calculate_power.py --json assets/example-project.json --output report.md
データベース内のすべてのコンポーネントを一覧表示します:
uv run --no-project scripts/calculate_power.py --list
使用する場面
- 「バッテリーはどのくらい持ちますか?」
- 「どのくらいの容量のバッテリーが必要ですか?」
- 「プロジェクトの消費電流はどのくらいですか?」
- バッテリー駆動プロジェクトの計画
- 低消費電力化
ワークフロー
ステップ 1:コンポーネント一覧を確認する
ユーザーに次の情報を尋ねます:
- マイクロコントローラー(モデルと動作モード)
- すべてのセンサーとモジュール
- ディスプレイ
- アクチュエーター(モーター、LED、リレー)
- 通信方式(WiFi、Bluetooth、LoRa)
- 動作プロファイル(常時オンか、デューティサイクルか)
ステップ 2:電力バジェットを計算する
--interactive オプションを付けて scripts/calculate_power.py を実行すると、ガイドに沿って計算できます。または、次のテンプレートを使用します:
# Power Budget: [Project Name]
## Operating Conditions
- Supply Voltage: [V]
- Operating Modes: [Active/Sleep cycles]
- Duty Cycle: [X% active, Y% sleep]
## Component Current Draw
### Always-On Components
| Component | Voltage | Current | Power | Notes |
|-----------|---------|---------|-------|-------|
| [name] | [V] | [mA] | [mW] | [conditions] |
| ... | ... | ... | ... | ... |
| **Subtotal** | - | **[mA]** | **[mW]** | - |
### Active Mode Only
| Component | Voltage | Current | Power | Duty % |
|-----------|---------|---------|-------|--------|
| [name] | [V] | [mA] | [mW] | [%] |
| ... | ... | ... | ... | ... |
| **Subtotal** | - | **[mA]** | **[mW]** | - |
### Peak Current Events
| Event | Current | Duration | Frequency |
|-------|---------|----------|-----------|
| [WiFi TX] | [mA] | [ms] | [per hour] |
| ... | ... | ... | ... |
## Power Calculations
### Average Current
I_avg = (I_active × t_active + I_sleep × t_sleep) / t_total I_avg = ([X]mA × [Y]s + [Z]mA × [W]s) / [T]s I_avg = [result] mA
### Battery Life Estimate
容量:[X] mAh 効率係数:0.8(80%使用可能) 実効容量:[X × 0.8] mAh
駆動時間 = 実効容量 / I_avg 駆動時間 = [X] mAh / [Y] mA 駆動時間 = [Z] 時間([days] 日)
## Recommendations
- [Power optimization suggestions]
- [Battery type recommendation]
- [Sleep mode configuration]
消費電流データベース
マイクロコントローラー
Arduino(ATmega328P @ 5V)
| モード | 電流 | 備考 |
|---|---|---|
| アクティブ(16MHz) | 15-20mA | 周辺機器なし |
| アイドル | 6mA | CPU 停止、周辺機器はオン |
| パワーダウン | 0.1µA | WDT/外部割り込みのみ |
| USB-シリアル使用時 | +50mA | CH340/FTDI チップは常時オン |
ESP32(WROOM-32)
| モード | 電流 | 備考 |
|---|---|---|
| アクティブ(WiFi TX) | 160-260mA | 送信中のピーク |
| アクティブ(WiFi RX) | 95-100mA | 受信待機中 |
| アクティブ(WiFi なし) | 20-68mA | CPU のみ |
| モデムスリープ | 20mA | WiFi オフ、CPU はオン |
| ライトスリープ | 0.8mA | CPU 一時停止 |
| ディープスリープ | 10µA | RTC のみ |
| ハイバネーション | 5µA | RTC オフ |
ESP32-C3
| モード | 電流 | 備考 |
|---|---|---|
| アクティブ(WiFi TX) | 320mA ピーク | 短時間のスパイク |
| アクティブ(BLE) | 50-100mA | アドバタイズ中 |
| アクティブ(無線なし) | 25-35mA | CPU 160MHz 動作時 |
| ライトスリープ | 130µA | 自動ウェイクアップ |
| ディープスリープ | 5µA | RTC オン |
RP2040(Pico)
| モード | 電流 | 備考 |
|---|---|---|
| アクティブ(両コア) | 25-50mA | クロックに依存 |
| シングルコア | 15-25mA | 片方のコアは休止 |
| ドーマント | 0.18mA | GPIO/RTC でウェイクアップ |
| スリープ | 1.3mA |
RP2040(Pico W)
| モード | 電流 | 備考 |
|---|---|---|
| WiFi アクティブ | 50-150mA | 送信中 |
| WiFi アイドル | 30-40mA | 接続中、受信待機 |
| WiFi オフ | 25-50mA | 無線無効 |
センサー
| センサー | アクティブ | スリープ | 備考 |
|---|---|---|---|
| DHT22 | 1.5mA | 50µA | 読み取り中 |
| BME280 | 0.35mA | 0.1µA | 強制モード |
| BMP280 | 0.27mA | 0.1µA | |
| MPU6050 | 3.8mA | 5µA | 全軸 |
| DS18B20 | 1.5mA | 1µA | 変換中 |
| HC-SR04 | 15mA | 2mA | 真のスリープ機能なし |
| VL53L0X | 19mA | 5µA | 測距中 |
| MAX30102 | 600µA | 0.7µA | 低消費電力モード |
| BH1750 | 120µA | 1µA | パワーダウンモード |
| GPS(NEO-6M) | 45mA | 11mA | バックアップモード |
ディスプレイ
| ディスプレイ | アクティブ | オフ/スリープ | 備考 |
|---|---|---|---|
| 16x2 LCD(バックライトあり) | 80-120mA | 1mA | バックライトが大半を占めます |
| 16x2 LCD(バックライトなし) | 1-2mA | 1mA | |
| SSD1306 OLED 128x64 | 8-20mA | 10µA | 表示内容に依存 |
| SSD1306 OLED 128x32 | 5-15mA | 10µA | |
| ST7735 TFT | 20-40mA | 20mA | バックライトは常時オン |
| ILI9341 TFT | 50-80mA | 50mA | |
| E-Paper 2.9" | 8mA | 0µA | リフレッシュ中のみ |
| tags. Must include tags. Fidelity exact structure. RX/Idle header perhaps translate. module names unchanged. Deep sleep translate? notes prose yes. Values unchanged. "full white" full white. Direct to 5V systems translate. labels. formula code token. Let's craft.### 通信モジュール |
| モジュール | TX ピーク | RX/アイドル | スリープ | 備考 |
|---|---|---|---|---|
| ESP8266 (module) | 170mA | 70mA | 20µA | ディープスリープ |
| NRF24L01 | 11.3mA | 13.5mA | 0.9µA | |
| HC-05 Bluetooth | 40mA | 8mA | 2mA | |
| RFM95 LoRa | 120mA | 10mA | 0.2µA | |
| SIM800L GSM | 2A ピーク | 15mA | 1mA | 大容量コンデンサーが必要です! |
アクチュエーター
| コンポーネント | 電流 | 備考 |
|---|---|---|
| LED(一般的なもの) | 10-20mA | 抵抗を介して接続 |
| RGB LED(各色) | 20mA | チャンネルあたり |
| WS2812B NeoPixel | 最大60mA | 白色全点灯 |
| SG90 サーボ(アイドル時) | 10mA | 負荷なし |
| SG90 サーボ(動作時) | 200-500mA | 負荷あり |
| MG996R サーボ | 500-900mA | 負荷あり |
| 小型DCモーター | 100-500mA | 負荷によって異なります |
| 5V リレーモジュール | 70-100mA | コイル通電時 |
| ブザー(パッシブ) | 30mA |
スリープモードの設定
ESP32 ディープスリープのテンプレート
#include <esp_sleep.h>
#define uS_TO_S_FACTOR 1000000ULL
#define TIME_TO_SLEEP 60 // seconds
void setup() {
// Do measurements here
// Configure wake-up source
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
// Enter deep sleep
esp_deep_sleep_start();
}
void loop() {
// Never reached
}
Arduino パワーダウンのテンプレート
#include <avr/sleep.h>
#include <avr/wdt.h>
void enterSleep() {
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_mode(); // Sleep here
sleep_disable();
}
// Wake on watchdog or external interrupt
ISR(WDT_vect) {
// Wake up
}
電力最適化チェックリスト
ハードウェア
- 電源 LED を取り外す(5-10mA 節約)
- バッテリー駆動時は USB-Serial チップを取り外す
- 静止電流の低い LDO(<10µA)を使用する
- 大電流の周辺機器の電源を切り替える MOSFET を追加する
- 未使用ピンにプルダウンを使用する
- 読み取り時以外は ADC を無効にする
ソフトウェア
- 読み取りの合間にスリープモードを使用する
- 可能であればクロック速度を下げる
- データをまとめ、送信頻度を下げる
- 不要なときは WiFi/BLE をオフにする
- ディープスリープ時はブラウンアウト検出器を無効にする
- ポーリングの代わりに割り込みを使用する
設計パターン
電源ゲーティング:
VCC
│
[P-MOSFET] ← GPIO (LOW = ON)
│
[Sensor/Module]
│
GND
デューティサイクルの計算式:
I_average = (I_active × T_active + I_sleep × T_sleep) / T_total
Example: Sensor reads every 5 minutes
- Active: 50mA for 2 seconds
- Sleep: 10µA for 298 seconds
I_avg = (50mA × 2s + 0.01mA × 298s) / 300s
I_avg = (100 + 2.98) / 300
I_avg = 0.34mA
With 2000mAh battery:
Runtime = 2000mAh × 0.8 / 0.34mA = 4706 hours = 196 days
バッテリーの参考情報
一般的なバッテリーの種類
| 種類 | 電圧 | 標準容量 | 備考 |
|---|---|---|---|
| CR2032 | 3V | 220mAh | ごく低電流でのみ使用可能 |
| 2x AA アルカリ | 3V | 2500mAh | 低消費電力用途に適しています |
| 3x AA アルカリ | 4.5V | 2500mAh | 5V システムに直接接続 |
| 4x AA アルカリ | 6V | 2500mAh | LDO で 5V に変換 |
| 18650 Li-ion | 3.7V | 2000-3500mAh | 充電式で、広く使われています |
| LiPo 1S | 3.7V | さまざま | 薄型で軽量 |
| 9V アルカリ | 9V | 500mAh | エネルギー密度が低い |
放電時の電圧
18650/LiPo の放電曲線:
Capacity% Voltage
─────────────────────
100% 4.2V
80% 3.9V
50% 3.7V
20% 3.5V
0% 3.0V (cut-off!)
Never discharge below 3.0V - damages cell!
アルカリ単三電池の放電:
Capacity% Voltage (per cell)
─────────────────────────────
100% 1.5V
50% 1.2V
0% 0.9V
Many devices stop working below 1.1V/cell
クイック計算ツール
Enter your values:
Always-on current: ______ mA
Active current: ______ mA
Active time: ______ seconds
Sleep current: ______ mA
Sleep time: ______ seconds
Battery capacity: ______ mAh
Average current = (Active_mA × Active_s + Sleep_mA × Sleep_s) / Total_s
= (_____ × _____ + _____ × _____) / _____
= _____ mA
Runtime = Capacity × 0.8 / Average_current
= _____ × 0.8 / _____
= _____ hours
= _____ days
共通の出力要件
共通の Arduino スキル契約を使用してください。 前提条件、必要なツールとバージョン、実装手順、証明段階ごとのテスト/証拠、 既知の制限事項、復旧/セキュリティに関する注意事項を明記してください。