前言:之前的文章中也有关于使用I2C器件进行温度的采集的文章

采集温度的方式不止使用传感器,也可以使用NTC温敏电阻进行采集,此方法的外围电路较为简单切成本较低,代码也较为容易实现。

实现原理:先通过差分采样电路进行采集,采集之后可以获取NTC或者定值电阻的电压;已知这些信息可以通过欧姆定律得到当前电路的电流,根据串联电路电流处处相等的特性可再通过欧姆定律获取当前NTC的阻值。(温度越高NTC阻值越小,温度越低NTC阻值越大)

获取到了当前NTC的阻值可以通过查表得到一个粗略的温度,也可以通过公式获得当前的温度较为准确一些。

NTC 热敏电阻温度计算公式:Rt = R*EXP(B(1/T1-1/T2))

其中,T1和T2指的是K度,即开尔文温度。

Rt 是热敏电阻在T1温度下的阻值。

R是热敏电阻在T2常温下的标称阻值。100K的热敏电阻25℃的值为10K(即R=10K)。T2=(273.15+25)

EXP是e的n次方

通过此公式可以得到温度转换的公式:T1 =1/(ln(Rt/R)/B+1/T2)-273.15+0.5;

这里+0.5的误差矫正。

1、NTC电阻的选型:

NTC实际的选型B值是一个很关键的参数,同时也要考虑自己的实际应用去选择合适阻值的电阻;笔者这里为了简便计算选择了10k的定值电阻与B值为3950的10k的NTC;

硬件设计:

2、代码实现:

#include "CH59x_common.h"
#include "math.h"
uint16_t adcBuff[40];
float sum=0;//多次采样和
float averagevalue =0;//平均值
volatile uint8_t adclen;
volatile uint8_t DMA_end = 0;
float basicvalue = 3.3;//输入电压
float Difference=0;//压差
float currentvalue=0;//电流
float NTC=0;//NTC阻值
float temp=0;//温度
int main()
{ uint8_t i;
SetSysClock(CLK_SOURCE_PLL_60MHz); /* 配置串口调试 */
DebugInit();
PRINT("Start @ChipID=%02X\n", R8_CHIP_ID);
PRINT("\n4.Diff channel sampling...\n");
GPIOA_ModeCfg(GPIO_Pin_4 | GPIO_Pin_12, GPIO_ModeIN_Floating);
ADC_ExtDiffChSampInit(SampleFreq_3_2, ADC_PGA_1_4);
ADC_ChannelCfg(0);
R8_ADC_CFG|= RB_ADC_BUF_EN; while(1)
{
for(i = 0; i < 10; i++)
{
adcBuff[i] = ADC_ExcutSingleConver(); // 连续采样20次
}
for(i = 0; i < 10; i++)
{
PRINT("%d \n", adcBuff[i]);
sum+= adcBuff[i]; }
PRINT("sum %f\n",sum);
averagevalue = (((sum/10)/512)-4)*1.05; PRINT("average:%f V\n", averagevalue); Difference = basicvalue-averagevalue;
PRINT("Difference:%f V\n", Difference);
currentvalue = Difference/10000;
NTC=averagevalue/currentvalue;
PRINT("NTC:%f Ω\n",NTC);
// T1 =1/(ln(Rt/R)/B+1/T2)-273.15
temp=1/((log(NTC/10000)/3950)+(1/(273.15+25)))-273.15+0.5;
PRINT("temp:%f ℃\n",temp);
sum = 0;
DelayMs(1000);
}
}

3、验证现象:

代码打印温度:

实际温度:

4:注意事项:

再使用的时候需要使用精度较高的定制电阻,MCU的供电电压与参考电压稳定,同时NTC的供电要稳定。

常用温度阻值对照表:

仅用于个人学习分享;

如有错漏请指正。

