Arduino ESP32C3 ADC校准读取

编程入门 行业动态 更新时间:2024-10-26 11:13:11

<a href=https://www.elefans.com/category/jswz/34/1771382.html style=Arduino ESP32C3 ADC校准读取"/>

Arduino ESP32C3 ADC校准读取

在使用 Arduino 对 ESP32C3 ADC引脚读取电压数值时发现与实际电压有较大误差,查询手册,按照说明ADC1是带有出厂校准的,经过一番搜索后在这里发现了在 Arduino 环境下的解决方法:

Arduino ESP32C3 6 Channel ADC With Calibration – Seenov®/

按照官方说明,对于带有eFuse ADC校准位的板子,可以使用esp_adc_cal_raw_to_voltage()来获得校准的转换结果。这些结果代表了实际电压(单位:mV)。不需要通过公式来转换这些数据。如果在没有eFuse ADC校准位的板上使用ADC校准API,将产生警告。

#include <Arduino.h>
#include "esp_adc_cal.h"int BAT_PIN = 3;    // select the input pin for the ADC#define ADC_EXAMPLE_CALI_SCHEME     ESP_ADC_CAL_VAL_EFUSE_TP
#define ADC_EXAMPLE_ATTEN           ADC_ATTEN_DB_2_5static esp_adc_cal_characteristics_t adc1_chars;
bool cali_enable;static bool adc_calibration_init(void)
{esp_err_t ret;bool cali_enable = false;ret = esp_adc_cal_check_efuse(ADC_EXAMPLE_CALI_SCHEME);if (ret == ESP_ERR_NOT_SUPPORTED) {Serial.println( "Calibration scheme not supported, skip software calibration");} else if (ret == ESP_ERR_INVALID_VERSION) {Serial.println("eFuse not burnt, skip software calibration");} else if (ret == ESP_OK) {cali_enable = true;esp_adc_cal_characterize(ADC_UNIT_1, ADC_EXAMPLE_ATTEN, ADC_WIDTH_BIT_12, 0, &adc1_chars);} else {Serial.println("Invalid arg");}return cali_enable;
}void setup() {Serial.begin(115200);Serial.println("start");cali_enable = adc_calibration_init();
}void loop() {// read the value from the sensor:uint32_t sum = 0;analogSetAttenuation(ADC_2_5db);for (size_t i = 0; i < 50; i++){sum += analogRead(BAT_PIN);delay(1);}sum /= 50;Serial.print("Channel Raw Data=  ");Serial.println(sum/50);if (cali_enable){uint32_t voltage = esp_adc_cal_raw_to_voltage(sum, &adc1_chars);Serial.print("Channel Votage=  ");Serial.println(voltage);}delay(2000);
}

代码给出了ADC的校准参数读取以及使用方法,经过校准后,多次测试,发现误差基本在10mV以内。

注意代码中使用了2.5dB的衰减,使得最大读取值为1050mV。

 

更多推荐

Arduino ESP32C3 ADC校准读取

本文发布于:2024-02-07 04:16:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1752857.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Arduino   ADC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!