FPGA开发技能(10)热电偶测温ADS1118方案
文章目录
- 1.热电偶原理
- 2.ADS1118方案
- 2.1ADS介绍
- 2.2原理设计
- 2.3实物连接图
- 2.4测温原理
- 3.误差校准
- 3.1查表法
- 3.2冷端补偿法
- 4.SPI操作时序
- 5.传送门
1.热电偶原理
两个不同材料的金属线一端在同一结点连接,另一端放在被测温点,则二者会产生一定的压差;两种不同金属的结点处于不同的温度时,会在它们之间产生电压,这个电压称为热电势(Seebeck效应)。热电偶的电压信号与两端的温差成比例,通过测量这个电压差来推算温差,从而得出温度值。这就是热电偶测温原理。实际应用中,不同的金属在温度检测结点 (T TC ) 处连接将形成热电偶。电压是在基准温度 (T CJ ) 下通过两种金属测得的。热电偶的引线需要处于相同的温度,并且通常通过等温块连接到 ADC。下图展示了一个由两种不同金属制成的热电偶,热电偶的引线连接到等温块。
用于构造热电偶的所有不同金属都会显示出塞贝克效应引起的电压变化,但可使用几种特定组合来制作热电偶。常见的有J、K、T、E、S型热电偶,美国国家标准与技术研究院测量得到各型的热电偶温度与电压之间的关系链接。K型热电偶因其具有广泛的温度范围,和相对低廉的成本被广泛使用,本文使用K型热电偶,结合TI芯片ADS1118接FPGA实现温度测量。
2.ADS1118方案
2.1ADS介绍
由第一节可知,使用热电偶进行温度测量实际上是要测量冷端温度和测量点的电动势。ADS1118内部集成了一个温度传感器可用于冷端测量,同时有ADC通道用于获取测量点电压。因此热电偶+ADS1118是TI推荐的一种方案。
ADS1118是一款精密、低功耗、16位模数转换器 (ADC)。ADS1118集成了可编程增益放大器 (PGA)、电压基准、振荡器和高精度温度传感器。这些功能以及2V至5.5V的宽电源电压范围,使得ADS1118非常适合功率受限和空间受限的传感器测量应用。ADS1118数据转换速率最高可达每秒860次采样 (SPS)。PGA的输入范围为±256mV至±6.144V,能够以高分辨率测量大信号和小信号。该器件通过输入多路复用器 (MUX)测量双路差分输入或四路单端输入。 高精度温度传感器用于系统级温度监控或对热电偶进行冷结点补偿。
2.2原理设计
ADS1118通过SPI接口与FPGA芯片相连,通过该接口完成工作模式的配置以及冷端温度和电压的获取。 如图右半部分,在任何模拟信号的设计中,信号调理都很关键。 由于混叠效应,任何ADC不论其架构,在其输入上都需要某些数量的滤波,以减少系统噪声。由于芯片内的数字滤波器,对于一个外部模拟滤波器的需要被大大降低了,但是仍然需要某些滤波。 上图显示的一个简单滤波器将提供一个很均衡的差分滤波器设计。这些滤波器的重要作用是,抑制掉那些有可能进入ADC输入,频率接近于调制器采样速度的噪声。调制器采样速度通常比实际ADC输出数据速率高几百甚至几千倍。这些频率上的噪声根本无法由数据转换器进行数字抑制,而必须通过模拟输入滤波来抑制。ADS1118具有确定的调制器采样频率,以使外部滤波器能够进行相应地设计。此外,在这个应用中,如果热电偶被断开,这些电阻器将自动驱动输入信号到电源和接地电位,从而为 ADC 提供一个明显的传感器断开条件。
2.3实物连接图
如图所示,冷端与电路板留下的端子即ADS1118芯片AIN通道。测量点放在实际测温处即可。
2.4测温原理
使用热电偶测量注意 他是两端,一个是测温端,一个是参考端。温度节点在测温段,即热端,而另一端用于参考。如果参考端的温度是0,那么测量段测量得到的电压即可转换为温度。但是通常参考端处于室温环境,并不是0,所以需要做冷端补偿。冷端补偿:由于冷接点的温度对测量结果有影响,所以必须知道冷接点的实际温度,或者采用冷端补偿技术来计算冷接点的温度变化,并将其反映到最终的测量值中。 即冷端的温度已知并将其转换成电压VCJ,然后测得热端的电压VTC,由于存在非线性的情况,所以不能将冷端温度简单的加上热端电压转换成的温度得到最终温度,要把这两个电压相加,然后再曲线表上找到当前对应的温度值。这样误差小。
使用ADS1118是使用内部的传感器获取冷端温度的,因此测量一个通道的温度,需要FPGA通过SPI获取冷端温度和热端电压,而ADS1118是通过一个寄存器存放二者的值,通过不同的设置,寄存器中存放的值不同。因此需要先写入SPI配置获取冷端温度,该温度占两个字节中的高14位,其中最高位是符号位,若为0,则冷端温度是14位的值乘以0.03125;若符号位为1则减1取反乘以-0.03125。获取电压值与上同理,但需注意,实际测温的时候在事先知道被测目标大致温度范围的情况下,需要调整增益以提高精度。我的设计中有三个测温通道连接到两个芯片上,每隔10ms获取一个温度或者电压值,完整测量一遍需要50ms,在高精度测量场景中需优化此设计。
在获取到冷端温度和热端电压后要计算得到最终的热端温度,实现冷端补偿的计算过程是简单的且有多种方法。一个典型方法是交替读取热电偶输入和温度传感器。也就是说,针对每个测得的热电偶 ADC 电压获得一个片载温度结果。如果冷端处于非常稳定的环境中,以更长的周期进行冷端测量也许就足够了。 经过这些操作,随后,将在每个热电偶和冷端测量周期产生两个结果:热电偶电压或 V TC,以及片载温度或T CJC。为了将冷端计算在内,ADS1118内的温度传感器必须首先被转换为一个与当前使用的热电偶成比例的电压,以生成V CJC。 这个过程大体上通过在用于热电偶电压至温度转换的表上进行反向查询来完成。 将两个电压相加,然后产生热电偶补偿电压V实际值,其中V CJC+ V TC =V实际值。然后使用之前同一个查询表,V实际值被转换为温度,并且生成T实际值。实际应用中,由于我的系统温差要求不大,因此通过查表在一定的区间内选定两个点计算出斜线的K值,然后再通过实测补偿一个B值,即y=kx+b。
3.误差校准
系统中产生误差的来源有很多,例如滤波器误差、ADC增益误差和漂移、ADC线性误差、冷端温度偏差造成的误差、由于温度与电压曲线非线性导致查表计算产生误差。在我的系统中误差校准操作通过截距b体现并满足要求。下面介绍两个误差的校准方法。
3.1查表法
由于电压与温度的关系并非线性,因此使用简单的线性函数代替一定存在误差。而使用官方提供的拟合多项式计算又会给FPGA带来很大的计算负担,因此一种即省资源又误差小的办法是将所测温度区间选16个点,存储在FPGA中,TI官方做了测试超过16个点对于精度的提升微乎其微,这16个点也无需要等间距取,在FPGA计算出热端温度对应的电压之后,找表中相邻的两个点做线性插值。如下图所示是8个点查表示意。
3.2冷端补偿法
上述方案中,使用ADS1118内部传感器作为冷端温度,实际上两个冷端端子处于同一温度对于测量结果的准确性是至关重要的,使用内部传感器是认为内部的温度与冷端的端子是一致的,一种更好的方式是,使用ADS的一个通道连接一个热敏电阻或者RTD或者其他温度传感器,冷端端子接另一个通道,并将RTD与冷端端子放在同一个等温块中,这样做误差最小。
4.SPI操作时序
按照上述思路,具体写代码需要根据指定的SPI的操作时序读出冷端温度和热端电压,随后计算出热端温度对应的电压值,查表得到最后的结果。具体的有关SPI的操作可以查看串行通信接口-SPI。
5.传送门
- 我的主页
- FPGA开发必备技能专栏汇总导航
- FPGA开发技能(9)快速生成约束XDC文件
END |
💎文章原创,首发于CSDN论坛。
💎欢迎点赞💖收藏✨打赏💷!
💎欢迎评论区🎤或私信指出错误🎤,🗣️提出宝贵意见或疑问。
相关文章:

