| 一. 概述 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扩展板的锂电池电量检测功能整体表现良好,能够满足大多数物联网设备的电池监控需求。硬件设计合理,软件接口简单易用。通过本次测试验证,该方案具有以下优势:
 
 高可靠性: 测试期间无故障发生
 良好的精度: 满足日常应用需求
 低功耗: 适合电池供电设备
 易用性: 接口简单,便于二次开发
 
 
 |