FPGA开发技能(10)热电偶测温ADS1118方案

文章目录

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.传送门

|-----|
| END |


💎文章原创,首发于CSDN论坛。

💎欢迎点赞💖收藏✨打赏💷!

💎欢迎评论区🎤或私信指出错误🎤,🗣️提出宝贵意见或疑问。


相关推荐
zidan14121 天前
XILINX硬件设计-(1)LVDS接口总结
fpga开发
啄缘之间1 天前
verilog练习:i2c slave 模块设计
学习·fpga开发·verilog·uvm
nature_forest2 天前
quartus24.1版本子模块因时钟问题无法综合通过,FPGA过OOC问题复盘
fpga开发
hi942 天前
Versal - Petalinux 2024.2(下载与安装+VD100+安装JupyterLab+SD卡分区+SDT流程)
linux·fpga开发·petalinux·versal soc
博览鸿蒙2 天前
想成为FPGA工程师需要学什么?主要工作内容是什么?
fpga开发
博览鸿蒙2 天前
FPGA设计怎么学?值得学吗?
fpga开发
啄缘之间2 天前
verilog练习:8bit移位寄存器
开发语言·学习·fpga开发·verilog·uvm
啄缘之间2 天前
3. 学习UVM的核心组件
学习·verilog·uvm·sv
9527华安3 天前
FPGA高端项目:实时视频缩放+UltraScale GTH光编码+UDP图传架构,高速接口转网络视频传输,提供工程源码和技术支持
网络·fpga开发·图像缩放·高速接口·ultrascale gth·8b10b