Skip to content

battery_monitor 是一个用于监测电池电量和电压的模块,基于 ESP-IDF 的 ADC(模数转换器)功能。该模块通过测量电池电压,计算出电池的剩余电量百分比,并提供了相应的 API 接口。

License

Notifications You must be signed in to change notification settings

NingZiXi/battery_monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

battery_monitor 电池电量监测模块

概述

battery_monitor 是一个用于监测电池电量和电压的模块,基于 ESP-IDF 的 ADC(模数转换器)功能。该模块通过测量电池电压,计算出电池的剩余电量百分比,并提供了相应的 API 接口。

支持功能:

  • 电压测量: 通过 ADC 测量电池电压。
  • 电量计算: 根据电压值计算电池的剩余电量百分比。
  • 校准功能: 提供校准功能,用于补偿 ADC 和电池电压的测量误差。

硬件要求

  • 电池电压分压电路,将电池电压分压到 ADC 输入引脚。

参考电路如下 alt text

校准

修改battery_monitor.h中的 ADC_OFFSETVOL_OFFSET 参数,以补偿 ADC 和电池电压的测量误差。

具体计算步骤如下:


1. ADC_OFFSET (ADC 偏移电压校正)

ADC_OFFSET 用于补偿 ADC 原始值的偏差。

计算步骤:

  1. 测量实际输入电压: 使用精确的万用表测量分压电路输出到 ADC 输入引脚的实际电压,记为 V_actual

  2. 读取 ADC 输出电压: 运行git_adc_voltage()代码读取 ADC 转换的电压值,记为 V_adc_raw

  3. 计算偏移: [ \text{ADC_OFFSET} = V_{\text{actual}} - V_{\text{adc_raw}} ]

采样多组数据,取平均值,以降低噪声影响。


2. VOL_OFFSET (电池电压校正)

VOL_OFFSET 用于校正计算出的电池电压偏差。

计算步骤:

  1. 测量电池电压: 使用万用表直接测量电池端子的实际电压,记为 ( V_{\text{battery_actual}} )。

  2. 计算推导电压: 使用battery_monitor_get_voltage()测量电池电压,记为 ( V_{\text{battery_calculated}} )。

  3. 计算校正偏移: [ \text{VOL_OFFSET} = V_{\text{battery_actual}} - V_{\text{battery_calculated}} ]

在多个不同电压水平(例如电池电量高、中、低)下测量并校正,以确保偏移在整个范围内有效。

使用方法

#include "battery_monitor.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"

#define TAG "Main"

void app_main()
{
    // 初始化电池监测模块
    battery_monitor_init();

    while (1) {
        float voltage = battery_monitor_get_voltage();
        float percentage = battery_monitor_get_percentage();

        ESP_LOGI(TAG, "Battery Voltage: %.2f V", voltage);
        ESP_LOGI(TAG, "Battery Percentage: %.2f%%", percentage);

        vTaskDelay(pdMS_TO_TICKS(1000)); // 每秒打印一次
    }
}

依赖项

  • ESP-IDF >= 5.3.1

许可证

本项目采用 MIT 许可证。更多信息请参阅 LICENSE 文件。

贡献

欢迎任何形式的贡献,包括但不限于代码改进、文档更新、问题反馈等。请通过 GitHub 提交 Pull Request 或 Issue。

作者

历史版本

  • 1.0.0 初始版本

About

battery_monitor 是一个用于监测电池电量和电压的模块,基于 ESP-IDF 的 ADC(模数转换器)功能。该模块通过测量电池电压,计算出电池的剩余电量百分比,并提供了相应的 API 接口。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published