news 2026/4/18 8:01:41

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/4/18 2:40:53

实战解析:1688详情api商品sku、主图数据

1688 商品详情 API 的 SKU 与主图数据&#xff0c;是大多数选品、铺货、比价系统首先要啃下的两块“硬骨头”。下面用一条完整的实战链路&#xff0c;把“拿到商品 ID → 拉出 SKU → 拖走主图”过程中最容易踩的坑、最实用的代码、以及返参里那些看似人畜无害却暗藏杀机的字段…

作者头像 李华
网站建设 2026/4/15 19:16:31

Qwen3-VL-WEBUI核心优势揭秘|附多模态训练实践案例

Qwen3-VL-WEBUI核心优势揭秘&#xff5c;附多模态训练实践案例 1. 引言&#xff1a;为何Qwen3-VL-WEBUI值得开发者关注&#xff1f; 随着多模态大模型在视觉理解、图文生成和跨模态推理等领域的快速演进&#xff0c;阿里推出的 Qwen3-VL-WEBUI 镜像为开发者提供了一站式部署与…

作者头像 李华
网站建设 2026/4/18 2:53:39

零代码玩转AI分类:云端GPU可视化工具,鼠标拖拽就出结果

零代码玩转AI分类&#xff1a;云端GPU可视化工具&#xff0c;鼠标拖拽就出结果 1. 为什么市场专员需要AI分类工具 作为市场专员&#xff0c;你可能经常需要分析竞品数据、客户反馈或市场调研结果。传统方法需要手动整理Excel表格&#xff0c;用筛选和条件格式做简单分类&…

作者头像 李华
网站建设 2026/4/13 13:51:54

中文命名实体识别怎么搞?这个镜像直接开箱即用

中文命名实体识别怎么搞&#xff1f;这个镜像直接开箱即用 在自然语言处理&#xff08;NLP&#xff09;的实际应用中&#xff0c;命名实体识别&#xff08;Named Entity Recognition, NER&#xff09; 是信息抽取的核心任务之一。它能够从非结构化文本中自动识别出具有特定意义…

作者头像 李华
网站建设 2026/4/13 7:29:19

计算机专业被预警26次跌落神坛,这33个新专业正在闷声发大财

【收藏】计算机专业被预警26次跌落神坛&#xff0c;网络安全等新专业正在闷声发大财&#xff0c;程序员必看&#xff01; 多地教育部门发布本科专业预警名单&#xff0c;计算机科学与技术专业成为"重灾区"&#xff0c;被8个省市点名预警&#xff0c;打破了其"金…

作者头像 李华