您的位置:首页 > Web前端 > Node.js

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

2018-02-03 18:02 471 查看


介绍

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


NodeMCU套件上的ESP8266 ADC引脚



NodeMCU 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的可变电压。如下图所示连接锅。



 


Arduino草图阅读外部电压

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

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

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



 


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串行监视器上的输出



 
在这里,我们发现测得的值与实际值略有偏差。对于外部电压,在开发套件上的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),如下图所示。



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



 

支持文件
源代码
NodeMCU的ADC的Arduino草图 下载
 

  169

附件
ESP8266数据手册Datasheet  下载
 

  185
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ESP8266 NodeMCU