ch58x/ch59xADC差分采样NTC电阻获取当前温度
前言:之前的文章中也有关于使用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电阻获取当前温度的更多相关文章
- NTC电阻Rt与温度T关系
NTC电阻Rt与温度T公式如下: Rt=10000*exp(3950*(1/(273.15+T)-1/(273.15+25))). 例:0摄氏度时,电阻为33620.6037214357 欧姆 Rt= ...
- 调试备忘录-NTC电阻的使用(教程 + 代码)
软件环境:CodeWarrior 11.1 硬件环境:NXP S9KEAZ64A 传感器参数:NTC热敏电阻(R25 = 50k,B25-50 3950) 写在前面 最近做小项目需要用到NTC电阻,因 ...
- Linux系统获取CPU温度
Linux系统获取CPU温度 摘自:https://jingyan.baidu.com/article/cbf0e500407d072eab289343.html 各位好,本篇将简单介绍如何在不同系列 ...
- 转载:c# 获取CPU温度(非WMI,直接读取硬件)
c#获取cpu温度 很早一个项目做远控,所以需要用到获取cpu温度,但是就是不知从何下手,无意中发现了Open Hardware Monitor,令我的项目成功完成 亲测20台清装xp sp2的机器, ...
- Beaglebone Black–I2C 接 BMP280 获取当前温度
我有两个含温度传感的模块,一个是AOSONG 奥松电子的 AM2320 温度湿度,另一个是九轴里面的 Bosch BMP280.由于 AM2320 用 I2C MODBUS,直接用 I2C Tools ...
- 2022年写的香橙派 OrangePi Zero 用python获取dht11温度和湿度
感谢网上资料和个人的不放弃,终于方便的解决了香橙派 OrangePi Zero用python获取dht11温湿度的问题. 网上关于香橙派的资料比起树莓派真是少之又少,现在香橙派zero能干的活暂时也只 ...
- linux获取CPU温度
Centos系列 1 yum install lm_sensors 2 sensors-detect 3 sensors Ubuntu系列(多了service module-init-tools st ...
- 使用树莓派3获取CPU温度
一.命令: cat /sys/class/thermal/thermal_zone0/temp 二.上图:
- orangepi获取cpu温度
cat /sys/devices/virtual/hwmon/hwmon1/temp1_input
- FOC 电流采样方案对比(单电阻/双电阻/三电阻)
如果本文帮到了你,帮忙点个赞: 如果本文帮到了你,帮忙点个赞: 如果本文帮到了你,帮忙点个赞: 创作不易 谢谢支持 文章目录 1 电流采样的作用 2 硬件架构 3 采样关键 4 采样方案 5 三电阻采 ...
随机推荐
- nginx重新整理——————http请求的11个阶段中的日志阶段[十九]
前言 简单介绍一下access log 阶段. 正文 日志模块是 ngx_http_log_module,这个模块无法禁用,内置的. 结 上面是日志的用法.主要的一个内容是日志如果是变量的话,那么需要 ...
- nginx重新整理——————nginx 的网络模型[九]
前言 简单介绍一下nginx的网络模型. 正文 网络拓扑图: 数据流: 网络传输大概是这样传输的. nginx 事件循环: 事件处理过程: 上面两张图什么意思呢? 其实就是说,nginx 是通过事件驱 ...
- sass的用法重温
Sass使用变量,变量以$开头 $bgcolor:#f40; background-color:$bgcolor; 如果变量需要嵌套在字符串当中,就需要写在#{}之中 $direction:left; ...
- 力扣419(java)-甲板上的战舰(中等)
题目: 给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 'X' 或者是一个空位 '.' ,返回在甲板 board 上放置的 战舰 的数量. 战舰 只能水平或者 ...
- OpenSergo 流量路由:从场景到标准化的探索
简介: 本文我们将从流量路由这个场景入手,从常见的微服务治理场景出发.先是根据流量路由的实践设计流量路由的 Spec,同时在 Spring Cloud Alibaba 中实践遵循 OpenSergo ...
- 基于开源PolarDB-X打造中正智能身份认证业务数据基座
简介: 在10月25日由阿里云开发者社区.PolarDB开源社区.infoQ联合举办的「开源人说」第三期--<数据库PolarDB专场>沙龙上,中正智能科技有限公司平台软件部研发总监韩毅带 ...
- Forrester云原生开发者洞察白皮书,低代码概念缔造者又提出新的开发范式
简介: 云原生时代的到来为开发者群体带来了前所未有的机遇,让开发者可以更加专注业务价值创造与创新,并使得人人成为开发者成为现实.广大开发者如何转型成为云原生开发者?运维等专业人员在云原生时代如何避免边 ...
- Cube 技术解读 | 支付宝新一代动态化技术架构与选型综述
简介: 支付宝客户端的动态化技术经历三个阶段:现阶段也就是第三阶段是实体组件+部分光栅化的hybrid模式,Cube 就是该模式下的产物. 如标题所述,笔者将持续更新<Cube 技术解读& ...
- Ingress-Controller高可用方案及多租户场景(21)
一.Ingress-controller高可用 Ingress Controller 是集群流量的接入层,对它做高可用非常重要,可以基于 keepalive 实现 nginx-ingress-cont ...
- centos 7 开启 httpd 服务和 80 端口
centos 7 开启 httpd 服务和 80 端口 yum install -y httpd systemctl start httpd firewall-cmd --add-service=ht ...