一. 概述
1.1 测试目的
本报告旨在评估ESP32-C5开发板电量检测功能,此次新出的扩展板自带锂电池接口,验证其在实际应用中的性能和可靠性。(由于本人没有适配扩展板接口的锂电池,只能适用锂电池加上充放电模块测试)
二.测试环境
主控板: ESP32-C5开发板
电池: 3.7V 300mA锂电池
开发环境: Arduino IDE 2.0
三. 硬件配置分析
扩展板锂电池接口特性
根据扩展板设计文档,锂电池接口具备以下特性:
支持3.7V锂电池直接接入
集成充放电保护电路
电压检测分压比:2:1(实测确认)
检测引脚:GPIO33(ADC1_CH9)
硬件连接图:
四.代码编写
- #include <Wire.h> // 包含Wire库用于I2C通信
-
- // 配置参数
- const int BATTERY_PIN = 33; // 检测引脚
- const float MAX_VOLTAGE = 4.2; // 锂电池满电电压
- const float MIN_VOLTAGE = 3.0; // 锂电池最低电压
- const float VOLTAGE_DIVIDER_RATIO = 2.0; // 分压电阻比例 (R1+R2)/R2
- const int ADC_SAMPLES = 16; // ADC采样次数
-
- void setup() {
- Serial.begin(115200);
- Wire.begin(); // 初始化I2C总线
-
- // 配置ADC
- analogReadResolution(12); // 设置12位ADC分辨率
- analogSetAttenuation(ADC_11db); // 设置11dB衰减 (0-3.9V范围)
- }
-
- float read_battery_voltage() {
- int raw = 0;
- for (int i = 0; i < ADC_SAMPLES; i++) {
- raw += analogRead(BATTERY_PIN);
- delay(1);
- }
- raw /= ADC_SAMPLES; // 计算平均值
-
- // 将ADC值转换为电压 (12位ADC,参考电压3.3V)
- float voltage = (raw * 3.3) / 4095.0; // 单位V
- return voltage * VOLTAGE_DIVIDER_RATIO; // 计算实际电池电压
- }
-
- int calculate_percentage(float voltage) {
- // 电压超出范围处理
- if (voltage >= MAX_VOLTAGE) return 100;
- if (voltage <= MIN_VOLTAGE) return 0;
-
- // 使用非线性曲线计算电量百分比(更准确)
- // 锂电池放电曲线不是线性的
- float percentage = 0;
- if (voltage > 3.9) {
- percentage = 100 - (4.2 - voltage) * 60;
- } else if (voltage > 3.7) {
- percentage = 60 - (3.9 - voltage) * 100;
- } else if (voltage > 3.5) {
- percentage = 40 - (3.7 - voltage) * 100;
- } else {
- percentage = 10 - (3.5 - voltage) * 20;
- }
-
- // 确保百分比在0-100范围内
- return constrain(percentage, 0, 100);
- }
-
- void loop() {
- float voltage = read_battery_voltage();
- int percentage = calculate_percentage(voltage);
-
- // 使用Wire库发送数据(可选)
- Wire.beginTransmission(0x08); // 假设I2C地址为0x08
- Wire.write((byte*)&percentage, sizeof(percentage));
- Wire.endTransmission();
-
- // 串口输出
- Serial.print("电池电压: ");
- Serial.print(voltage, 2);
- Serial.print("V, 电量: ");
- Serial.print(percentage);
- Serial.println("%");
-
- delay(2000); // 每2秒检测一次
- }
复制代码
串口数据输出:
五. 问题与改进建议
发现的问题:
扩展板分压电阻精度为5%,影响检测精度
ADC参考电压随温度有轻微漂移
电量估算算法在3.7V平台区不够精确
改进建议:
使用1%精度的分压电阻
增加温度补偿算法
实现基于库仑计法的精确电量计算
添加电池老化补偿
六. 结论
ESP32-C5扩展板的锂电池电量检测功能整体表现良好,能够满足大多数物联网设备的电池监控需求。硬件设计合理,软件接口简单易用。通过本次测试验证,该方案具有以下优势:
高可靠性: 测试期间无故障发生
良好的精度: 满足日常应用需求
低功耗: 适合电池供电设备
易用性: 接口简单,便于二次开发
|