mcpField
P
power-budget-calculator

power-budget-calculator

github.com/wedsamuel1230その他28150 回インストール2 週間前に更新
リポジトリ

power-budget-calculator について

Power Budget Calculator は、組み込みプロジェクトの電流消費と電池寿命を見積もる Python ツールと資料です。部品データ、動作モード、デューティ比、プロジェクト設定に対応します。

主な機能

  1. 01対話式の電力計算
  2. 02部品ごとの電流データベース
  3. 03デューティ比を考慮した平均電流計算
  4. 04電池駆動時間の見積もり
  5. 05JSON 設定入力と Markdown レポート出力

活用シーン

  1. 01電池駆動デバイスの稼働時間の見積もり
  2. 02組み込みプロジェクトの電池容量の選定
  3. 03部品やスリープモードの電流消費の比較
  4. 04プロジェクト設定に基づく電力使用量の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wedsamuel1230/arduino-skills --skill power-budget-calculator

インストール後、Claude Code で/power-budget-calculatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
example-project.json
references/
component-database.md
scripts/
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:コンポーネント一覧を確認する

ユーザーに次の情報を尋ねます:

  1. マイクロコントローラー(モデルと動作モード)
  2. すべてのセンサーとモジュール
  3. ディスプレイ
  4. アクチュエーター(モーター、LED、リレー)
  5. 通信方式(WiFi、Bluetooth、LoRa)
  6. 動作プロファイル(常時オンか、デューティサイクルか)
ステップ 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周辺機器なし
アイドル6mACPU 停止、周辺機器はオン
パワーダウン0.1µAWDT/外部割り込みのみ
USB-シリアル使用時+50mACH340/FTDI チップは常時オン
ESP32(WROOM-32)
モード電流備考
アクティブ(WiFi TX)160-260mA送信中のピーク
アクティブ(WiFi RX)95-100mA受信待機中
アクティブ(WiFi なし)20-68mACPU のみ
モデムスリープ20mAWiFi オフ、CPU はオン
ライトスリープ0.8mACPU 一時停止
ディープスリープ10µARTC のみ
ハイバネーション5µARTC オフ
ESP32-C3
モード電流備考
アクティブ(WiFi TX)320mA ピーク短時間のスパイク
アクティブ(BLE)50-100mAアドバタイズ中
アクティブ(無線なし)25-35mACPU 160MHz 動作時
ライトスリープ130µA自動ウェイクアップ
ディープスリープ5µARTC オン
RP2040(Pico)
モード電流備考
アクティブ(両コア)25-50mAクロックに依存
シングルコア15-25mA片方のコアは休止
ドーマント0.18mAGPIO/RTC でウェイクアップ
スリープ1.3mA
RP2040(Pico W)
モード電流備考
WiFi アクティブ50-150mA送信中
WiFi アイドル30-40mA接続中、受信待機
WiFi オフ25-50mA無線無効
センサー
センサーアクティブスリープ備考
DHT221.5mA50µA読み取り中
BME2800.35mA0.1µA強制モード
BMP2800.27mA0.1µA
MPU60503.8mA5µA全軸
DS18B201.5mA1µA変換中
HC-SR0415mA2mA真のスリープ機能なし
VL53L0X19mA5µA測距中
MAX30102600µA0.7µA低消費電力モード
BH1750120µA1µAパワーダウンモード
GPS(NEO-6M)45mA11mAバックアップモード
ディスプレイ
ディスプレイアクティブオフ/スリープ備考
16x2 LCD(バックライトあり)80-120mA1mAバックライトが大半を占めます
16x2 LCD(バックライトなし)1-2mA1mA
SSD1306 OLED 128x648-20mA10µA表示内容に依存
SSD1306 OLED 128x325-15mA10µA
ST7735 TFT20-40mA20mAバックライトは常時オン
ILI9341 TFT50-80mA50mA
E-Paper 2.9"8mA0µ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)170mA70mA20µAディープスリープ
NRF24L0111.3mA13.5mA0.9µA
HC-05 Bluetooth40mA8mA2mA
RFM95 LoRa120mA10mA0.2µA
SIM800L GSM2A ピーク15mA1mA大容量コンデンサーが必要です!
アクチュエーター
コンポーネント電流備考
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

バッテリーの参考情報

一般的なバッテリーの種類
種類電圧標準容量備考
CR20323V220mAhごく低電流でのみ使用可能
2x AA アルカリ3V2500mAh低消費電力用途に適しています
3x AA アルカリ4.5V2500mAh5V システムに直接接続
4x AA アルカリ6V2500mAhLDO で 5V に変換
18650 Li-ion3.7V2000-3500mAh充電式で、広く使われています
LiPo 1S3.7Vさまざま薄型で軽量
9V アルカリ9V500mAhエネルギー密度が低い
放電時の電圧

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 スキル契約を使用してください。 前提条件、必要なツールとバージョン、実装手順、証明段階ごとのテスト/証拠、 既知の制限事項、復旧/セキュリティに関する注意事項を明記してください。

コメント