ESP32 ADC测量电压 arduino

您所在的位置:网站首页 esp32外接电池 ESP32 ADC测量电压 arduino

ESP32 ADC测量电压 arduino

2023-12-31 06:11| 来源: 网络整理| 查看: 265

ADC ADCESP32的ADC通道衰减倍数代码实现精度问题

ADC

ADC(模拟-数字转换器),首先了解模拟信号和数字信号之间的差异。模拟信号是连续的,可以在其范围内取无限个离散值,例如声音、光线等。 数字信号则是离散的,具有一组有限数量的值,通常用于计算机和电子设备中的信息传输。ADC的作用是将模拟信号转换为数字信号,以便计算机或其他电子设备进行处理和分析。 在这里插入图片描述

ADC转换的过程分为两个重要步骤:采样和量化。ADC的输入是模拟信号。当输入的模拟信号被采样时,其值将在设定的时间间隔(采样周期)内以等间隔的方式进行抽样。这样就可以将连续的模拟信号转换为一系列等间隔的采样值。接下来,将每个采样值映射到最接近的离散值(也称为“量化”),并且该离散值将作为ADC的输出。量化可以根据设定的分辨率完成,分辨率表示可以区分的离散值的数量。例如,12位ADC具有2^12(即4096)个可区分的离散值。此外,ADC提供选择衰减器(Attenuator)的功能,该衰减器可以对信号进行放大或消减,以确保输入信号处于ADC可接受的幅度范围内。

ESP32的ADC通道

在这里插入图片描述ESP32具有两个集成的ADC,分别称为ADC1和ADC2。两个12位的ADC,其中ADC1(8个通道,连接到GPIO 32-39)和ADC2(10个通道,连接到GPIO 0、2、4、12-15和25-27)

衰减倍数

不同的衰减倍数对应不同的检测电压范围。

ADC的默认满量程电压为1.1V。要读取更高的电压(最高为引脚最大电压,通常为3.3V),则需要将该ADC通道的信号衰减设置为> 0dB。

当VDD_A为3.3V时: 0dB衰减(ADC_ATTEN_0db)表示参考电压为1.1V 2.5dB衰减(ADC_ATTEN_2_5db)表示参考电压为1.5V 6dB衰减(ADC_ATTEN_6db)表示参考电压为2.2V 11dB衰减(ADC_ATTEN_11db)表示参考电压为3.9V

代码实现 #include #include #define DEFAULT_VREF 1100 // 默认1.1V的参考电压 #define NO_OF_SAMPLES 64 // ADC采样次数 #define ADC_WIDTH ADC_WIDTH_12Bit // ADC 12位宽度 #define ADC_ATTEN ADC_ATTEN_6db // 6dB衰减器 #define ADC_PIN ADC1_CHANNEL_4 esp_adc_cal_characteristics_t *adc_chars; void setup() { Serial.begin(115200); adc1_config_width(ADC_WIDTH); // 设置ADC为12位宽度 adc1_config_channel_atten(ADC_PIN, ADC_ATTEN); // 配置ADC通道为6dB衰减器 // 使用eFuse校准ADC,并获取校准值 adc_chars = (esp_adc_cal_characteristics_t *) malloc(sizeof(esp_adc_cal_characteristics_t)); esp_adc_cal_value_t val_type = esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN, ADC_WIDTH, DEFAULT_VREF, adc_chars); } void loop() { uint32_t adc_reading = 0; for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3