一、模数转换器的选择

工欲善其事必先利其器,要将模拟信号精准转换为数字信号,一个高精度的模数转换器不可或缺,选用合适的模数转换芯片对实现设计应用要求尤为重要。
本设计要求高精度和高稳定性的测量,主要用于温度传感器,预留了多个温度传感器接口,所以相应的ADC的通道数也要预留几个,不然要添加额外的多路开关选择器。
本设计选择ADI公司的AD7794作为模数转换器,片内集成了放大器,程序控制信号放大倍数,避免放大电路设计, AD7794内部架构如图所示。

AD7794具有低功耗、低噪声、高精度的特性,满足高精度测量应用要求,如图,内置24位低噪声的多路差分输入 型ADC。 每款模数转换器均内置一个低噪声、低温漂、高精度的基准源,除此之外可以采用差分型外部基准源。
AD7794 电流最大为400uA,是一款低噪声可编程增益仪表放大器,更新速度为4.17Hz至470Hz,与SPI、QSPI、MICROWIRE、DSP兼容,适用温度范围为-40℃至+105℃。

二、温度采集电路设计

本设计CPU采用的STM32,这块芯片也是目前高精度传感器普遍使用的。温度传感器种类繁多,但是精度及稳定性相差较大。本设计选择A级PT100铂电阻作为温度传感器,它精度较高,稳定性好。
温度采集电路设计如图所示。LM4040A41基准电压源给AD7794的外部参考电压以及四线制接法的温度传感器电路的恒压源供电,温度的差分信号经过片内放大器进入AD7794。
测温模块测量PT100阻值依据的是恒压源激励分压的原理,温度传感器接口电路采用四线制接线方法,四线制可以有效的消除导线自身阻值对PT100阻值的影响,四根线中,外侧的两根线为四线制电路提供电流,内侧两线连接AD7794通道采集PT100两端的电压值,AD7794开启片内输入缓冲的模式将会产生较高的输入阻抗,电流就不经过AD7794,而是全部流经PT100铂电阻,这样就能精确采集铂电阻的电压值,进而算出铂电阻的阻值。

本设计采用比率方式得出铂电阻的阻值。如图所示,电阻R2是精度为 ±0.1%,温漂为5ppm/℃的直插式RJ711精密电阻。之所以采用直插式,是因为表贴封装的精密电阻在焊接时容易受到烙铁高温而引起特性改变。
由于是串联电路,电阻比值就是电压之比,经过Fluke测温电桥测得实际的精密电阻的阻值为99.987472Ω。首先通过采样R2的上的电压值得到UR2,再通过采样PT100上的电压值得到UPT100,通过公式

R2/RPT100= UR2/ UPT100

计算出PT100的电阻值。

三、铂电阻测温电路程序设计

铂电阻测温电路中,CPU是通过SPI协议与AD7794通信的。CPU与AD7794的读写具体通过CS、SCLK、DOUT、DIN四个引脚实现。CS是片选输入引脚,低电平有效。SCLK是时钟输入或输出引脚,通过它可以提供内部时钟。DOUT和DIN分别是数据输出和数据输入引脚。AD7794读写时序分别如图所示。


要让AD7794工作,首先需要编写程序对AD7794的寄存器进行初始化配置,本设计采用4.17Hz采样频率,信号增益倍数设置为16,基准源选择4.096V外部基准源,具体初始化程序如下所示:

void AD7794INIT(void)
{AD7794Reset();delay_us(700);AD7794Write(0x10);                     //选择AD7794的配置寄存器AD7794Write(0x04);                  //          单极性编码,增益设置为16AD7794Write(0x10);                  //选择外部基准源,采集通道1AD7794Write(0x08);                    //选择模式寄存器AD7794Write(0x00);                 //采用连续转换模式AD7794Write(0x0F);                    //AD7794更新速率设置为4.17Hz
}

初始化设置完毕后,AD7794按照SPI协议将采集的数据输出到CPU,由于AD7794数据采集完后会产生下降沿信号并将DOUT所在IO口电平拉低,所以我们在程序中将DOUT引脚设置为下降沿中断触发。然后就可以在与之对应的中断服务函数中读取采集的数据并进行处理。
铂电阻测温模块在采集到PT100的阻值后需要将其转换成温度值。本设计摈弃普遍使用但精度不高的查表法,而利用国家标准的温度和阻值关系式以及牛顿迭代法的非线性补偿算法将阻值转化为温度值。我们将上述关系以及算法以C语言的形式编写成程序并写入STM32,主要程序如下:

double func(double res,double t);         //定义函数
double funcDao(double t) ;               //定义函数求导
double root(double res,double t)            //牛顿迭代法,res为阻值,t是温度
{   double x0,x1;x1=t;while(fabs(x1-x0)>=0.01)             //误差大于0.01则迭代,否则跳出{x0=x1;x1=x0-func(res,x0)/func1(x0);             //牛顿迭代方程}return x1;
}Temperature=root(RES,t0);              //阻值转换为温度值

