avatar

松果工作室

欢迎光临

  • 首页
  • freeRTOS
  • ESP
  • 开发手册
  • 快速笔记
  • 个人收藏
  • 工具
Home ESP32(二) ADC
文章

ESP32(二) ADC

Posted 2024-05-25 Updated 2024-05- 25
By YCP
9~11 min read

理论

ESP32c3 的 ADC 分为两个单元, 我们这里使用了单元 1 .
步骤

  1. 设置 ADC 位宽
  2. 设置 ADC 通道衰减
  3. 为使用的 ADC 单元设置 ADC 矫正
  4. 取得 ADC 数值
  5. ADC 转化电压

代码

至于esp_adc_cal_characterize()的 3300 这个数值其实没有任何作用的,因为ADC_ATTEN_DB_12这个变量已经设置了衰减,也就是规定了 ADC 的基准电压 .

#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/adc.h"
#include "esp_adc_cal.h"

static esp_adc_cal_characteristics_t *adc_chars;

void app_main(void){
    adc1_config_width(ADC_WIDTH_BIT_12);
    adc1_config_channel_atten( ADC1_CHANNEL_0,ADC_ATTEN_DB_12);
    adc1_config_channel_atten( ADC1_CHANNEL_1,ADC_ATTEN_DB_12);
    adc1_config_channel_atten( ADC1_CHANNEL_2,ADC_ATTEN_DB_12);
    adc1_config_channel_atten( ADC1_CHANNEL_3,ADC_ATTEN_DB_12);
    adc1_config_channel_atten( ADC1_CHANNEL_4,ADC_ATTEN_DB_12);

    adc_chars = calloc(1, sizeof(esp_adc_cal_characteristics_t));
    esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_12, ADC_WIDTH_BIT_12, 3300, adc_chars);

    while(1){
        vTaskDelay(200 / portTICK_PERIOD_MS);
        int read_raw_1 = adc1_get_raw(ADC1_CHANNEL_0);  //GPIO1
        int read_raw_2 = adc1_get_raw(ADC1_CHANNEL_1);  //gpio2
        int read_raw_3 = adc1_get_raw(ADC1_CHANNEL_2);  //gpio3
        int read_raw_4 = adc1_get_raw(ADC1_CHANNEL_3);  //gpio3
        int read_raw_5 = adc1_get_raw(ADC1_CHANNEL_4);  //gpio3

        float voltage_1 = (float)(esp_adc_cal_raw_to_voltage(read_raw_1, adc_chars))/1000.0f;
        float voltage_2 = (float)(esp_adc_cal_raw_to_voltage(read_raw_2, adc_chars))/1000.0f;
        float voltage_3 = (float)(esp_adc_cal_raw_to_voltage(read_raw_3, adc_chars))/1000.0f;
        float voltage_4 = (float)(esp_adc_cal_raw_to_voltage(read_raw_4, adc_chars))/1000.0f;
        float voltage_5 = (float)(esp_adc_cal_raw_to_voltage(read_raw_5, adc_chars))/500.0f;
        printf("voltage1 = %.2f\t"
               "voltage2 = %.2f\t"
               "voltage3 = %.2f\t"
               "voltage4 = %.2f\t"
               "voltage5 = %.2f\n",voltage_1,voltage_2,voltage_3,voltage_4,voltage_5);
    }
}
ESP
License:  CC BY 4.0
Share

Further Reading

OLDER

ESP32(一) GPIO

NEWER

CH573(一) 基础外设

Recently Updated

  • ESP32(八) 简单的webserver
  • ESP32(七) NVS
  • ESP32(四) STA & AP
  • 多级菜单
  • ESP32(五) ESP32 OTA

Trending Tags

WCH Linux Elec freeRTOS STM ESP Flutter Others SwiftUI

Contents

©2025 松果工作室. Some rights reserved.

Using the Halo theme Chirpy