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

NodeMCU ADC

 

Arduino草图阅读外部电压

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

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

输出窗口

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

Arduino输出窗口

 

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

Arduino输出窗口

 

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

分机。 NodeMCU ESP8266上的分压器网络

 

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

Arduino输出窗口

 


 

  • 18
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Lanson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值