用途
Power Budget Calculator 是一个用于估算嵌入式项目功耗与电池续航的技能,面向 Arduino、ESP32、RP2040 等开发平台。当用户提出“电池能撑多久”“需要多大容量的电池”“项目电流消耗是多少”等问题,或计划电池供电项目、进行低功耗优化时使用。
主要资源
- scripts/calculate_power.py:Python 计算器,包含元件数据库、占空比(duty cycle)支持与电池寿命估算。
- 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
工作流程
第一步:收集元件清单
向用户确认:
- 微控制器(型号与工作模式)
- 所有传感器与模块
- 显示屏
- 执行器(电机、LED、继电器)
- 通信方式(WiFi、蓝牙、LoRa)
- 工作概况(常开还是按占空比运行)
第二步:计算功耗预算
运行 scripts/calculate_power.py --interactive 进行引导式计算,或使用技能内提供的预算模板,模板涵盖工作条件、常开元件电流、仅活动模式元件电流、峰值电流事件、平均电流计算与电池寿命估算等部分。
平均电流公式:
I_avg = (I_active × t_active + I_sleep × t_sleep) / t_total
电池寿命估算:
有效容量 = 标称容量 × 0.8(80% 可用)
Runtime = 有效容量 / I_avg
电流消耗数据库
技能内提供按类别整理的参考数据,包括:
- 微控制器:Arduino(ATmega328P)活动 15–20mA、掉电 0.1µA;ESP32(WROOM-32)活动(WiFi 发送)160–260mA、深度睡眠 10µA;ESP32-C3、RP2040(Pico / Pico W)各模式电流。
- 传感器:DHT22、BME280、BMP280、MPU6050、DS18B20、HC-SR04、VL53L0X、MAX30102、BH1750、GPS(NEO-6M)的活动与睡眠电流。
- 显示屏:16x2 LCD、SSD1306 OLED、ST7735 TFT、ILI9341 TFT、E-Paper 2.9" 的活动与关闭/睡眠电流。
- 通信模块:ESP8266、NRF24L01、HC-05、RFM95 LoRa、SIM800L GSM 的发送峰值、接收/空闲与睡眠电流。
- 执行器:LED、RGB LED、WS2812B、SG90 与 MG996R 舵机、直流电机、5V 继电器、蜂鸣器的电流。
睡眠模式与优化
技能提供 ESP32 深度睡眠(esp_sleep_enable_timer_wakeup + esp_deep_sleep_start)与 Arduino 掉电模式(SLEEP_MODE_PWR_DOWN)的代码模板。
功耗优化清单分为硬件与软件两组:
- 硬件:移除电源 LED、电池供电时移除 USB-Serial 芯片、使用低静态电流 LDO、用 MOSFET 对高电流外设做电源门控、未用引脚加下拉、不读取时关闭 ADC。
- 软件:读取间隔进入睡眠、降低时钟频率、批量数据减少传输频率、不需要时关闭 WiFi/BLE、深度睡眠禁用掉电检测、用中断代替轮询。
设计模式包括电源门控接线示意与占空比公式示例(例如每 5 分钟读取一次传感器,活动 50mA 持续 2 秒、睡眠 10µA 持续 298 秒,平均 0.34mA;配 2000mAh 电池约 4706 小时≈196 天)。
电池参考
列出常见电池类型的电压与典型容量:CR2032、2x/3x/4x AA 碱性、18650 锂离子、LiPo 1S、9V 碱性等;并给出 18650/LiPo 放电曲线(4.2V 到 3.0V 截止,低于 3.0V 会损坏电芯)与碱性 AA 放电曲线(1.5V 到 0.9V,很多设备低于 1.1V/节停止工作)。
适用场景与限制
适用于电池供电项目的续航估算、电池容量选型、电流消耗评估与低功耗优化规划。技能本身只提供计算脚本、参考数据与优化建议,具体数值依赖用户提供或数据库中的元件参数;实际续航会受元件批次、供电电路、温度与负载变化影响,估算结果为参考值。技能要求使用 uv 运行脚本。技能提到遵循共享的 Arduino 技能契约(state assumptions、required tools and versions、implementation steps、tests/evidence by proof stage、known limitations 与 recovery/security notes)。
快速计算器
技能内提供手工计算模板,输入常开电流、活动电流与时间、睡眠电流与时间、电池容量后计算平均电流与运行时长。