最新消息:

用Arduino研究热水与冰在室温下的温度变化

Arduino 少儿编程 2405浏览 0评论

通常情况下,我们采用红液温度计测量热水或冰在室温下的温度变化,通过每间隔一段时间进行一次读数来获取温度的变化规律。但是,热水在室温下的自然冷却过程与冰在室温下的自然融化过程都较为缓慢,实验的持续时间长,操作者要每间隔一个特定的时间进行一次温度计的读数,耗时耗神。借助Arduino与DS18B20温度传感器,我们可以将实验操作者从繁琐单调的计时、读数操作中解放出来,实现时间和温度数据的自动化测量与记录。

 

1. 实验材料

表 1材料清单

Arduino UNO
传感器扩展板
DS18B20温度传感器
裸头线转杜邦线模块
microSD卡模块
microSD卡
读卡器
按键模块
有源蜂鸣器

 

2.实验方案

图1所示的DS18B20温度传感器是一种常用的高精度、高可靠性的温度传感器,它的测温范围是-55℃~125℃,在-10℃~85℃范围内其精度为±0.5℃。由于图1所示的DS18B20温度传感器引线所能承受的温度上限在85℃左右,故使用下图所示的温度传感器时建议的测温范围是-10℃~85℃。

用Arduino研究热水与冰在室温下的温度变化

图1DS18B20温度传感器

DS18B20温度传感器的三根输出引线分别为黄色(DATA)、红色(VCC)、黑色(GND),我们通过裸头线转杜邦线模块将其与Arduino传感器扩展板的3号口相连。由于防水的DS18B20温度传感器需要接一个上拉电阻才能正常使用,所以我们将转接器上的跳线帽切换至上拉电阻位置,如图2所示。

用Arduino研究热水与冰在室温下的温度变化

图2温度传感器与转换模块连接

为了将温度传感器获得的数据及时保存起来,我们通过microSD卡模块将数据及时储存到microSD卡中,microSD卡模块与microSD卡如图3所示。

用Arduino研究热水与冰在室温下的温度变化

图3microSD卡模块与microSD卡

microSD卡采用SPI协议与Arduino进行通信,Arduino的SPI接口与管脚号的对应关系如下表所示。

表 2Arduino SPI接口与管脚号对应关系表

Arduino UNO SPI接口

MOSI

MISO

SCK

SS

Arduino UNO管脚号

11

12

13

10

故microSD卡模块的引脚与Arduino UNO管脚的连接关系如下表所示,读者可以根据下表的对应关系进行连接。

表 3microSD卡模块引脚与Arduino UNO管脚连接关系表

microSD卡模块

MOSI

MISO

SCK

SS(CS)

VCC

GND

Arduino UNO管脚号

11

12

13

10

VCC

GND

笔者使用的Arduino传感器扩展板上提供了专门的SD卡模块插口,但由于笔者使用的这款microSD卡模块引脚与扩展板上提供的SD卡模块插口线序不一致,不能直接插接,故采用杜邦线进行相应接口的连接。

我们在Arduino的4、5号管脚分别连接黄、红色按键模块,用于对程序进行控制,之所以选择两个按键模块,是为了降低程序设计难度,简化程序。在6号口连接一有源蜂鸣器,用于发出提示音。

图4是以测量冰块温度为例的完整实验装置图,由于笔者所在的小区最近经常停电,故为Arduino提供了备用电池,即使停电后笔记本电脑电量耗光,Arduino也能够在备用电池的支持下测量温度并将数据存储在microSD卡中。

用Arduino研究热水与冰在室温下的温度变化

图4实验装置

编写程序如图5~图7所示。图5中声明变量t用于储存以分钟为单位的测量时间,声明变量Temp用于储存测得的温度值。图6中程序初始化部分采用定时器中断,每隔60000ms即1分钟进行一次温度测量、串口打印和储存,按下4号口的按键之后定时器启动。图7中的程序loop部分主要用于检测与5号口相连的按键是否按下 ,如果按下则停止检测。

用Arduino研究热水与冰在室温下的温度变化

图5声明变量

用Arduino研究热水与冰在室温下的温度变化

图6程序初始化部分

用Arduino研究热水与冰在室温下的温度变化

