mcpField
P
power-budget-calculator

power-budget-calculator

github.com/wedsamuel1230其他28156 次安装2 周前更新
代码仓库

关于 power-budget-calculator

面向嵌入式项目的功耗与电池续航估算技能,可按组件、工作模式和占空比计算平均电流与运行时间。附带组件电流数据库、电池参考和低功耗设计建议。

主要功能

  1. 01按组件及工作模式估算电流
  2. 02支持占空比计算
  3. 03估算电池运行时间
  4. 04提供组件电流数据库
  5. 05列出硬件与软件低功耗建议

适用场景

  1. 01估算电池供电设备的续航
  2. 02比较传感器或通信模块的功耗
  3. 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.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