esp8266+电压检测模块检测电池电压

电压检测模块

请注意

esp8266的ADC引脚受wifi模块影响,会导致不准确,具体请查看这里:https://github.com/esp8266/Arduino/issues/2070
简单说一下解决方案:
①如果不是频繁的读取数据,可以在wifi连接前读取数据然后存储到缓存;
②或者在读取数据前将wifi关闭,然后再打开wifi;
③如果有足够的引脚,可以使用外部ADC


正文开始

该模块5v时输出1v,因esp8266 ADC引脚(A0)支持电压范围是0v-1v,所以该方案仅支持0-5v电压检测

接线:
- 接 esp8266GND
+ 可不接
S 接 ADC esp8266 为 A0
VCC 被检测直流电+
GND 被检测直流电-

#include <Wire.h>

const int adcPin = A0; // ADC引脚

float calculateVoltage(int adcReading) {
  // ADC最小读数,空载ADC引脚时读数
  int minADC = 12;
  // ADC最大读数,被检测电池充满电时的读数
  int maxADC = 338;
  // 338 = 5.045v最大值,被检测电池充满电时的电压(万用表测)
  float maxADCVlotage = 5.045;

  float normalizedReading = static_cast<float>(adcReading - minADC) / (maxADC - minADC);

  float voltage = normalizedReading * maxADCVlotage;

  return voltage;
}

void setup() {
  Serial.begin(115200); // 初始化串口通信
}

void loop() {
  // 读取ADC值
  int adcReading = analogRead(adcPin);

  // 计算电压
  float voltage = calculateVoltage(adcReading);

  // 输出结果
  Serial.print("ADC读数: ");
  Serial.print(adcReading);
  Serial.print("\t电压: ");
  Serial.print(voltage);
  Serial.println("V");

  delay(1000); // 延时1秒
}

在这里插入图片描述
如果您有更好的方案,欢迎评论交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值