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
相关文章推荐
- WiFi-ESP8266入门开发(十一)-使用PWM
- WiFi-ESP8266入门开发(十三)-使用SPI
- WiFi-ESP8266入门开发(八)-开始使用NodeMCU
- WiFi-ESP8266入门开发(十二)-使用GPIO中断
- WiFi-ESP8266入门开发(九)-使用GPIO
- Android开发记录六之WiFi操作的使用方法
- WiFi-ESP8266入门开发(一)-Arduino环境搭建
- WiFi-ESP8266入门开发(五)-HTTP客户端+Yeelink
- WiFi-ESP8266入门开发(三)-网页客户端
- Android开发之--(WIFI,蓝牙,电池,背光,SD卡,摄像头,按键,MIC,重力感应等)功能的简单使用
- 安卓开发使用wifi连接调试
- Android开发之--(WIFI,蓝牙,电池,背光,SD卡,摄像头,按键,MIC,重力感应等)功能的简单使用
- WiFi-ESP8266入门开发(十五)-HTTP客户端
- WiFi-ESP8266入门开发(十六)-HTTP服务器
- WiFi-ESP8266入门开发(六)-路由系统
- Android开发,使用Wifi调试真机
- Openwrt/Wifidog/PythonTool开发工具2(PythonQt的使用)
- 蓝牙、WIFI、无线模块的使用规范及开发指南
- Openwrt/Wifidog/PythonTool开发工具1(PythonQt的安装和使用)
- Android 开发 使用wifi连接adb