ch58x/ch59xADC差分采样NTC电阻获取当前温度的更多相关文章

  1. NTC电阻Rt与温度T关系

    NTC电阻Rt与温度T公式如下: Rt=10000*exp(3950*(1/(273.15+T)-1/(273.15+25))). 例:0摄氏度时,电阻为33620.6037214357 欧姆 Rt= ...

  2. 调试备忘录-NTC电阻的使用(教程 + 代码)

    软件环境:CodeWarrior 11.1 硬件环境:NXP S9KEAZ64A 传感器参数:NTC热敏电阻(R25 = 50k,B25-50 3950) 写在前面 最近做小项目需要用到NTC电阻,因 ...

  3. Linux系统获取CPU温度

    Linux系统获取CPU温度 摘自:https://jingyan.baidu.com/article/cbf0e500407d072eab289343.html 各位好,本篇将简单介绍如何在不同系列 ...

  4. 转载:c# 获取CPU温度(非WMI,直接读取硬件)

    c#获取cpu温度 很早一个项目做远控,所以需要用到获取cpu温度,但是就是不知从何下手,无意中发现了Open Hardware Monitor,令我的项目成功完成 亲测20台清装xp sp2的机器, ...

  5. Beaglebone Black–I2C 接 BMP280 获取当前温度

    我有两个含温度传感的模块,一个是AOSONG 奥松电子的 AM2320 温度湿度,另一个是九轴里面的 Bosch BMP280.由于 AM2320 用 I2C MODBUS,直接用 I2C Tools ...

  6. 2022年写的香橙派 OrangePi Zero 用python获取dht11温度和湿度

    感谢网上资料和个人的不放弃,终于方便的解决了香橙派 OrangePi Zero用python获取dht11温湿度的问题. 网上关于香橙派的资料比起树莓派真是少之又少,现在香橙派zero能干的活暂时也只 ...

  7. linux获取CPU温度

    Centos系列 1 yum install lm_sensors 2 sensors-detect 3 sensors Ubuntu系列(多了service module-init-tools st ...

  8. 使用树莓派3获取CPU温度

    一.命令: cat /sys/class/thermal/thermal_zone0/temp 二.上图:

  9. orangepi获取cpu温度

    cat /sys/devices/virtual/hwmon/hwmon1/temp1_input

  10. FOC 电流采样方案对比(单电阻/双电阻/三电阻)

    如果本文帮到了你,帮忙点个赞: 如果本文帮到了你,帮忙点个赞: 如果本文帮到了你,帮忙点个赞: 创作不易 谢谢支持 文章目录 1 电流采样的作用 2 硬件架构 3 采样关键 4 采样方案 5 三电阻采 ...

随机推荐

  1. Web前端 -- ES6

    ES标准中不包含 DOM 和 BOM的定义,只涵盖基本数据类型.关键字.语句.运算符.内建对象.内建函数等通用语法. 本部分只学习前端开发中ES6的最少必要知识,方便后面项目开发中对代码的理解. 1. ...

  2. CSS之定位Position

    前言 之前在<CSS之浮动>中,我当时是想一起说说定位的,因为我在很多地方看到有把float和position放在一起讲的,说它们的一些属性值可以使元素脱离文档流,但是没想到在准备内容的时 ...

  3. HarmonyOS NEXT应用开发之Tab组件实现增删Tab标签

    介绍 本示例介绍使用了Tab组件实现自定义增删Tab页签的功能.该场景多用于浏览器等场景. 效果图预览 使用说明: 点击新增按钮,新增Tab页面. 点击删除按钮,删除Tab页面. 实现思路 设置Tab ...

  4. 玩转DB里的数据 — 阿里云DMS任务编排之简介和实操

    1.任务编排介绍 数据库是企业IT系统里的重要基础设施,里面存储了大量有价值的数据资产,如:交易数据.客户数据.订单数据,等等.其实,数据库在企业里一直扮演着一个数据生产者(Producer)的角色, ...

  5. OpenYurt 开箱测评 | 一键让原生 K8s 集群具备边缘计算能力

    作者| 郑超 阿里云高级开发工程师 随着物联网技术以及 5G 技术的高速发展,将云计算的能力延伸至边缘设备端,并通过中心进行统一交付.管控,已成为云计算的重要发展趋势.为服务更多开发者把握这一趋势,5 ...

  6. 【视频特辑】提效神器!如何用Quick BI高效配置员工的用数权限

    ​简介:随着企业数字化进程逐步加速,企业所产生和积累的数据资源日益增多.每当员工的用数权限发生变动,管理员都需要进行复杂繁琐的重复性配置流程,不仅耗时耗力还容易出错. 如何能便捷地对员工用数权限进行高 ...

  7. [ML] Tensorflow2 保存完整模型以及使用 HDF5

    将模型保存为完整的 HDF5 文件,后面可以直接加载使用: # cnblogs.com/farwish import tenforflow as tf model = tf.keras.models. ...

  8. [PHP] 浅谈 Laravel Authorization 的 gates 与 policies

    首先要区分 Authentication 与 Authorization,认证和授权,粗细有别. 授权(Authorization) 有两种主要方式,Gates 和 Policies. Gates 和 ...

  9. SpringBoot实现WebSocket发送接收消息 + Vue实现SocketJs接收发送消息

    SpringBoot实现WebSocket发送接收消息 + Vue实现SocketJs接收发送消息 参考: 1.https://www.mchweb.net/index.php/dev/887.htm ...

  10. 2021“MINIEYE杯”中国大学生算法设计超级联赛(1)

    2021"MINIEYE杯"中国大学生算法设计超级联赛(1) 1001 Mod, Or and Everything 题意: 对于每次输入的数字n,求(n%1)|...(n%n)的 ...