YFROBOT创客社区

标题: Arduino入门教程—基础实验篇八 温度传感器实验 [打印本页]

作者: AllBlue    时间: 2013-6-8 08:08
标题: Arduino入门教程—基础实验篇八 温度传感器实验
本帖最后由 AllBlue 于 2013-8-15 20:11 编辑


温度传感器实验

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

实验元件

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

LED红绿黄 各一枚

LM35温度传感器 一个

电阻220Ω 一枚

LM35是一种得到广泛使用的温度传感器。由于它采用内部补偿,所以输出可以从0℃开始。在常温下,LM35 不需要额外的校准处理即可达到±1/4℃的准确率。实物图如下:
[attach]345[/attach]
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 温度传感器的引脚示意图如下)
[attach]343[/attach]

LM35 温度传感器的工作原理

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

下图是电路图(将三色LED 灯正极依次接到D11、D10、D9 接口,负极分别通过一只220 欧姆的电阻接GND,再将LM35 接上正负极,输出脚接模拟口5):
[attach]480[/attach]

实验例程:

  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控制板中,看下你所在环境是否适合吧!!!你还可以用串口监视器来看下你所在环境的温度数值!!


作者: AllBlue    时间: 2013-9-7 16:16
本帖最后由 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 ;就可以得出温度值了
希望对你又帮助!


作者: AllBlue    时间: 2016-8-26 08:14
philis 发表于 2016-8-25 21:59
不知道与NTC电阻,哪个测温准确一些?

不同器件的精度不同,热敏电阻中也有高精度的,具体要看什么型号,查看厂家给的数据手册即可知道!
作者: tiantianyouyou    时间: 2019-5-1 19:53
Arduino入门教程—基础实验篇八 温度传感器实验




欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) Powered by Discuz! X3.1