Arduino ESP32 ADC(模拟输入)

学习目标:

  • 掌握Arduino 在ESP32上读取模拟输入(ADC)。

学习内容:

使用ESP32读取模拟值,可以测量0 V至3.3 V之间的电压(实际自己体会...)。

测得的电压转为数字量为0到4095,即2的12次方(模块上的ADC是12位的),其中0 V对应于0,3.3 V对应于4095。

但是,ADC是非线性的。


 读取模拟输入的函数:

analogRead(GPIO);

注意下图中ADC的引脚!

 

  • analogReadResolution(分辨率):设置采样位数和分辨率。它可以是介于9(0–511)和12位(0–4095)之间的值。默认值为12位分辨率。
  • analogSetWidth(宽度):设置采样位数和分辨率。它可以是介于9(0–511)和12位(0–4095)之间的值。默认值为12位分辨率。
  • analogSetCycles(周期):设置每个样本的循环次数。默认值为8。范围:1到255。
  • analogSetSamples(样本):设置范围内的样本数量。默认值为1个样本。它具有增加灵敏度的效果。
  • analogSetClockDiv(衰减):设置ADC时钟的分频器。默认值为1。范围:1到255。
  • 模拟衰减(衰减):设置所有ADC引脚的输入衰减。默认值为ADC_11db。可接受的值:
    • ADC_0db:不设置衰减。ADC最高可测量约800 mV (1V输入= ADC读数为1088)。
    • ADC_2_5db:ADC的输入电压将被衰减,从而将测量范围扩展到大约。1100 mV。(1V输入= ADC读数为3722)。
    • ADC_6db:ADC的输入电压将被衰减,从而将测量范围扩展到大约。1350 mV。(1V输入= ADC读数为3033)。
    • ADC_11db:ADC的输入电压将被衰减,从而将测量范围扩展到大约。2600 mV。(1V输入= ADC读数为1575)。
  • analogSetPinAttenuation(引脚,衰减):设置指定引脚的输入衰减。默认值为ADC_11db。衰减值与之前的函数相同。
  • adcAttachPin(引脚):将一个引脚连接到ADC(同时清除任何其他可能开启的模拟模式)。返回真或假结果。
  • adcStart(引脚), adcBusy(引脚)和resultadcEnd(引脚):在相连引脚的总线上启动ADC转换。检查引脚ADC总线上的转换当前是否正在运行(返回真或假)。获取转换结果:返回16位整数。


仿真测试:

仿真网址:Wokwi - Online Arduino and ESP32 Simulator

 测试代码:

// Potentiometer is connected to GPIO 34 (Analog ADC1_CH6) 
const int potPin = 34;

// variable for storing the potentiometer value
int potValue = 0;

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

void loop() {
    // Reading potentiometer value
    potValue = analogRead(potPin);
    Serial.println(potValue);
    delay(500);
}

版权声明:本文为h56464646原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。