图7程序loop部分

实际操作时,按下连接在4号口的黄色按键时,蜂鸣器发出“嘟”的提示音,1分钟后开始温度检测,每隔1分钟Arduino都会将以分钟为单位的时间值和通过传感器检测到的摄氏温度值储存在SD卡中,如果在电脑端打开了串口监视器,相关数据还会在串口监视器中打印出来;按下红色按键,结束程序,蜂鸣器发出“嘟嘟”声作为提示。

 

3.研究热水在室温下的自然冷却

准备一杯温度小于85℃的热水,将DS18B20温度传感器的探头置于水中,将传感器固定好,使探头既不接触杯壁也不接触杯底,如图8所示。按下黄色按键,温度检测程序开始运行,操作者无需守候在装置旁,一段时间之后,按下红色按键停止检测。过程中室温基本稳定在19.5℃。

取出SD卡,通过读卡器插接到电脑的USB接口,我们可以看到SD卡中有一个名为“TEMP.TXT”的文件,打开之后我们可以看到文件中储存的检测数据,共216组数据。将这些数据导入到Excel中,生成曲线图如下图所示。

用Arduino研究热水与冰在室温下的温度变化

图8热水在室温下的温度变化曲线图

从图中我们可以发现,热水温度下降的速度越来越缓慢,其温度越来越接近室温。

 

4. 研究冰在室温下融化的温度变化

为了测量冰块在融化过程中的温度变化,将DS18B20温度传感器的探头置于装有冰块的杯中,让冰在室温下自然融化,如图所示。

一段时间后,将获得的数据导入到Excel中生成曲线图如下图所示。

用Arduino研究热水与冰在室温下的温度变化

图9冰融化过程中的温度变化曲线图

我们发现,从开始测量之后的三分钟内测得的温度持续下降,这实际上是由于传感器探头的初始温度高于冰块的温度,而热传导需要一定的时间,最终测得冰块的最低温度为零下8.5℃;3分钟至26分钟时冰块的温度迅速上升至0℃;第26分钟时冰开始融化,且在第26分钟至第56分钟之间温度基本稳定在0℃,第57分钟至第227分钟之间冰块仍然在继续融化,杯中的液态水越来越多,温度探头已接触到液态水,此时测得的温度基本稳定在0.5℃;第227分钟后,冰块已完全融化,温度持续上升,但温度上升的速度越来越缓慢。

 

5.研究冰中加盐后的温度变化

在冰块中加入食用盐后,冰块的温度会怎样变化呢?

如图10所示,将冰块置于杯中,测得冰块的最低温度为零下7.5℃,第4分钟开始温度持续上升,至第19分钟时温度达到0℃,之后稳定在0℃。在第28分钟时向杯中加入一些食用盐,温度迅速下降,在第33分钟时降至最低温度零下13.5℃,之后温度缓慢上升。

用Arduino研究热水与冰在室温下的温度变化

图10冰中加盐后的温度变化图

我们发现,冰中加盐之后确实可以让冰块的温度大大降低。

 

6.总结讨论

通过一系列实验,我们深刻地感受到Arduino与数字化传感器为我们采集实验数据所带来的便利。使用DS18B20温度传感器,我们可以方便地测量温度,使用SD卡可以及时储存实验数据,极大地节省了人力成本和时间成本。

在研究冰块融化过程中的温度变化时,我们测得冰块在刚开始融化的一段时间内温度稳定在0℃,随着冰块的融化,杯中液面逐渐上升,当液态水与传感器探头接触时,温度稳定在0.5℃。这与“冰水混合物的温度为0℃”这一规定并不完全吻合,为什么会发生这种状况呢?这是由于冰块在融化过程中需要从外界不断吸热,吸收的热首先导致冰块四周的水温升高,冰块再从水中吸热继续融化,过程中水温总是略高于冰的温度,所以实际测得的冰水混合物的温度略高于0℃。

我们通过一个简单的实验证实了在冰中加盐会让冰块的温度显著降低,关于冰盐温度降低的原理读者可以继续探讨,感兴趣的读者还可以继续研究冰盐温度的降低程度与冰、盐混合比例的关系。

转自公众号:
皓云工作室

您必须 登录 才能发表评论!