设为首页收藏本站

arduino 单片机机器人爱好者之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9428|回复: 7

Arduino入门教程—基础实验篇八 温度传感器实验

[复制链接]

签到天数: 511 天

[LV.9]以坛为家II

发表于 2013-6-8 08:08:39 | 显示全部楼层 |阅读模式
本帖最后由 AllBlue 于 2013-8-15 20:11 编辑


温度传感器实验

生活中随处可见温度控制的例子,像电冰箱,热水器等等。如果没有温度的控制,那后果不堪设想。今天我们就运用一种温度传感器(LM35)来做一个温度指示灯实验。

实验元件

UNO 实验套装(UNO兼容板一块、USB数据线一根、优质面包板一块、彩色面包板线若干)

LED红绿黄 各一枚

LM35温度传感器 一个

电阻220Ω 一枚

LM35是一种得到广泛使用的温度传感器。由于它采用内部补偿,所以输出可以从0℃开始。在常温下,LM35 不需要额外的校准处理即可达到±1/4℃的准确率。实物图如下:
LM35.jpg
LM35 的规格参数

1、工作电压:直流4~30V;

2、工作电流:小于133μA

3、输出电压:+6V~-1.0V

4、输出阻抗:1mA 负载时0.1Ω;

5、精度:0.5℃精度(在+25℃时);

6、漏泄电流:小于60μA;

7、比例因数:线性+10.0mV/℃;

8、非线性值:±1/4℃;

9、校准方式:直接用摄氏温度校准;

10、额定使用温度范围:-55~+150℃。

11、引脚说明:①电源负GND;②电源正VCC;③信号输出S;(LM35 温度传感器的引脚示意图如下)
LM35引脚示意图.jpg

LM35 温度传感器的工作原理

LM35 温度传感器的输出电压与摄氏温标呈线性关系,0℃时输出为0V,每升高1℃,输出电压增加10mV,计算公式如下:

公式

公式

下图是电路图(将三色LED 灯正极依次接到D11、D10、D9 接口,负极分别通过一只220 欧姆的电阻接GND,再将LM35 接上正负极,输出脚接模拟口5):
温度传感器.jpg

实验例程:

  1. /*
  2. LM35温度控制
  3. 温度大于25度,红灯亮,温度在18度到25度之间,绿灯亮,小于18度,黄灯亮
  4. */

  5. #define LED_R 11 //定义三色灯引脚
  6. #define LED_G 9
  7. #define LED_Y 10
  8. int val; //定义变量val储存模拟口5返回值

  9. void setup(){
  10. pinMode(LED_R,OUTPUT); //定义三个LED灯引脚为输出
  11. pinMode(LED_G,OUTPUT);
  12. pinMode(LED_Y,OUTPUT);
  13. }

  14. void loop(){
  15. val = analogRead(5); //读取模拟口5的值
  16. if(val >= 51) //温度大于25度,点亮红灯
  17. {
  18. digitalWrite(LED_R, HIGH);
  19. digitalWrite(LED_G, LOW);
  20. digitalWrite(LED_Y, LOW);
  21. }
  22. else if(val>37 && val<51) //温度小于25度大于18度,点亮绿灯
  23. {
  24. digitalWrite(LED_R, LOW);
  25. digitalWrite(LED_G,HIGH);
  26. digitalWrite(LED_Y, LOW);
  27. }
  28. else //温度小于18度,点亮黄灯
  29. {
  30. digitalWrite(LED_R, LOW);
  31. digitalWrite(LED_G, LOW);
  32. digitalWrite(LED_Y,HIGH);
  33. }
  34. }
复制代码

我们要用红绿黄三色灯来做温度的提示,红色代表温度过高,设定温度为大于等于25℃ ; 绿色为适宜温度, 设定温度范围为18℃~25℃;黄色为温度过低,设定温度为小于等于18℃。

根据LM35 温度传感器的工作原理,我们要读取模拟5 口的电压值,0V~5V 对应数值0~1023,我们可以简单换算一下,当温度18℃,对应数值约为37;当温度25℃时,对应数值大约为51。

将程序烧写到UNO控制板中,看下你所在环境是否适合吧!!!你还可以用串口监视器来看下你所在环境的温度数值!!

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2013-9-7 01:54:26 | 显示全部楼层
  我没有读过高中。。。可能会问一些很蛋疼的问题,不过还是希望可以得到帮助。

在你上述教程中的温度转换  确实和很不明白。

arduino板子的annalog变量输入值为(0-1023)

LM35电压输出为(-550mv-1500mv)

输入口的电压为(0-5000mv)
1500/5000=0.3
1023*0.3=341

电压有效值比例:0-1500mv:0-341

得出比例  0.2273333333:1

我这边获取的数字量是60

60*0.2273333333=13.64mv

13.64/10=1.364℃

我这里是南方。。实际温度估计30左右吧。

请问我这种算法逻辑上有什么问题吗?如何利用 获取的模拟量数据转换成 我们需要的温度?
回复 支持 反对

使用道具 举报

签到天数: 511 天

[LV.9]以坛为家II

 楼主| 发表于 2013-9-7 16:16:40 | 显示全部楼层
本帖最后由 AllBlue 于 2013-9-7 16:24 编辑
feel 发表于 2013-9-7 01:54
我没有读过高中。。。可能会问一些很蛋疼的问题,不过还是希望可以得到帮助。

在你上述教程中的温 ...

额额,你的算法我有点看不太懂~~;(不知道和LM35的输入电压输出电压有什么关系)
根据公式,这个的算法很简单:T(℃) = (60*(5000/1023))/(10) = 29.3 ℃ 这个值应该差的不太多~
我们将得到的数值转换为电压值:60/1023=V/5000 ,V = 293.2mv;
然后再根据公式:V = 10 / T ;就可以得出温度值了
希望对你又帮助!

回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2013-9-9 07:25:25 | 显示全部楼层
由于没有万用表啊,只能靠意淫嘛。。
我这个错了是把 比例算的基率算错了...  我算成是1023/5000了

谢啦!
回复 支持 反对

使用道具 举报

签到天数: 3 天

[LV.2]偶尔看看I

发表于 2016-7-24 02:53:59 | 显示全部楼层
由于没有万用表啊,只能靠意淫嘛。。
我这个错了是把 比例算的基率算错了...  我算成是1023/5000了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-8-25 21:59:30 | 显示全部楼层
不知道与NTC电阻,哪个测温准确一些?
回复 支持 反对

使用道具 举报

签到天数: 511 天

[LV.9]以坛为家II

 楼主| 发表于 2016-8-26 08:14:34 | 显示全部楼层
philis 发表于 2016-8-25 21:59
不知道与NTC电阻,哪个测温准确一些?

不同器件的精度不同,热敏电阻中也有高精度的,具体要看什么型号,查看厂家给的数据手册即可知道!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|联系我们|YFRobot ( 苏ICP备13017135  

GMT+8, 2017-12-12 02:50 , Processed in 0.202393 second(s), 30 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表