4077| 6
|
[项目] 开学在即,DIY一款测体温儿童手表 |
随着国内疫情逐步得到控制,进入了4月,全国各省份也都陆续准备开学。疫情期间,口罩、体温枪等防护物资大火,在儿童智能穿戴领域中,一同广受市场欢迎的还有儿童体温手表,也就是可以测体温的儿童电话手表。 基于Arduino的测温手表 —————————————— 疫情的刚需 可以预见的是,可以测体温的儿童电话手表,将会是开学后的广受家长和学生欢迎的产品,儿童体温手表,不仅可以通话定位,还可以实时测体温,可以说安全、健康守护,无处不在。 ![]() 在测体温的儿童电话手表中,核心部件就是体温传感器,它决定着儿童体温手表测体温的结果是否精准,反应是否迅速。接下给大家讲解下我制作测温手表的一个过程,首先先观看制作视频。 制作过程 2、OLED显示屏 3、接触式热敏传感器 4、蜂鸣器 5、锂电池 6、杜邦线 7、3D打印文件 #热敏传感器 温度是我们经常接触到的物理量,能够被我们所直观的感受得到,例如天气凉了需要增添衣物,吃的食物太烫需要吹一吹,同时也需要对温度精确的测量,例如人类的正常体温是37.5℃,一个大气压下纯水沸腾时的温度是100℃,都需要我们去做实验来找出其中的科学。 热敏电阻是电阻值随温度变化的半导体传感器,其典型特点是阻值对温度非常敏感,在不同的温度下会表现出不同的电阻值,从而根据表现的电阻值可逆推导得到其所处的环境温度值。按照温度系数不同,可分为正温度系数热敏电阻(PTC)、负温度系数热敏电阻(NTC)和临界负温度系数热敏电阻(CTR)。PTC随着温度升高,表现出的电阻值越大; NTC随着温度升高,表现出的电阻值越低;CTR具有负电阻突变特性,在某一温度下,电阻值随温度的增加急剧减小,具有很大的负温度系数。由于具有不同的特性,热敏电阻的用途也是不同的。 ![]() NTC的使用方法 NTC的测量温度和其表现出的电阻值存在一个非线性的已知的关系,那么测量出NTC的电阻值也可以计算得到其测量的温度值。NTC的电阻值与温度值的关系如下所示: Rt = R x e^[B x (1/T1-1/T2)] 式中, Rt 是热敏电阻在T1温度下的阻值;R是热敏电阻在T2常温下的标称阻值;B值是热敏电阻的重要参数;T1和T2指的是K度即开尔文温度,K度=273.15(绝对温度) 摄氏度。逆向计算得到热敏电阻的温度值与电阻值的关系如下所示: T1=1/(ln(Rt/R) /B 1/T2 ) 电阻值的测量一般都是利用串联已知阻值的电阻并施加已知大小的电压,通过测量已知阻值的电阻上的分压值,来计算出得到被测电阻的阻值,如图3所示。设施加的激励电压为Eb,热敏电阻的阻值为Rt,串联电阻阻值为Rs,则串联电阻上的分压值为: Eout = Eb x Rs/(Rt Rs) 除了串联测量法之外,还有惠斯登电桥测量法,如图4所示。设电桥的激励电压为Eb,热敏电阻的阻值为Rt,电桥电阻阻值为R1、R2和R3,则电桥输出电压为: out = Eb x R3/(Rt R3) – Eb x R2/(R1 R2) = Eb x [R3/(Rt R3) – R2/(R1 R2)] 网络上找的公式 #OLED显示屏 术语OLED代表“有机发光二极管”,它使用与我们大多数电视机相同的技术,但与它们相比具有更少的像素。让这些酷炫的显示模块与Arduino接口真的很有趣,因为它会让我们的项目看起来很酷。本文中,我们使用的是单色4针SSD1306 0.96“OLED显示屏。此显示屏只能用于I2C模式。 ![]() OLED显示屏驱动库非常多,本篇我们使用两个库:「Adafruit_SSD1306」和「Adafruit_GFX」。在Arduino IDE中点击「项目」—「加载库」—「管理库」,分别查找选择最新版本进行安装。 ![]() #接线图 确定了元器件的作用后我们来看下接线图 ![]() #程序解析 热敏电阻计算公式 Rt = R *EXP(B*(1/T1-1/T2)) 对上式解释如下: (具体可以参考百度,很多的) 1. Rt 是热敏电阻在T1温度下的阻值; 2. R是热敏电阻在T2常温下的标称阻值; 3. B值是热敏电阻的重要参数; 4. EXP是e的n次方; 5. 这里T1和T2指的是K度即开尔文温度,K度=273.15(绝对温度)+摄氏度; 至于热敏电阻的用法,其实就是 串联一个阻值和它差不多(最好)的电阻,从而通过 分压比确定热敏电阻的阻值,从而确定测量温度(详情可百度,很多的)。程序设计的主要思路:Arduino Uno控制器通过模拟输入端口测量串联电阻上的电压值,然后通过电流相等的原理计算出热敏电阻的阻值,最后利用公式计算出温度值。 定义OLED头文件 [mw_shl_code=c,false]#include "U8glib.h" [/mw_shl_code] 根据讲解的公式计算出温度值 [mw_shl_code=c,false]float hq = 5.2*(analogRead(ntc))/1024 ; 大于37摄氏度,蜂鸣器报警 [mw_shl_code=c,false]if(temp>37.3) OLED显示屏上实时跟新数据 [mw_shl_code=c,false]u8g.setFont(u8g_font_fub20);//设置字体和自号,目前测试字号有fub14,17,20,30,49n #代码下载 关注微信公众号“KIDLINTEACH创客实验室”,回复“测温手表”获取完整代码以及图纸。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed