小白,慢慢接触单片机ADC,先从例程看,不细究原理。
合宙ESP32C3,读取芯片内部温度:
直接上例程:
#include "driver/temp_sensor.h"
void setup()
{
Serial.begin(115200);
temp_sensor_config_t temp_sensor = {
.dac_offset = TSENS_DAC_L2,
.clk_div = 6,
};
temp_sensor_set_config(temp_sensor);
temp_sensor_start();
}
void loop()
{
float tsens_out;
temp_sensor_read_celsius(&tsens_out);
Serial.printf("%f\r\n", tsens_out);
delay(500);
}
【注意】
1、.dac_offset = TSENS_DAC_L2这一行,dac偏置,决定了温度读取范围和误差
TSENS_DAC_L0 | offset = -2, measure range: 50℃ ~ 125℃, error < 3℃. |
TSENS_DAC_L1 | offset = -1, measure range: 20℃ ~ 100℃, error < 2℃. |
TSENS_DAC_L2 | offset = 0, measure range:-10℃ ~ 80℃, error < 1℃. |
TSENS_DAC_L3 | offset = 1, measure range:-30℃ ~ 50℃, error < 2℃. |
TSENS_DAC_L4 | offset = 2, measure range:-40℃ ~ 20℃, error < 3℃. |
TSENS_DAC_MAX | 最大偏置 |
TSENS_DAC_DEFAULT | 默认偏置,即TSENS_DAC_L2 |
2、.clk_div = 6,默认为6
编译下载,运行结果:(把手按在芯片上,温度读数变化)