FPGA开发技能(10)热电偶测温ADS1118方案
文章目录 1.热电偶原理2.ADS1118方案2.1ADS介绍2.2原理设计2.3实物连接图2.4测温原理 3.误差校准3.1查表法3.2冷端补偿法 4.SPI操作时序5.传送门 1.热电偶原理 两个不同材料的金属线一端在同一结点连接,另一端放在被测温点,则二者会产生一定的压差&…...

如何优化网站结构以促进快速收录?
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/104.html 优化网站结构以促进快速收录,可以从以下几个方面入手: 一、合理规划页面结构 扁平化结构:采用扁平化的网站结构,减少层级…...

算法-动态规划-0-1背包问题(二维0-1背包,背包求方案数,求背包具体方案)
概念 背包问题(Knapsack Problem)是算法领域的经典组合优化问题,在资源分配等场景有广泛应用,以下从定义、常见类型、解决方法等方面介绍: 定义 给定一组物品,每个物品都有自己的重量和价值,…...

位运算算法篇:位运算实现加减乘除
位运算算法篇:位运算实现加减乘除 那么我们想必对加减乘除这些数学计算并不陌生,但是对于我们的计算机来说,由于机器只能识别二进制的语言,那么我们底层的数据都是以二进制的形式存在,那么我们CPU的计算器的加减乘除运…...

