基于Arduino测量的“姆潘巴现象”
2016-09-10李守良张敬云谢作如
李守良 张敬云 谢作如
在同等体积和同等冷却环境下,温度略高的液体比温度略低的液体(非纯水)先结冰的现象,被称之为“姆潘巴现象”,这个现象以坦桑尼亚学生埃拉斯托·姆潘巴的名字命名。然而最近在网上看到的帖子却反映,温度略高的液体不一定比温度略低的液体先结冰。为了探究是否存在这个现象,我们决定使用Arduino和一些传感器相结合制作一个验证“姆潘巴现象”的装置,并使用该装置测量液体温度在不同时间上的变化,然后画出函数图像,观察不同温度的液体在冰箱里的温度是如何变化的。
“姆潘巴现象”实验装置的设计
在设计实验装置之前,我们需要确定实验器材。由于需要将器材放入密闭状态下的冰箱,所以必须使装置脱离电脑处于离线状态,因此我们首先需要解决数据的传输、保存问题。
既然是密封状态,我们不仅要放弃用数据线传输的方式,也不能考虑蓝牙、WiFi等方式,只能考虑如何将数据保存下来。当然,将一部手机或者树莓派和Arduino一起放进冰箱,似乎也是一种方案,但感觉有些大材小用。
既然不能实时传输,我们还可以选择保存。Arduino自带的空间肯定是不够用的。有一款EEPROM数据存储模块,是通过I2C总线来与Arduino进行连接,并且采用可插拔的芯片,是可行的方案。但是我们翻了翻创客空间的器材,发现了现成的SD卡模块,这比EEPROM方便得多,因为Mixly0.95已经增加了读写SD卡的功能(如表1)。
为了测量液体牛奶的实时温度,我们本来可以用普通的LM35温度传感器,用薄膜包一下做防水处理。但考虑到测量效果,最后还是买了2个防水的温度传感器。
综上所述,具体的“姆潘巴现象”装置连接图如图1所示,制作本品所需要的材料和说明如表2所示。
由于本装置需要放置在潮湿的冰箱中,我们需要将各种传感器和Ardunio封装起来,所以我们利用身边的3D打印机制作了一个封装模块(如图2),其实直接找个纸盒封装也是可以的。
代码编写
本次实验代码比较简单,无非是获取温度,然后写到SD卡中。很遗憾Mixly0.95还不支持DS18B20防水温度传感器,我们只好使用Arduino IDE来编写。相信大家看到这篇文章的时候,Mixly就能够支持防水温度传感器了。
具体的代码如图3所示,限于篇幅,我们去除了getTemp( )和getTemp01( )这两个函数代码。完整的代码将提供在谢作如的新浪博客上。
测试效果
为了测试实验效果,我们选择同样300ML,日常饮用的57度热纯牛奶放入-5℃的冰箱中,通过一段时间的观察后,将搜集到的数据从SD卡中复制到Excel中,制作出T-t的图像(如图4)。
通过实验我们发现,为了获得准确的实验结果,我们需要注意以下内容:①将各种装置连接好之后,务必要封装,以防止潮湿的冰箱环境对装置产生损害。②为了搜集到准确的数据,需要将防水温度传感器固定在纯牛奶中,在测量的过程中要确保不打开冰箱,以免影响测量效果。
其实,在真实的测量过程中,我们还发现了种种问题,如一开始使用口香糖电池,结果电池在冰箱一冻就没电了,白等了几个小时。而且我们发现在加电前要先插好SD卡,否则数据没法正常写入。
知识拓展
我们通过身边的工具完成一个传统物理实验并不是一件很难的事情,现在创客运动已经将电子技术、传感器技术的门槛降得很低。我们还可以通过数据采集去探究一些有争议的科学现象,关键是选择合适的传感器和简单的编程。因此开设相关课程,让学生学习一些传感器和编程知识是很有必要的。至于这个“姆潘巴现象”实验,我们还会继续用这个实验装置测量更多的数据,以深入探究背后有什么样的科学原理。