ESP32 ADC教程|如何在ESP32中使用ADC?

在本教程中,我们将了解ESP32中的ADC外围设备。这对数字转换器的模拟或简单的ADC OD ESP32对于测量来自不同传感器(例如LM 35温度传感器),电位仪(用于调节LED的亮度)等的模拟电压非常有用。还有几个示范电路。

ESP32-ADC领导的PWM-Control-image-1

ESP32 ADC外围的简短说明

ESP32 SOC由两个连续的近似寄存器(SAR)类型数字转换器(ADC)组成。ESP32中的两个SAR ADC(即ADC1和ADC2)一起由18个渠道组成。ADC1由8个通道组成,ADC2由10个渠道组成。

ESP32中的ADC具有12位ADC的最大分辨率,是的,ADC的分辨率可配置,可能的值包括9位,10位,11位和12位。通常,如果不更改,则分辨率设置为12位。

因此,默认情况下,ESP32 ADC的输出将为0和4095的值(因为默认分辨率为12位,输出数字值可以具有212= 4096值)。同样,ADC输入电压极限为3.3V,即ESP32 ADC可以测量0V至3.3V范围内的模拟电压。

ESP32的ADC引脚

与某些数字外围设备(PWM,Software SPI和I2C)不同,ADC引脚是固定的,即,您必须使用具有ADC功能的预定义的GPIO引脚,并且不能在软件中配置它。但是,您必须知道一些局限性。

即使ESP32具有18个频道ADC,所有ADC引脚均可用于用户。在8个ADC1频道中,只有6个可用(ACD1_CH0和ACD1_CH3至ACD1_CH7),而ADC1_CH1和ADC1_CH2则不可用(即使在ESP32开发板中也没有暴露PINS)。

来到ADC2,这有些复杂。当您使用ESP32的Wi-Fi时,Wi-Fi驱动程序使用ADC2外围设备。因此,仅当未启动Wi-Fi驱动程序时,您才能使用ADC2。

即使您使用ADC2(假设不使用Wi-Fi),所有引脚也不容易获得,因为与ADC2相关的某些引脚用于其他重要目的(启动绑带)。

下表显示了ADC频道,Arduino样式名称(A0,A1等),GPIO引脚以及任何要记住的重要点。

ADC频道

引脚名称 GPIO PIN

笔记

ACD1_CH0

A0 GPIO 36 免费使用 / Hall Sensor PIN
ACD1_CH1 GPIO 37

无法使用

ACD1_CH2

GPIO 38 无法使用
ACD1_CH3 A3 GPIO 39

免费使用 / Hall Sensor PIN

ACD1_CH4

A4 GPIO 32 免费使用
ACD1_CH5 A5 GPIO 33

免费使用

ACD1_CH6

A6 GPIO 34 免费使用
ACD1_CH7 A7 GPIO 35

免费使用

ACD2_CH0

A10 GPIO 4
ACD2_CH1 A11 GPIO 0

用作引导别针 /不可用

ACD2_CH2

A12 GPIO 2 用作靴子绑带销
ACD2_CH3 A13 GPIO 15

用作靴子绑带销

ACD2_CH4

A14 GPIO 13
ACD2_CH5 A15 GPIO 12

ACD2_CH6

A16 GPIO 14
ACD2_CH7 A17

GPIO 27

ACD2_CH8

A18 GPIO 25
ACD2_CH9 A19 GPIO 26

通过考虑上述所有信息,可以肯定的是,可以在没有任何歧义的情况下使用6个可用的ADC1引脚(ACD1_CH0和ACD1_CH3到ACD1_CH7)。

ADC1_CH0和ADC1_CH3也与霍尔效应传感器相关联。

其他ESP32开发委员会可能有自己的限制。因此,一定要检查数据表和示意图,并检查特定的ADC PIN是否可以免费使用。

ADC功能

ADC驱动程序暴露了九个功能。他们是:

  • Analogread(PIN):获取指定引脚的ADC值。
  • Analogreadresolution(位):设置Analogread输出的分辨率。默认值为12位,但可能的值为9至12。
  • 模拟宽度(位):设置样品位并读取分辨率。默认值为12位,但范围是9到12。
  • AnalogSetClockDiv(ClockDiv):为ADC时钟设置分隔线。
  • 模拟设定攻击(衰减):设置所有渠道的衰减。默认值为11DB,但可能的值为0dB,2_5dB,6DB和11DB。
  • 类似物拟南芥(引脚,衰减):设置特定销钉的衰减。
  • adcattachpin(引脚):将销钉固定在ADC上(在Analogread中自动完成)。
  • AnalogSetVrefpin(PIN):如果尚未校准ESP32,则将引脚设置为用于ADC校准。可能的引脚是25、26或27。
  • Analogreadmillivolts(引脚):获取PIN的毫伏值。

测量模拟电压

通过理论,PIN信息和库功能,我们现在可以开始开发电路以实际使用ESP32的ADC外围。对于第一个项目,让我们看看如何配置ESP32的ADC通道并测量应用于ADC引脚之一的模拟电压。ESP32初学者的项目这是给予的

提供可变模拟电压的最简单方法是借助电位计。将锅的末端连接到ESP32开发板的3.3V和GND,然后将雨刮器连接到任何ADC引脚。为了使事情变得简单,我使用了ADC1_CH0,即GPIO 36(A0)作为ADC PIN。

需要组件

  • ESP32 Devkit开发委员会
  • 10kΩ电位器
  • 面包板
  • 连接电线
  • 5mm LED
  • 220Ω电阻

电路原理图

下图显示了使用ESP32的ADC测量模拟电压的电路图。

ESP32-ADC-MEASE-ANALOG-ANALOG电路

代码

如果您曾经与Arduino或ESP8266的ADC合作,则该代码非常简单。使用“ Analogread”函数读取ADC PIN(A0)的ADC值,使用小计算将数字值转换为电压,并在串行显示器上显示结果。

ESP32-ADC-MEASER-ANALOG-ANALOG-WOLTAGE-IMAGE-1

串行监视器的输出看起来像这样:

ESP32-ADC-MEASE-MEASE-ANALOG-ANALOG-SERIAL

使用ESP32 ADC LED PWM

我在LEDC的工作上撰写了专门的教程ESP32中的PWM。阅读该教程,以深入了解ESP32中的PWM。我们可以使用ADC设置ESP32的PWM输出的占空比。

ADC引脚与早期的A0(ADC1_CH0 - GPIO 36)相同,并且PWM引脚是GPIO16。我使用220Ω电流限制电阻连接了5mm的红色。

电路原理图

下图显示了使用ESP32的ADC手动配置PWM的占空比的电路图,从而调整了LED的亮度。

ESP32-ADC领导的PWM-Control-Circuit

代码

ESP32-ADC领导的PWM-Control-image-2

结论

关于在ESP32中使用ADC模块的完整教程。您了解了ESP32 ADC外围设备,其相关引脚,ADC的安全使用,如何使用ESP32中的ADC测量模拟电压,以及如何在ESP32中使用ADC和PWM手动调整LED的亮度。

一个回应

  1. 非常好的文章,但是对我自己来说,我希望看到更多有关ESP32高速捕获能力的信息。就我而言,我要求CPU捕获4个同时的模拟脉冲,该脉冲的持续时间为10至50毫秒,在4个模拟输入中的每一个中,每毫秒均分辨率为20扫描。我已经在意式意式数据表中看到了笔记,声称模拟输入能够具有非常高的速度(即挖掘控制器的2MSP),但无处可详细解释。

发表评论

您的电子邮件地址不会被公开。

电子豪华粉丝
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu
map