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

esp8266+电压检测模块检测电池电压_第1张图片

请注意

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 

const int adcPin = A0; // ADC引脚

float calculateVoltage(int adcReading) {
  // 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秒
}

esp8266+电压检测模块检测电池电压_第2张图片
如果您有更好的方案,请评论交流。

你可能感兴趣的:(esp8266,电压检测,arduino)