news 2026/2/8 12:51:05

PT100(RTD)三线制测量方案探索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PT100(RTD)三线制测量方案探索

PT100(RTD)三线制测量方案 本方案仅为开发者提供的快速原型机参考,并非可直接量产的产品,开发者请根据实际需求增删功能及模块。 本系统以stm32f103c8t6作为主控芯片,采集温度范围为-200℃~600℃,通过液晶1602显示温度或pt100阻值,显示分辨率为0.01℃,综合精度±1℃以内,可通过按键设置显示模式和设置温度量程,带超量程蜂鸣器报警功能,带串口下载电路。 功能参数: 1.电源输入:5V,mini usb电源接口,预留排针接口; 2.温度测量原理:采用三线制测量方案,激励电流为210uA,获取AD值后计算出PT100阻值,通过查表获取当前的阻值对应的温度。 3.设计知识点: 3.1、采用AD7792手册中推荐的RTD三线制测量电路,AD7792驱动代码; 3.2、按键驱动代码,带软件去抖和FIFO功能; 3.3、液晶1602驱动代码以及液晶显示菜单的简单框架; 3.4、使用查表方式获取pt100的温度值; 3.5、串口下载电路。

最近在研究温度测量相关的项目,发现了这个PT100(RTD)三线制测量方案,感觉很有意思,来和大家分享一下。不过得先说明,这个方案只是给开发者的快速原型机参考,要是想量产,还得根据实际需求对功能和模块进行增删。

主控芯片及整体性能

这个系统选用了stm32f103c8t6作为主控芯片,别看它个头不大,功能还挺强。它能采集的温度范围是 -200℃到600℃,对于很多场景来说,这个范围已经足够用了。而且它的显示分辨率能达到0.01℃,综合精度在±1℃以内,对于不少工业或实验场景,这个精度也能满足基本需求。另外,通过液晶1602可以显示温度或者PT100的阻值,还能通过按键设置显示模式和温度量程,超量程了还有蜂鸣器报警,还带串口下载电路,功能可以说是比较齐全。

电源相关

电源输入是5V,采用mini usb电源接口,同时还贴心地预留了排针接口。这样不管是用常见的USB供电,还是在某些特定场景下需要通过排针连接其他电源设备,都能满足,设计得很灵活。

温度测量原理

这里采用的是三线制测量方案,激励电流设定为210uA 。简单说,就是给PT100通上这个激励电流,然后获取AD值,通过这个AD值计算出PT100的阻值,最后通过查表得到当前阻值对应的温度。下面我们来看看代码实现相关的部分。

AD7792驱动代码

在这个方案里,采用了AD7792手册中推荐的RTD三线制测量电路。以一段简单的初始化代码为例(假设采用的是C语言):

// 定义AD7792相关寄存器地址 #define AD7792_REG_CONFIG 0x00 #define AD7792_REG_DATA 0x01 // 初始化AD7792 void AD7792_Init(void) { // 配置SPI接口(假设SPI已经初始化好了) // 向配置寄存器写入相关配置 SPI_WriteByte(AD7792_REG_CONFIG, 0x80); // 例如设置为正常模式等,具体配置根据手册要求 }

这段代码主要做的就是初始化AD7792,通过SPI接口向它的配置寄存器写入配置数据,让它工作在我们需要的模式下。不同的配置值对应不同的工作模式、增益等设置,具体得参考AD7792的手册。

按键驱动代码

按键驱动代码带有软件去抖和FIFO功能。软件去抖是为了防止按键按下或松开时因为机械抖动产生的误触发。FIFO功能则可以在按键操作比较频繁的时候,存储按键事件,避免丢失。下面是一个简单的按键扫描及去抖代码示例:

// 定义按键引脚 #define KEY_PIN GPIO_Pin_0 #define KEY_PORT GPIOA // 按键扫描函数 uint8_t Key_Scan(void) { static uint8_t key_status = 1; // 记录按键状态,初始为未按下 if (GPIO_ReadInputDataBit(KEY_PORT, KEY_PIN) == 0) { // 检测到按键按下 if (key_status == 1) { // 上一次状态为未按下 key_status = 0; for (volatile int i = 0; i < 5000; i++); // 简单延时去抖 if (GPIO_ReadInputDataBit(KEY_PORT, KEY_PIN) == 0) { return 1; // 确认按键按下,返回1 } } } else { key_status = 1; // 按键松开,恢复状态 } return 0; // 未检测到按键按下,返回0 }

这段代码首先定义了按键的引脚,然后在扫描函数里,用一个静态变量记录按键状态。当检测到按键按下时,先判断上一次状态,如果是未按下,就进行延时去抖,再次确认按键状态,如果还是按下就返回按键按下的标志。如果检测到按键松开,就恢复按键状态为未按下。

液晶1602驱动代码

液晶1602驱动代码以及液晶显示菜单的简单框架也是很重要的部分。下面是一段向液晶1602发送命令的代码:

