“影象杯垫”是我利用身边的材料制作的,杯垫材料是一张光盘,导热材料是硬币,用502胶水和加厚双面胶粘合,制作起来十分大略。
这个作品的设计初衷是源自个人的生活履历,希望和我有着一样烦恼的“技能宅”们会喜好这个设计。笔者作为“职业码农”,常常碰着这样的困扰:早上冲好的咖啡,放着放着就凉了;同事胃不好,须要喝温水,可一忙就忘却了……想必每个人都有这样的经历,这次的设计,便是给大家办理这一问题——可以及时提醒人们饮用热饮。喜好喝热饮的朋友,往后不必再由于冷却的热饮而苦皱眉头了!
“影象杯垫”能实现以下功能:当我们把装有温度较高液体的杯子放到杯垫上时,杯垫上安装的温度传感器开始丈量杯子的底部温度,只要杯子不是隔热材料的,那么杯子的表层温度就会和里面的液体温度成正比,当杯子内的液体降到了适宜人的饮用习气时,此时按下“影象键”,杯垫就将永久记录下此时的杯子底层温度;当利用者再次将装有热饮的杯子放在杯垫上时,液体在降温过程中,只要杯子的底层温度与之前影象的温度靠近,杯垫就可以根据设计者的哀求提示主人饮用,比如通过闪烁灯提示或者通过音乐提示。
事情事理这次设计的核心便是环绕温度传感器DS18B20和单片机EEPROM的运用。
DS18B20采集温度,单片机卖力数据的处理,当有温度须要记录时,单片机将待记录温度存储到单片机EEPROM中;当EEPROM中有了温度记录后,单片机将采集到的数据与EEPROM中数据随时进行比较,当数据靠近时,就会做出相应输出,开启提示功能。
当下次冲好了一杯咖啡,就可以把杯子放到杯垫上面了,温度传感器会将采集到的温度T值与EEPROM里的数值A做比较,当A-1 < T < A+1 时,杯垫侧面的8个发光二极管就会闪烁,以此来提示主人喝咖啡或水。
温度的差值也可以根据设计者的须要自行改变,比如在比较寒冷的地区,T与A的差值可以通过改变程序来实现。笔者在南方,实际测试的时候创造T与A的值在±1之间就可以了。
影象键在向单片机记录温度数据的时候,也会擦除之前的数据,这样一个按钮就可以完成须要的操作。
国产的STC单片机大多数都自带了一定大小的EEPROM,这就给设计者带来了极大的方便。为了让电路更加简洁,这次选用的是STC11F04E的1T单片机,其具备4KB的程序存储空间和1KB的EEPROM空间,20引脚的封装设计大大减小了PCB面积。图15.1为电路事理图,制作解释见图15.2、图15.3。
图15.1 电路事理图
图15.2
图15.2 光盘中间的圆孔用来放置温度传感器,上面用金属片导热材料固定,并涂上硅脂,增加导热效果,由于大多数杯子底部是凹进去的,也可以用硬币这种有一定厚度的材料导热。
图15.3
图15.3 杯垫的背面,用双面胶(电工固定线盒那种)粘住电池盒、电路板、流水灯,温度传感器已经粘在电路板下面了
程序设计这里要作出解释的是,大多数DS18B20程序代码都是为12T单片机设计的,而1T单片机指令速率要比12T单片机快很多,这就导致了常日的DS18B20程序不能直接拿来调用。笔者根据STC的官方资料,通过打算指令外加逻辑剖析仪测试的办法,得出的结论是,11系列的1T单片机指令要比12T单片机快6.5倍旁边,根据这个数据来修正原始DS18B20程序的延时程序和EEPROM程序,就能担保系统的稳定性。
STC绝大多数芯片都集成了EEPROM,不同型号的擦写程序也是大同小异,利用起来十分方便,无需额外EEPROM的IC,更不须要IC通信程序。由于是内部集成的,程序代码大略,很好理解,节约了设计本钱的同时,也给运用者节约了程序设计韶光。
STC的官方资料很明确地给出了EEPROM的原始程序,笔者根据自己的理解,为使程序更加简洁,对官办法式作了一些改动,运用了C措辞的宏定义,自己也做了对应的库文件,方便实用。本程序是在Keil环境下编译的,利用时要添加我自己写的basic.h、STC11Fxx_IAP.h文件,同时要下载官方的单片机库文件,这样方可担保程序的精确编译。
本制作的干系源文件可以到qq群657864614进行下载。
先容一个分歧凡响的淘宝店铺:首页-数码达人小二-淘宝网,不信你试试?