WiFi-ESP8266入门开发(十)-使用ADC

注:对于ESP8266开源技术感兴趣的可以加群,我们一起探索交流学习,群号:579932824。群名:ESP8266开源技术交流群。

介绍

模数转换器(ADC)用于将模拟信号转换为数字形式。ESP8266具有内置的10位ADC,只有一个ADC通道,即只有一个ADC输入引脚可读取来自外部器件的模拟电压。

NodeMCU套件上的ESP8266 ADC

ESP8266上的ADC通道与电池电压复用。因此,我们可以将其设置为测量系统电压或外部电压。读取外部电压时,ADC引脚的输入电压范围为0-1.0V。

固件“esp_init_data_default.bin”(0-127字节)的第107个字节提供ADC模式的设置,即系统电压或外部电压是否正在测量。

esp_init_data_default.bin(0 - 127字节)的第107个字节是“vdd33_const”。它必须设置为0xFF,即255来读取系统电压,即ESP8266的VDD引脚上的电压。

要读取ADC引脚上的外部电压,必须将其设置为ESP8266的VDD引脚上的电源电压。ESP8266的工作电压范围在1.8V至3.6V之间,“vdd33_const”的单位为0.1V,因此“vdd33_const”的取值范围为18〜36。

有关“vdd33_const”的更多信息,请参阅本文末尾的ESP8266数据表的ADC部分。

请注意,下图所示的NodeMCU Dev Kit具有板上寄存器分配网络,从3.3V到ESP8266的ADC引脚提供1.0V的电压。因此,对于NodeMCU以下的开发套件,我们可以使用0-3.3V范围的ADC输入电压。由于ADC具有10位分辨率,因此开发工具包上的ADC输入电压为0-3.3V时,会给出0-1023的值范围。

 

NodeMCU ADC功能

analogRead(A0)

此功能用于读取施加在模块的ADC引脚上的外部电压。

ESP.getVcc()

该功能用于读取NodeMCU模块的VCC电压。ADC引脚必须保持不连接。

请注意,在读取VCC电源电压之前,应更改ADC模式以读取系统电压。

ADC_MODE(mode)在#include行后面改变ADC模式。

模式是ADC_TOUT(对于外部电压),ADC_VCC(对于系统电压)。默认情况下,它读取外部电压。

我们来编写一个Arduino来读取NodeMCU的ADC引脚上的模拟电压。这里我们使用电位器在Dev Kit的ADC引脚上提供0-3.3V的可变电压。如下图所示连接锅。

WiFi-ESP8266入门开发(十)-使用ADC_第1张图片

 

Arduino草图阅读外部电压

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print("ADC Value: ");Serial.println(analogRead(A0));
  delay(300);
}

输出窗口

下图显示了Arduino IDE串行监视器上的输出

WiFi-ESP8266入门开发(十)-使用ADC_第2张图片

 

Arduino读取系统电压

ADC_MODE(ADC_VCC);

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print("System voltage(mV): ");Serial.println(ESP.getVcc());
  delay(300);
}

 

输出窗口

下图显示了Arduino IDE串行监视器上的输出

WiFi-ESP8266入门开发(十)-使用ADC_第3张图片

 

在这里,我们发现测得的值与实际值略有偏差。对于外部电压,在开发套件上的ADC引脚上施加0-3.3V的5-1007 ADC值变化。而对于系统电压(模块上的电压),我们可以达到2790mV,即大约2.8V。这显示了大约0.5V的差异比实际,即3.3V。

关于外部电压测量的问题在ESP8266 github页面的#2672和#3168处给出。关于系统电压读数的问题在ESP8266 github页面#721给出。

根据ESP8266的数据表,TOUT(ESP8266的ADC引脚)引脚在通过ADC测量电源电压时必须悬空(浮动)。但在NodeMCU开发套件/模块上,为了支持外部电压范围(0-3.3V),连接到电阻分压器网络(100Kohm和220Kohm),如下图所示。

WiFi-ESP8266入门开发(十)-使用ADC_第4张图片

 

现在,如果我们移除电阻分压器n / w,并且将ADC引脚(TOUT)悬空,那么我们可以得到更好的结果精度,如下图所示的系统电压读数接近3.3V的输出窗口图像。

WiFi-ESP8266入门开发(十)-使用ADC_第5张图片

 


 

你可能感兴趣的:(Arduino,ESP8266,ESP8266入门到实战开发)