在本教程中,我们将学习如何使用ESP8266 SoC的ADC外设并读取一些模拟值。为了演示本ESP8266 ADC教程,我将使用ESP8266 NodeMCU板,它是基于ESP-12E模块。ESP-01没有ADC引脚。
介绍
模拟数字转换器或者简单地说ADC是大多数现代微控制器和soc的一个令人惊叹的特性。模拟到数字转换器,顾名思义,将连续的模拟信号转换成离散的数字值。
这真的很重要,因为所有微控制器都是数字设备,并且仅在逻辑低和逻辑高值上工作。ADC允许微控制器和SOC与模拟设备(如传感器)接口,并在它们周围构建系统。
大多数现代微控制器已经拥有一个内置硅的ADC块,因此您不需要使用外部(和专用)ADC IC。
ADC在ESP8266 SOC中
ESP8266EX SoC是所有ESP8266板的主处理器,具有单通道ADC。ESP8266中的ADC具有10位分辨率,是逐次逼近寄存器(SAR)类型。10位分辨率意味着,输出值将在0到1023的范围内。
如果您指的是ESP8266EX SOC的数据表,则ADC引脚是引脚6,也称为TOUT引脚。ADC可用于基本上两种类型的测量。他们是:
- 测量引脚3和引脚4处的电源电压。
- 测量引脚6即TOUT引脚的输入电压。
这些测量都不能同时实现。对于电源电压测量,必须留下TOT引脚。但是,在测量TOUT引脚处的外部电压时,输入电压范围应在0V和1V之间。
如果从SDK构建固件,请参阅数据表和其他相关文档,因为有关ADC及其配置的更多信息。
ADC在ESP-01中
如果您有VanillaESP8266板I.E.ESP-01,那么您还是运气,因为它没有船上的ADC引脚。如果您绝望,那么您可以使用PIN 6作为ADC引脚,但请记住它只能接受0V至1V范围内的电压。
ADC在ESP8266 Nodemcu
基本上基于ESP-12E Wi-Fi模块的NodeMCU板具有ADC称为A0的PIN。
此外,NodeMCU还考虑了从原始的0V到1V到更方便用户使用的0V到3.3V的输入电压范围限制。
如果您看看Nodemcu的示意图,上述引线图像中的ADC0引脚用作由220kΩ和100kΩ电阻形成的分压器的输入,其输出为ESP8266EX SOC的TOUT引脚输出。
重要的提示:ESP8266 SoC中ADC的电压范围为0V ~ 1V。如果你想使用0V到3.3V的ADC,那么你必须使用上面所示的分压器电路。ESP8266EX SoC的引脚6可以焊丝到ESP8266EX SoC的引脚6上,与分压器一起使用。
警告:不要直接向ESP8266EX SoC的ADC引脚(TOUT - pin6)提供超过1V的电压。
使用Nodemcu的ESP8266 ADC演示
如果您有一个ESP8266 Nodemcu板,那么您可以直接使用ADC引脚(A0)进行读取模拟电压,范围为0V至3.3V。让我们现在构建一个小电路来演示ESP8266的ADC功能。
选择10kΩ电位器作为模拟输入装置,其端部端子连接到3.3V和GND,刮水器端子连接到Nodemcu的A0引脚。模拟电压转换为数字值并显示在串行监视器上。
所需的组件
- ESP8266 Nodemcu Board.
- 10kΩ电位器
- 面包板
- 连接电线
电路图
以下图像显示了ESP8266 Nodemcu ADC演示的电路图。
代码
在继续编写代码之前,我强烈建议您仔细阅读开始使用NodeMCU教程,因为它具有设置与Nodemcu板一起使用的Arduino IDE的所有必要信息。
输出
以下图像显示串行监视器上显示的ADC值。
ESP8266 PWM与ADC
作为ESP8266 ADC教程和ESP8266 PWM教程的扩展,我们现在将使用ESP8266EX SOC的ADC和PWM功能组合,并使用电位器控制LED的亮度。
LED连接NodeMCU的GPIO4 (D2)引脚,10KΩ电位器连接NodeMCU的ADC0引脚。当我转动10KΩ POT的旋钮时,LED的亮度从最大(满强度)到最小(LED关闭)不等。
我使用ESP-01模块对ESP8266 PWM进行了专用教程。查看更多信息。
重要的提示:ESP8266的ADC分辨率为10位。这意味着ADC的输出将在0到1023的范围内。现在,ESP8266的PWM分辨率也是10位的,即可以接受0(0%占空比)到1023(100%占空比)之间的占空比值。
所需的组件
- ESP8266 Nodemcu.
- 5mm LED
- 330Ω电阻
- 10kΩ电位器
- 面包板
- 连接电线
电路图
下图显示了使用POT模拟输入和ESP8266 NodeMCU的ADC进行PWM LED亮度控制的电路图和所有必要的连接。
代码
如果略微修改上一个ADC演示代码,则可以基于ADC的输入生成PWM信号。ADC的输出被馈送为使用AmplwWrite()函数的PWM信号生成的占空比输入。
结论
ESP8266 ADC功能的简单教程使用Nodemcu板。您了解了ADC中ADC中的一些重要规格,ADC的输入电压范围,如何使用分压器扩展输入电压范围,演示ESP8266 ADC,在串行监视器上印有输出值,并控制亮度使用PWM LED。