ESP32 ADC测量电压 arduino |
您所在的位置:网站首页 › esp32外接电池 › ESP32 ADC测量电压 arduino |
ADC
ADCESP32的ADC通道衰减倍数代码实现精度问题
ADC
ADC(模拟-数字转换器),首先了解模拟信号和数字信号之间的差异。模拟信号是连续的,可以在其范围内取无限个离散值,例如声音、光线等。 数字信号则是离散的,具有一组有限数量的值,通常用于计算机和电子设备中的信息传输。ADC的作用是将模拟信号转换为数字信号,以便计算机或其他电子设备进行处理和分析。 ADC转换的过程分为两个重要步骤:采样和量化。ADC的输入是模拟信号。当输入的模拟信号被采样时,其值将在设定的时间间隔(采样周期)内以等间隔的方式进行抽样。这样就可以将连续的模拟信号转换为一系列等间隔的采样值。接下来,将每个采样值映射到最接近的离散值(也称为“量化”),并且该离散值将作为ADC的输出。量化可以根据设定的分辨率完成,分辨率表示可以区分的离散值的数量。例如,12位ADC具有2^12(即4096)个可区分的离散值。此外,ADC提供选择衰减器(Attenuator)的功能,该衰减器可以对信号进行放大或消减,以确保输入信号处于ADC可接受的幅度范围内。 ESP32的ADC通道
不同的衰减倍数对应不同的检测电压范围。 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 |