最后,通过参考国家标准的温度和阻值关系式以及牛顿迭代法的非线性补偿将阻值转化为温度,精度可达±0.05℃,满足高精度温度测量的需求。

高精度温度采集系统设计相关推荐

  1. 基于ZigBee 的多点温度采集系统设计与实现

    摘要:针对广阔空间环境温度采集系统对功耗及成本的要求,设计了基于无线传感网络技术的多点温度采集系统.以CC2430 为主控芯片,选用DS18B20 作为温度采集节点的传感器,基于ZigBee 协议栈构 ...

  2. 【IoT】无线温度采集系统设计

    随着工业和农业的发展,无线采集系统的应用范围变得更加广泛,对无线数据采集系统的测量参数也越来越多,精准度也越来越高.目前国内外有很多的无线温度采集系统,但很多的无线温度采集系统存在很多问题,如采集速度 ...

  3. 基于单片机的八路温度采集系统设计(#0446)

    功能描述 1.采用51单片机作为主控芯片: 2.采用DS18B20传感器检测8路温度,测量范围-55~128℃,精度0.1℃: 3.采用LCD1602循环显示8路温度: 电路设计 采用Altium D ...

  4. 多点温度采集系统设计c语言,单片机多点(八路)DS18B20温度采集系统仿真与源码...

    #include #include #define                DATA        P1      //1602驱动端口 //ROM操作命令 #define           ...

  5. labview串口数据采集并显示_一种NB-IoT冶金节点温度采集与远程监测系统的设计...

    大型高炉出铁量大,冶金生产环境恶劣,导致铁水沟侵蚀日益严重,需人工定期对冶金沟道部分进行温测,其准确度不高,生产成本高,安全保障低[1].为了能够对高炉冶金沟道进行全方位测温,掌握铁水沟道的温度和腐蚀 ...

  6. 基于51单片机的温度采集与报警系统】

    引言 单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将设计一种基于单片机控制的温度器,本温度计属于多功能温度计,可以利用温度传感器对环境温度进行监测和显示,可以通 ...

  7. 包含几通道数据_温度采集,无处不测!「数据采集」

    Measurement Computing (MCC) 提供多种温度数据采集产品.低成本数据采集方案,例如USB-TEMP单模块即可提供热电偶.RTD和热敏电阻输入通道.独立式无线数据采集设备和数据记 ...

  8. 基于STM32的高精度温度测控系统-原理图设计

    基于STM32的高精度温度测控系统,本篇为原理图设计分析篇 高精度温度测控仪设计原理图篇(已更新) 高精度温度测控仪设计PCB篇(已更新) 高精度温度测控仪设计STM32代码篇(未更新) 高精度温度测 ...

  9. 8通道温度采集器工作特性介绍

    本篇原理须知: PT100原理简介:PT100铂电阻的阻值会随着温度变化,检测电阻即可知道温度,PT后的100表示在0摄氏度的阻值为100Ω. 温度采集实现:温度采集模块(8路温度采集器)+ 传感器( ...

  10. 单片机读取多路温度c语言,以51单片机为内核实现了两路温度采集与显示的温度控制器设计...

    1.引言 目前,温度控制器存在的问题是如何缩减成本,减少功耗,温度测量的准确性和多路温度的同时显示.本方案设计的实现基于C51单片机的两路温度控制器,做到成本最低化,精确度高,两路温度的显示和控制,能 ...

最新文章

  1. Graphviz-Gdot语言学习
  2. javascript --- 作用域和闭包
  3. MongoDB中的索引操作
  4. JSP和FreeMarker的比较
  5. 【免费毕设】ASP.NET电子购物商城系统(源代码+lunwen)
  6. SSH 无法启动的原因分析及解决方法
  7. 随手记_科研攻略_好的idea的产生
  8. springMVC入门二
  9. UVa 12333 - Revenge of Fibonacci manweifc(模拟加法竖式 字典树)
  10. 《Perl语言入门》
  11. linux下的PDF阅读器
  12. android音乐播放器开发思路,手把手教你做音乐播放器(一)功能规划
  13. 顶尖互联网公司 类名定义/数据库字段 - 英文名词解释
  14. 你绝没看如此详细的PDF去水印教程
  15. HL7(Health Level Seven)
  16. 牛客网刷题java之变态跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
  17. 经典贪心问题之圣诞老人的礼物
  18. HBuilderX 如何在真机上进行调试
  19. java 三级缓存_技术汇总:第十三章:三级缓存
  20. tiny4412开发板Android篇_2基于tiny4412的Android系统的编译

热门文章

  1. 安装完成后打开CAXACAD时出现的找不到mfc100u.dll等无法执行的问题
  2. python爬虫微信公众号视频
  3. 十大常用经典排序算法总结!!!
  4. 嫡权法赋权法_赋权法_
  5. java100道逻辑题及答案_100道Java面试题收集整理及参考答案
  6. R数据分析:混合效应模型的可视化解释,再不懂就真没办法
  7. Keil uVision4 C51完整版
  8. Windows自带的远程协助工具(非远程桌面)
  9. 桌面美化 Python tkinter倒计时工具
  10. JAVA 类和对象的实例