【故障处理】ORA-19849 ORA-19612 0RA-17627 ORA-03114
【故障处理】ADG duplicate 异常中断ORA-19849 ORA-19612 0RA-17627 ORA-03114 Corrupt block 84629 found during reading backup piece 一、概述二、报错信息三、报错原因四、解决方法五、其他类似报错5.1 报错信息 一、概述 部署adg执行duplicate异常中断,RMAN过…...

【MQ】Spring3 中 RabbitMQ 的使用与常见场景
一、初识 MQ 传统的单体架构,分布式架构的同步调用里,无论是方法调用,还是 OpenFeign 难免会有以下问题: 扩展性差(高耦合,需要依赖对应的服务,同样的事件,不断有新需求࿰…...

jupyterLab插件开发
jupyter lab安装、配置: jupyter lab安装、配置教程_容器里装jupyterlab-CSDN博客 『Linux笔记』服务器搭建神器JupyterLab_linux_布衣小张-腾讯云开发者社区 Jupyter Lab | 安装、配置、插件推荐、多用户使用教程-腾讯云开发者社区-腾讯云 jupyterLab插件开发教…...

拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动
拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动 1. 前情: 1TB的硬盘,分了120G作ubuntu22.04。/boot: 300MB, / : 40GB, /home: 75G, 其余作swap area。 2. 一开始按这个教程:对我无效 https://blog.csdn.net/Eric_xkk/article/details/1…...

QT-常见问题
1. C(特别是 Qt)开发中,内存优化的方法 1. 合理管理对象生命周期,使用智能指针 Qt 提供了 QScopedPointer 和 QSharedPointer 来管理对象生命周期,避免手动 delete 导致的内存泄漏。 2. 减少内存占用 QString、QBy…...

如何通过腾讯 ima.copilot 训练自己的知识库
如何通过腾讯 ima.copilot 训练自己的知识库 在信息爆炸的时代,拥有一个专属的知识库,能让我们在学习、工作中快速获取所需信息,极大地提升效率。腾讯推出的 AI 智能工作台 ima.copilot,为我们打造个人知识库提供了便利。今天&am…...

关于近期我的交流之深度思考DeepSeek归纳总结
以下内容我摘自昨天 2025-2-9 群里的讨论,只涉及我的观点内容,会让DeepSeek进行深度思考 抢财猫: 能提出一个好问题不容易的,问题边界包含了所有认知,提问题需要能力的 抢财猫: 每个人都相当于一个大模型,自己给自己投入了多少算力,训练了多少数据参数,自己心里有数…...

智能生鲜配送管理系统:生鲜及快消品行业的数字化转型利器
在生鲜及快消品行业,高效的供应链管理是企业成功的关键。随着科技的不断进步,越来越多的企业开始采用智能化管理软件来提升运营效率、降低成本并优化客户体验。今天,我们就来了解一下这类智能生鲜配送管理系统的核心功能和技术优势࿰…...

DeepSeek和ChatGPT的优劣或者区别(答案来DeepSeek和ChatGPT)
DeepSeek的答案 DeepSeek与ChatGPT作为当前两大主流AI模型,在架构设计、性能表现、应用场景等方面存在显著差异,以下从多个维度进行对比分析: 一、架构与训练效率 架构设计 DeepSeek:采用混合专家(MoE)框架…...

【C语言标准库函数】标准输入输出函数详解[5]:格式化文件输入输出
目录 一、fprintf() 函数 1.1. 函数简介 1.2. fprintf使用场景 1.3. 注意事项 1.4. 示例 二、fscanf() 函数 2.1. 函数简介 2.2. fscanf使用场景 2.3. 注意事项 2.3. 示例 三、总结 在 C 语言中,格式化文件输入输出函数能够让我们以特定的格式对文件进行…...

[概率论] 随机变量
Kolmogorov 定义的随机变量是基于测度论和实变函数的。这是因为随机变量的概念需要精确地定义其可能的取值、发生的概率以及这些事件之间的依赖关系。 测度论:在数学中,测度论是用来研究集合大小的理论,特别是无穷可数集和无界集的大小。对于…...

中国通信企业协会通信网络安全服务能力评定安全设计与集成服务能力评定三级要求准则...
安全设计与集成服务能力三级是通信网络安全服务能力评定安全设计与集成服务能力评定的最高等级,所需的要求也会更加严苛,不仅要满足安全设计与集成服务二级能力要求的所有条款,还要满足以下要求: 规模与资产要求 1)单位正规编制员…...

