提问

简易的:USB温度计

电子制作  / 电子制作  / 倒序浏览   © 著作权归作者本人所有

#楼主# 2017-2-9

跳转到指定楼层
   在温度的测量上方式有很多种,常见的就是热电偶与半导体。

先讲讲热电偶的测温原理。热电偶测量温度的一端(也就是那根金属棒子所在)叫做热端,导线接出的一端叫做冷端。热端引出两条导线通向冷端。当两端温度不等时,两条导线之间会产生一个电压差,这个电压差和两端的温度差近似地成正比。其电压差和温差的关系大约是41微伏每摄氏度,这个电压偏低,并不适合较低的温度,而且是需要温差才能测量,如果用于测量室温就不行。

相比之下半导体温度传感器就可以做到温度电压线性输出,在使用过程中方便很多,满足了标题“简易的”这个要求。其中传感器我使用了LM35。
制作之前查阅资料是必须的,不过很多文献都是英文的,个人认为英语的学习是非常重要的,特别是在深入研究中很多文献都只有英文。
LM35的PDF下载: lm35.pdf.pdf (2.19 MB, 下载次数: 0)

   其中LM35的封装形式有很多种,综合了购买难度和价格等因素之后我选择了TO-92封装的。 通过PDF我可以知道左边是电压输入,右边是接地,中间就是电压/温度的输出。

   既然说了是一种及其简易的温度计,于是我选择使用arduino,一种开源化的硬件与软件。正是因为其开源以及内置大量库文件,使得入门相比于其他的单片机容易了太多。这个温度计的电路连接就这么简单,我直接使用了Arduino Mega 2560的5V当做电源,使用自带的AD读取电压信息。


硬件介绍完毕了,现在讲讲软件部分。
通过PDF我们可以知道温度每提高1℃,电压高10mv,比热电偶的高很多。

   由于单片机是一种数字电路,并没有模拟值的检测功能,所以需要用到AD转换器将模拟信号转换成数字信号。其中AD的分辨率用的是位,也就是2的多少次方。以十位AD为例,也就是共有2的十次方种不同电压,分别是0到1023一共1024个整数。这款Arduino自带的AD就是一个十位的,电压为5V,也就是分辨率电压为4.88mV。
通过这个计算便可把这个数据转化为温度。温度=AD值*5/1023*100
   当然不光需要测量,更重要的是把温度数据显示出来。这里我用了串口输出功能,直接将计算好的温度数据通过串口展示出来。
右边是程序,左边便是通过串口显示的温度数据。


   懂得分享也是很重要的,自己的一点举手之劳可以方便周围很多的人。以下就是程序,我相信MT的朋友们这么聪明,靠后面的解释一定是可以看得懂程序的。

void setup() {
  Serial.begin(9600);//设置串口通信速率
}

void loop() {
float t;//设置温度t
t=analogRead(A0);//读取AD的电压值
t=t*(5.0/1023*100);//将电压信号换算为温度
Serial.println(t);//使用串口显示温度
delay(1000);//延时一秒,用于控制刷新速度
}
转播转播 分享淘帖
回复

使用道具

86

主题

261

帖子

5万

积分

准将

积分
52767
沙发
罗恩格林 发表于 2017-2-11 05:53:26
完蛋.....以后论坛上要出现膜禽党了.......
回复

使用道具 举报

0

主题

2

帖子

29

积分

列兵

积分
29
板凳
毛栗子 发表于 2017-3-15 23:05:40
这个简单,精度却没有18B20好
回复

使用道具 举报

B Color Link Quote Code Smilies

关于作者

Excited

上士

  • 主题

    6

  • 帖子

    18

  • 关注者

    1

Archiver|手机版|小黑屋|MakerTime 创客时代  
Powered by Discuz! X3.3  © 2001-2017 Comsenz Inc.