当前位置: 首页 > news >正文

ESP32 NTC热敏电阻测温全攻略:从ADC采样到线性插值算法详解

一、NTC介绍

NTC 是Negative Temperature Coefficient 的缩写,一般指负温度系数半导体器件,而在我们物联网实验中,称为NTC热敏电阻。NTC热敏电阻阻值计算公式如下:

image.png

式中RT、RT0分别为温度T、T0时的电阻值,Bn为材料常数。

对于T0=25℃,R0=10KΩ,Bn=3950的电阻-温度曲线如下所示

image.png

由此可见,温度越高,阻值越小。对于NTC的电路相对简单,如下图

image.png

当NTC阻值发生变化时,Vout也随之发生变化,通过采样Vout电压,然后根据欧姆定律计算出电阻值,再由电阻值可算出对应的温度值。

二、NTC例程

由上节可知,我们需要采样Vout的值,需要用到ESP32的ADC功能,esp-idf库对ADC的操作已经封装的相当好,直接引出API给我们使用,虽然如此,但依然有一些东西我们要注意,开发板中的Vout接到了GPIO36上,关于ESP32的ADC,ESP32上具有两个ADC转化模块,分别是ADC1和ADC2,每个ADC模块均具有8路,由于在启用ADC2时,无法使用WIFI功能,因此本例程不介绍ADC2,也不推荐大家使用ADC2。然后并不是所有的GPIO口都具有ADC功能,只有如下GPIO口具有ADC功能

  1. GPIO32 ADC1_CH4
  2. GPIO33 ADC1_CH5
  3. GPIO34 ADC1_CH6
  4. GPIO35 ADC1_CH7
  5. GPIO36 ADC1_CH0
  6. GPIO37 ADC1_CH1
  7. GPIO38 ADC1_CH2
  8. GPIO39 ADC1_CH3

以下是部分初始化代码

这里先说下adc_oneshot_new_unit 这个函数,这个函数是启用单次转换,ESP32中有两种转化模式,分别是单次转换和连续转换,单次转换的意思是,我启动ADC转换,ADC模块就只转换一次值然后停止,连续转换是启动ADC转换后,ADC模块会不断地执行ADC转换,除非我们手动调用停止。经过我本人亲自的试验,连续转换的精度非常差,而且还受其他通道影响,可能之后乐鑫官方后续推出的系列芯片会修复这些问题,因此本教程只用单次转换。然后需要填充adc_oneshot_chan_cfg_t 结构体,这个结构体只有两项,分辨率和衰减系数,分辨率的意思是,采样回来的最大值,比如说我们满量程是2450mV,分辨率设置成12位,如果外部输入的电压是2450mV则,我们通过adc_oneshot_read读取到的值是2^12-1=4095。本例程中ADC_BITWIDTH_12 配置成12位分辨率。.atten=ADC_ATTEN_DB_12 这个特性可以说是ESP32较特殊的特性,ESP32内部的ADC参考电压只有1100mV,理论上最大只能采样1100mV,如果我们要采样大于这个值,我们就必须设置衰减,让外部电压到了ESP32内部后进行衰减,然后整体来看,我们就可以采用大于1100mV电压。以下是衰减对应的测量范围

  1. ADC_ATTEN_DB_0100 mV~950mV
  2. ADC_ATTEN_DB_2_5 100mV~1250mV
  3. ADC_ATTEN_DB_6150 mV~1750mV
  4. ADC_ATTEN_DB_12150 mV~2450mV

由此可见,最大的衰减倍数,最高能测量的电压是2450mV,当输入大于这个值(注意,不能超过3300mV,否则会损坏芯片),程序中读取到的值都是4095。example_adc_calibration_init 函数里面用 ESP32 芯片内部预烧录的参数值对电压采样结果进行校准。

最后新建一个temp_adc_task函数不断读取ADC值

我们接下来看一下temp_adc_task这个函数

点击链接ESP32 NTC热敏电阻测温全攻略:从ADC采样到线性插值算法详解阅读原文

http://www.dtcms.com/a/406030.html

相关文章:

  • 介绍 τ-bench:一个评估语言智能体在真实场景中与人、工具、规则交互能力的新基准
  • 网站模版建设教程效果好网站建设哪家好
  • 20-for循环案例练习
  • 华策影视 AIGC 实战:剧本分镜 1 小时生成,影视创作告别熬夜改稿时代
  • 移动固态硬盘无法被电脑识别怎么办?
  • 突破地域限制:WaveTerminal与cpolar的远程开发协作方案
  • vue2和vue3的watch用法
  • 【Python】文件处理(二)
  • 幸运飞艇网站建设设计网站流程
  • 基于vue的考研信息系统6kv17(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
  • 针对单元测试、集成测试、系统测试和验收测试(用户测试)各自的目标和测试内容不同,设计对应的各类测试用例
  • (JDK,Eclipse,Tomcat版本)Java的web配置Part1 (#by 拌面
  • 中企动力算大厂吗周口网站关键词优化
  • 用 Flink DataStream API 搭建流式 ETL从无状态到有状态、从单流到连接流
  • 上海保洁服务网站建设小网站如何做密码找回
  • FreeRTOS内存管理
  • 基于 STM32 的智能洗衣机控制系统设计与实现
  • 【开题答辩全过程】以 IT项目需求发布与管理平台为例,包含答辩的问题和答案
  • 省级旅投集团数据中台架构实战:多租户隔离与主题域建模实践
  • 分布式阳台光伏系统组成及防逆流电表功能详解
  • PostgreSQL 和 MySQL两个数据库的索引的区别
  • 论文流程1
  • 苏州正规制作网站公司去了外包简历就毁了吗
  • 上海网站建设公司哪家好?大淘客怎么自己做网站
  • 解决Markdown笔记图片失效问题:Gitee+PicGo图床搭建全攻略
  • AWS中国云中的ETL之从aurora搬数据到s3(Glue版)
  • 忘记云服务器密码怎么办?阿里云/腾讯云/AWS密码重置官方指南
  • DevOps实战(9) - 使用Arbess+GitPuk+sourcefare+PostIn搭建Java自动化部署
  • 嘉兴优化网站价格怎么做网站xml地图
  • C语言指针深度解析:从硬件架构到现代安全编程