有个网友提出一个需求“做一个能够显示温度的奶瓶。奶瓶泡好奶后放在底座上,可直接给婴儿喝的绿灯亮,过烫红灯亮,过凉蓝灯亮。”这是他的一个作业,然后我就帮着做了一下。整体思路就是直接使用上一次做的那个红外温度计的方案,我想这样的方案恐怕在网上都是独一无二的吧。
使用到的基本元件有:Arduino Uno + LED + 红外温度传感器(上面有一个激光头用于瞄准)
使用红外温度传感器能够获得下列优点:
1.无需接触,不必考虑卫生的问题
2.准确度在可以接受的范围内
3.速度快,对准之后马上显示
4.兼容性好,各种型号的奶瓶都可以
缺点:
1.贵
2.有人说无法精确得知瓶中奶的温度,测量的是奶瓶温度而已
#include <Arduino.h> #include <Wire.h> #include "TN901.h" TN901 tn; int RedLed=10; //Red Led Pin10 int GreenLed=7; //Green Led Pin10 int BigRedLed=4; //Big Led Pin4 void setup() { Serial.begin(9600); tn.Init(13,12,11); //初 始 化 data clk ack pinMode(RedLed,OUTPUT); digitalWrite(RedLed,LOW); pinMode(GreenLed,OUTPUT); digitalWrite(GreenLed,LOW); pinMode(BigRedLed,OUTPUT); digitalWrite(BigRedLed,LOW); } void loop() { tn.Read(); SerialValue(); delay(2000); } void SerialValue() { String s; s=">O"+String(tn.OT, DEC)+"E"+String(tn.ET,DEC)+"<"; Serial.println(s); if (tn.OT>5000) { // Temp too high digitalWrite(RedLed,HIGH); digitalWrite(GreenLed,LOW); digitalWrite(BigRedLed,HIGH); } else { if (tn.OT>2100) {// Temp is OK digitalWrite(RedLed,LOW); digitalWrite(GreenLed,HIGH); digitalWrite(BigRedLed,HIGH); } else { //Temp is too Low digitalWrite(RedLed,HIGH); digitalWrite(GreenLed,HIGH); digitalWrite(BigRedLed,LOW); } } }
设计上我们使用了2个LED,一个是小LED双色红色和绿色,一个是单独的大个红色的(手边只有这两种LED,更好的设计应该换个颜色的LED便于区分)。温度传感器是红外温度传感器。
温度区间:
>50 小LED的红色亮起 表示温度过高
50-20 小LED的绿色亮起 表示温度适合
<20 大红色LED亮起 表示温度过低 工作时的视频 首先展示一下电路,然后我们有一瓶大瓶冷水;放在上面的时候温度过低,大红色 LED亮起;然后我们换成奶瓶,其中是热水,温度过高,小红色LED亮起;然后我们将大瓶子的水兑到小瓶子中,温度会变得适中,于是小LED绿色会亮起。
这个方案对于作业来说应该是足够了。就是这样。