通过ESP32的ADC引脚检测电池电压(并通过均值滤波与软件校准)

文章介绍了如何使用ESP32的ADC功能来检测电池电压,包括均值滤波、软件校准方法,以及注意事项如ADC2的警告。示例代码适用于ESP32C3和其他兼容型号,但ESP32S2不支持软件校准。为了降低噪声,建议使用旁路电容,并提供了基准电压输出到GPIO的函数以进行手动校准。电压精度可达±0.01V,附有实验图片和相关官方文档链接。
摘要由CSDN通过智能技术生成
最近有个项目需要用到ESP32的ADC做一下电池电量检测,网上关于这方面的资料写得很模糊,于是自己整理了一下。代码注释写的很详细了,基本能解决你搜这个问题所想要解决的问题,以下是代码简介:

[GitHub地址]

通过ESP32的ADC引脚检测电池电压(并通过均值滤波与软件校准)


注意,若要使用ADC2请留意该警告

  • 本示例芯片型号:ESP32C3(兼容ESP32其它型号芯片【ESP32S2不支持软件校准】,但需要根据idf编程指南ADC部分修改衰减值对应的输入电压范围)
  • 可以通过设置电池最大与最小电压(最小电压需要大于保护板断电电压)换算电池电量百分比,还可以通过设置分压电阻阻值等等灵活检测不同电压(不局限于电池)
  • 使用前请adc接地读取偏差值,设置adc_offset。或使用以下函数将ADC1或ADC2的基准电压输出至IO,然后可以手动测量基准电压以进行校准
  esp_err_t adc_vref_to_gpio(adc_unit_t adc_unit, gpio_num_t GPIO)
  • ESP32 ADC 对噪声非常敏感,导致 ADC 读数存在较大差异。根据使用场景,可以将旁路电容(例如100 nF陶瓷电容)连接到正在使用的ADC输入焊盘,以最大限度地降低噪声
  • 有任何不明白的地方可以提issue或对照官方文档进行学习

相关文档资料

实验图片

电压精度能达到±0.01V左右
  • 串口显示

串口

  • 万用表显示

万用表

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值