基于arduino的感温杯!

2014-12-28附属中学
我们今天要做的是一个可以随着温度变化的而变色的感温杯,随着杯子里的水温不同,杯子的LED共会发出三种不同颜色,水温为0~35度时,蓝灯亮;水温在35~60度时,黄灯亮 ;水温在60度以上, 红灯亮;请看图:
 
 
 

杯子的颜色为什么会发生变化呢?我们之前学过arduino控制LED的课程,应该知道,那是因为里面有LED,我们用条件语句(IF  THEN)控制几个不同颜色LED的亮和灭即可。那么关键的问题就是,通过什么条件进行控制呢?arduino又如何知道水的温度呢?

    这就是本项目的关键原件:热敏电阻。热敏电阻顾名思义,会随着温度的改变发生阻值的变化。但阻值变化了,又如何能将这个信号反馈到电路当中呢?这里要用到一个分压电路:
 
                              分压电路原理图
 


         分压电路面包板视图

我们物理课学过,串联电路可以分压,在R1阻值不同时,加在两个原件上的电压是不同的。我们输入5V电压,当R1阻值变化时,热敏电阻一端的电压值会发生变化,我们再将这个电压值输入到A1即可。

A1是模拟端口,可以将输入的电压值(0v-5v)转化为数字(0-1023),电压越低,数字越低,电压越高,数字越高。这样我们的arduino就像有了热觉神经一样,可以感受到外界温度的变化了!

    这里还有一个问题,arduino接收到的信号我们怎么能够看得到呢?这里就需要用一个串口打印语句。其实非常简单,在ardublock里输入这行命令即可,但要注意模拟阵脚后面的数字要跟你接在电路当中的针脚对应上,如你接A1,就写模拟针脚1


     
编写好以后上传到arduino,注意如果上传不成功应该检查通讯端口(com)有没有设置好,或者重新插一下USB连线。如果上传成功并且之前的接线没有问题,点一下Serial Monitor即可看到以下界面了:


 

如果觉得更新太快了,可以在后面加一个时间延迟语句。另外Message那个英文可以替换成别的,自己试试吧。

这里的message就是对应的温度值,但注意不是实际的温度哦,所以接下来我们要搞清楚这个值和实际温度的关系。让我们来测量吧!如果你找出了几个关键温度值对应的数字,相信很多人就懂得怎么做这个感温杯了。

    最后给出参考程序和连线图,怎么设计你的感温杯还请大家认真思考一下!