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、蓝牙、LoRa)
  6. 运行配置(常开还是占空比)
第 2 步:计算功耗预算

运行 scripts/calculate_power.py --interactive 进行引导式计算,或使用此模板:

# 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

Capacity: [X] mAh Efficiency factor: 0.8 (80% usable) Effective capacity: [X × 0.8] mAh

Runtime = Effective capacity / I_avg Runtime = [X] mAh / [Y] mA Runtime = [Z] hours ([days] days)


## Recommendations
- [Power optimization suggestions]
- [Battery type recommendation]
- [Sleep mode configuration]

电流消耗数据库

微控制器
Arduino(ATmega328P @ 5V)
模式电流备注
活动(16MHz)15-20mA无外设
空闲6mACPU 停止,外设开启
掉电0.1µA仅 WDT/外部中断
带 USB-Serial+50mACH340/FTDI 芯片常开
ESP32(WROOM-32)
模式电流备注
活动(WiFi TX)160-260mA传输期间的峰值
活动(WiFi RX)95-100mA监听
活动(无 WiFi)20-68mA仅 CPU
Modem-sleep20mAWiFi 关闭,CPU 开启
Light-sleep0.8mACPU 暂停
Deep-sleep10µA仅 RTC
休眠5µARTC 关闭
ESP32-C3
模式电流备注
活动(WiFi TX)320mA 峰值短暂尖峰
活动(BLE)50-100mA广播期间
活动(无射频)25-35mACPU 以 160MHz 运行
Light-sleep130µA自动唤醒
Deep-sleep5µ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仅在刷新期间
通信模块
模块发送峰值接收/空闲睡眠备注
ESP8266 (模块)170mA70mA20µA深度睡眠
NRF24L0111.3mA13.5mA0.9µA
HC-05 蓝牙40mA8mA2mA
RFM95 LoRa120mA10mA0.2µA
SIM800L GSM2A 峰值15mA1mA需要大电容!
执行器
元件电流备注
LED (典型)10-20mA通过电阻
RGB LED (每种颜色)20mA每通道
WS2812B NeoPixel60mA 最大全白
SG90 舵机 (空闲)10mA无负载
SG90 舵机 (运动)200-500mA带负载
MG996R 舵机500-900mA带负载
小型直流电机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.5V2500mAh直接用于 5V 系统
4x AA 碱性6V2500mAh配合 LDO 降至 5V
18650 锂离子3.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!

碱性 AA 放电:

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 技能契约: 陈述假设、所需工具和版本、实现步骤、 按证明阶段分类的测试/证据、已知限制以及恢复/安全说明。

评论

支持 Markdown