问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ESP32 ADC(模拟输入)功能详解

创作时间:
作者:
@小白创作中心

ESP32 ADC(模拟输入)功能详解

引用
CSDN
1.
https://blog.csdn.net/weixin_51358957/article/details/137603964

ESP32的ADC(模拟输入)功能允许开发者测量0V至3.3V之间的电压,具有12位分辨率。本文将详细介绍ESP32的ADC引脚定义、使用方法以及相关代码示例。

引脚定义

ESP32的模拟输入(ADC)功能的引脚可以测量0V至3.3V之间的不同电压,这些引脚具有12位分辨率,所以可以将测量的电压分配给0到4095之间的值,其中0V对应于0,3.3V对应于4095。

ESP32支持18个不同通道的测量,在ESP-WROOM-32中引出15个,图中用红色方框圈出。需要注意的是采集的ADC是非线性的,无法区分0V和0.1V以及3.2V和3.3V的电压:

使用Wi-Fi时不能使用ADC2引脚,无法从ADC2 GPIO获取值。

代码示例

ESP32读取ADC的函数为:

analogRead(pin);

以下是一个读取电位器值的示例代码:

// 电位器连接 GPIO 34 (ADC1_CH6)
const int potPin = 34;
int potValue = 0;    // 存储电位器读取量

void setup()
{
    Serial.begin(115200);
    delay(1000);
}

void loop()
{
    potValue = analogRead(potPin);    // ADC 读取电位器
    Serial.println(potValue);
    delay(500);
}

ADC引脚其他功能

  • analogReadResolution(resolution):设置analogRead返回值的分辨率,默认12位(范围从0到4096)。参数介于9(0-511)和12(0-4095)之间。
  • analogSetWidth(width):设置analogRead返回值的分辨率,默认12位(范围从0到4096)。参数介于9(0-511)和12(0-4095)之间。
  • analogSetClockDiv(attenuation):设置ADC时钟分频器,默认值1。参数范围:1到255。
  • analogSetAttenuation(attenuation):设置所有ADC通道输入衰减,默认值ADC_11db。参数值:
  • ADC_0db:无衰减。ADC的测量电压约为800mV(1V输入=ADC读数1088)
  • ADC_2_5db:ADC输入电压衰减,将测量范围扩展到约1100mV。(1V输入=ADC读数3722)
  • ADC_6db:ADC输入电压衰减,将测量范围扩展到约1350mV。(1V输入=ADC读数3033)
  • ADC_11db:ADC输入电压衰减,将测量范围扩展到约2600mV。(1V输入=ADC读数1575)
  • analogSetPinAttenuation(pin, attenuation):设置指定引脚输入衰减。默认值ADC_11db。衰减值与上一个函数相同。
  • adcAttachPin(pin):将引脚连接到ADC(同时清除可能打开的任何其他模拟模式),返回TRUE或FALSE结果。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号