【C++语言】类和对象(下)
一、再谈构造函数 1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _mont…...

【Spring】什么是Spring?
什么是Spring? Spring是一个开源的轻量级框架,是为了简化企业级开发而设计的。我们通常讲的Spring一般指的是Spring Framework。Spring的核心是控制反转(IoC-Inversion of Control)和面向切面编程(AOP-Aspect-Oriented Programming)。这些功能使得开发者…...

全面理解-c++11中的智能指针
在 C 中,智能指针(Smart Pointers) 是用于自动管理动态分配内存的类模板,遵循 RAII(Resource Acquisition Is Initialization) 原则,确保资源在生命周期结束时被正确释放,避免内存泄…...

【jmeter】在windows中,创建的变量,在jmeter中,读取变量失败的问题,路径问题
1.0 在windows中,jmeter读取变量失败 在路径配置的时候,配置按照D:\FtpDownload\${file_name}运行之后,下载的文件,文件名出现问题 \取消了$符号的意义,所以需要更改路径 D:\\FtpDownload\\${file_name}...

【CubeMX-HAL库】STM32F407—无刷电机学习笔记
目录 简介: 学习资料: 跳转目录: 一、工程创建 二、板载LED 三、用户按键 四、蜂鸣器 1.完整IO控制代码 五、TFT彩屏驱动 六、ADC多通道 1.通道确认 2.CubeMX配置 ①开启对应的ADC通道 ②选择规则组通道 ③开启DMA ④开启ADC…...

使用 POI-TL 和 JFreeChart 动态生成 Word 报告
文章目录 前言一、需求背景二、方案分析三、 POI-TL JFreeChart 实现3.1 Maven 依赖3.3 word模板设置3.2 实现代码 踩坑 前言 在开发过程中,我们经常需要生成包含动态数据和图表的 Word 报告。本文将介绍如何结合 POI-TL 和 JFreeChart,实现动态生成 W…...

xxl-job的分片广播
目录 xxl-job的分片广播 场景引入 xxl-job简介 xxl-job的部署安装 代码编写 1.导入依赖 2.yml文件编写 3.编写xxl-job执行器配置类,维护一个xxl-job执行器的bean 4.编写第一个任务,任务名字叫firstJob 5.进入服务端,增加执行器和任务…...

MobaXterm破解会话上限限制
1. 下载安装包MobaXterm-Keygen 下载路径: https://gitcode.com/gh_mirrors/mob/MobaXterm-Keygen 2. 搭建python3环境 window下python3环境搭建可参考网站: https://blog.csdn.net/enteracity/article/details/135479689 3. 生成文件Custom.mxtpro…...

vscode设置保存时自动缩进和格式化
参考博客 如何在 VSCode 中自动缩进你的代码 | Linux 中国 省流 使用 Ctrl Shift P 来打开命令模式,搜索 Open User Settings 并按下回车你需要搜索 Auto Indent,并在 “编辑器:自动缩进(Editor: Auto Indent)” 中选择 “全部(Full)”P…...

一键查看电脑各硬件详细信息 轻松查看电脑硬件参数
今天为大家推荐两款非常实用的电脑硬件查看软件,它们能够一键快速查看电脑的各种配置信息,使用起来非常方便。 一键查看电脑各硬件详细信息 这款软件是绿色版的,无需安装,打开即可使用,文件大小仅为900多KB࿰…...

【C++11】lambda和包装器
1.新的类功能 1.1默认的移动构造和移动赋值 原来C类中,有6个默认成员函数:构造函数/析构函数/拷⻉构造函数/拷⻉赋值重载/取地址重 载/const 取地址重载,最后重要的是前4个,后两个⽤处不⼤,默认成员函数就是我们不写…...

react redux用法学习
参考资料: https://www.bilibili.com/video/BV1ZB4y1Z7o8 https://cn.redux.js.org/tutorials/essentials/part-5-async-logic AI工具:deepseek,通义灵码 安装相关依赖: 使用redux的中间件: npm i react-reduxreact-…...

前端HTML标签 meta中常见的一些属性
meta中常见的一些属性 <meta/> 标签的属性 <meta/> 是什么? <meta/> 标签主要用于表示和当前文档相关的 元数据 信息。 而 元数据(metadata),简单的来说就是描述数据的数据。例如,一个 HTML 文件是一…...

127,【3】 buuctf [NPUCTF2020]ReadlezPHP
进入靶场 吓我一跳 查看源码 点击 审计 <?php// 定义一个名为 HelloPhp 的类,该类可能用于执行与日期格式化相关的操作 class HelloPhp {// 定义一个公共属性 $a,用于存储日期格式化的模板public $a;// 定义一个公共属性 $b,用于存储…...