// 向液晶1602发送命令 void LCD_SendCommand(uint8_t cmd) { // 假设这里已经初始化好了相关的端口 LCD_PORT = cmd & 0xF0; // 发送高4位 LCD_RS = 0; // 选择命令寄存器 LCD_RW = 0; // 写操作 LCD_EN = 1; for (volatile int i = 0; i < 100; i++); LCD_EN = 0; for (volatile int i = 0; i < 100; i++); LCD_PORT = (cmd << 4) & 0xF0; // 发送低4位 LCD_EN = 1; for (volatile int i = 0; i < 100; i++); LCD_EN = 0; for (volatile int i = 0; i < 100; i++); if (cmd < 4) { for (volatile int i = 0; i < 2000; i++); // 清屏等命令需要较长延时 } }

这段代码通过对液晶1602的端口操作,先发送命令的高4位,再发送低4位,从而实现向液晶发送命令的功能。不同的命令对应不同的操作,比如清屏、设置光标位置等。最后的延时操作是为了确保液晶有足够时间处理命令。

使用查表方式获取pt100的温度值

使用查表方式获取pt100的温度值是一种比较常用且高效的方法。我们事先会根据PT100的特性,制作一个阻值 - 温度对应表。代码示例如下:

// 假设已经定义好的阻值 - 温度对应表 const float R_Table[] = {100.00, 103.90, 107.79, 111.67, 115.54}; // 这里只是简单示例几个值 const float T_Table[] = {0.00, 10.00, 20.00, 30.00, 40.00}; // 根据阻值获取温度 float GetTemperature(float resistance) { for (int i = 0; i < sizeof(R_Table) / sizeof(R_Table[0]) - 1; i++) { if (resistance >= R_Table[i] && resistance < R_Table[i + 1]) { float slope = (T_Table[i + 1] - T_Table[i]) / (R_Table[i + 1] - R_Table[i]); return T_Table[i] + slope * (resistance - R_Table[i]); } } return -999; // 如果超出范围,返回一个特殊值 }

这段代码里,我们先定义了阻值表和对应的温度表。在获取温度函数里,通过遍历阻值表,找到当前阻值所在的区间,然后根据线性关系计算出对应的温度值。如果阻值超出了表格范围,就返回一个特殊值表示异常。

串口下载电路

串口下载电路方便我们对程序进行更新和调试。虽然这里没有给出具体代码,但在实际项目中,通过配置好stm32的串口相关寄存器,就可以实现串口通信,从而将编写好的程序下载到芯片中。

总的来说,这个PT100(RTD)三线制测量方案涵盖了从硬件设计到软件代码实现的多个方面,对于学习温度测量以及相关电路和代码编程都有一定的参考价值。希望这篇文章能给大家带来一些启发。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/5 16:50:53

从文本中快速提取关键信息|AI 智能实体侦测服务实战应用

从文本中快速提取关键信息&#xff5c;AI 智能实体侦测服务实战应用 在当今信息爆炸的时代&#xff0c;非结构化文本数据&#xff08;如新闻、报告、社交媒体内容&#xff09;呈指数级增长。如何从海量文本中快速、准确地提取出关键信息&#xff0c;成为企业、媒体、科研机构等…

作者头像 李华
网站建设 2026/2/7 15:14:30

如何高效实现中文NER?试试AI智能实体侦测服务,开箱即用

如何高效实现中文NER&#xff1f;试试AI智能实体侦测服务&#xff0c;开箱即用 在自然语言处理&#xff08;NLP&#xff09;的实际应用中&#xff0c;命名实体识别&#xff08;Named Entity Recognition, NER&#xff09; 是信息抽取的核心任务之一。尤其在中文场景下&#xf…

作者头像 李华
网站建设 2026/2/5 13:22:09

分类模型部署成本对比:自建GPU vs 云端按需付费

分类模型部署成本对比&#xff1a;自建GPU vs 云端按需付费 引言 作为技术负责人&#xff0c;你是否也遇到过这样的困境&#xff1a;花大价钱购置了高端GPU服务器&#xff0c;结果发现团队的实际利用率长期不足30%&#xff1f;这种情况在AI分类模型部署领域尤为常见。分类模型…

作者头像 李华
网站建设 2026/2/7 4:30:02

飞控散热技术

飞控散热技术是确保飞行控制系统&#xff08;简称“飞控”&#xff09;和整机在复杂工况下稳定运行的关键&#xff0c;其核心是解决飞行器各部件&#xff08;尤其是动力、飞控、航电&#xff09;在高负荷下的散热问题。本质上&#xff0c;对“飞控”进行散热&#xff0c;通常意…

作者头像 李华
网站建设 2026/2/5 17:07:23

AI万能分类器绘画实战:10分钟生成分类报告,1块钱体验

AI万能分类器绘画实战&#xff1a;10分钟生成分类报告&#xff0c;1块钱体验 1. 为什么设计师需要AI分类器&#xff1f; 作为一名设计师&#xff0c;你是否经常遇到这样的困扰&#xff1a;电脑里存了几万张素材图片&#xff0c;想找一张特定风格的参考图却要翻遍整个文件夹&a…

作者头像 李华
网站建设 2026/2/8 7:35:45

MiDaS模型应用案例:电商产品3D展示生成教程

MiDaS模型应用案例&#xff1a;电商产品3D展示生成教程 1. 引言&#xff1a;AI 单目深度估计如何赋能电商视觉升级 在电商领域&#xff0c;商品的视觉呈现直接影响用户的购买决策。传统的2D图片难以传达产品的空间结构和真实比例&#xff0c;而3D建模成本高、周期长&#xff…

作者头像 李华