Arduino入门教程--第十课--用Arduino做简单温度计
arduino的用途伴随着传感器的种类有了无限的可能,今天我们就要用到套件里的一款传感器,LM35D温度传感器,这款传感器能够测量0-100摄氏度的温度,并以电压的数值输出。从0度开始温度每升高1度输出电压就会提高10mv,这样我们就能够使用模拟口检测传感器的电压,进过简单计算得到当前的温度数值了。实验材料
ocrobot mango(Arduino兼容控制板)1块
面包板1块
面包板专用跳线1盒
LM35D温度传感器 (千万别与三极管弄混了,温度传感器很贵的) 1枚
数据线1根
由上图我们就知道了如何连接lm35的引脚了
然后我们依据上图的定义来绘制实验用的电路连接图
好了。这样我们就能够依据电路图连接我们的硬件了。其实连接蛮简单的。。。给传感器供电,然后读取中间引脚的电压。
搭建好电路后,我们就来下载程序/*
作者:极客工坊-迷你强
时间:2012年6月26日
IDE版本号:1.0.1
发布地址:www.geek-workshop.com
作用:使用arduino模拟口测量室内温度
*/
void setup() {
Serial.begin(9600); //使用9600速率进行串口通讯
}
void loop() {
int n = analogRead(A0); //读取A0口的电压值
float vol = n * (5.0 / 1023.0*100); //使用浮点数存储温度数据,温度数据由电压值换算得到
Serial.println(vol); //串口输出温度数据
delay(2000); //等待2秒,控制刷新速度
}完成后大家就能够去测量各个地方的温度了
以下是我们的演示视频
http://player.youku.com/player.php/sid/XNDE5NTY3MTA4/v.swf 迷你强 发表于 2012-7-24 17:52 static/image/common/back.gif
对的。。。
0-100度 对应0-5v模拟口返回数值0-1024所以。模拟口的值 1=0.48828125
假如n=1023,那vol=1024*0.48828125=500度?
我觉得vol=n*100/1024=n*0.09766
当n=1024, vol=1024*0.09766=100度
提问:我运行的结果太诡异了,怎么测试自己的温度传感器是否坏掉了,测试结果如下:NUM是模拟口数值,TEM是换算的温度值,但是模拟口的数值i就够奇葩的了。
我想说只有三根线,我没接错。
求指教!!! void setup()
{
Serial.begin(9600);
}
void loop ()
{
int n=analogRead(A0);
float vol=n*(5.0/1023.0*100);
Serial.println (vol);
delay(2000);
}
为什么我的测出来感觉数据是随机的······最先以为把线连反了,但是一次是400至500,反过来就是20左右(现在温度绝对没20度!!),还出现很多0.00或者个位数,感觉是乱码,求解 ardiunoaihaozhe 发表于 2014-7-18 13:24 static/image/common/back.gif
请问能不能显示千分位
把Serial.println(vol)的函数改成Serial.println(vol,3)就能显示千分位了。
但感觉没有意义啊,这个传感器的参数表里写了,精度是0.5℃,显示得再精细,实际也不准确啊。。。 这个和DS18b20有什么区别? 18B20的接口是数据口输出,不是模拟口输出。 恩。18b20使用起来稍显复杂,涉及通讯协议。。。。 pt100是不是也和这个一样,是线性的,找个公式就行? Muller_r 发表于 2012-6-26 15:23 static/image/common/back.gif
这个和DS18b20有什么区别?
数字的出来的是方波,用脉冲方波和协议来通讯,
模拟的出来的是电压,利用AD转换(ARDUINO的模拟脚可以理解为就是数字脚+AD/DA转换模块,如果你需要大量的模拟脚但是不要求数字脚,可以直接外接AD/DA转换器来实现)来得到测量值并换算成温度 电源插头 发表于 2012-6-26 23:02 static/image/common/back.gif
pt100是不是也和这个一样,是线性的,找个公式就行?
PT100工业用多,是用来测量电阻阻值计算温度~~~~用法和这个也有区别。因为要精密测量电阻阻值,外围电路设计比较复杂。 darkorigin 发表于 2012-6-27 00:08 static/image/common/back.gif
数字的出来的是方波,用脉冲方波和协议来通讯,
模拟的出来的是电压,利用AD转换(ARDUINO的模拟脚可以理 ...
这个回答的很实在的说法,理论分析就是这样的! 电源插头 发表于 2012-6-26 23:02 static/image/common/back.gif
pt100是不是也和这个一样,是线性的,找个公式就行?
PT100是电阻变化,成非线性,要用很复杂的外围电路进行转化后在单片机中进行查表,所以,只适合工业用途。。自己玩貌似太复杂了 范例用热敏电阻是不是更简单点儿 lionelg 发表于 2012-6-27 16:21 static/image/common/back.gif
范例用热敏电阻是不是更简单点儿
热敏电阻只能得到温度变化,不能取得当前的具体温度读数 好资料谢谢分享 请问:
float vol = n * 0.48828125
这个数值是怎么来的?
0-100摄氏度对应0-5V?
ladywent 发表于 2012-7-24 15:52 static/image/common/back.gif
请问:
float vol = n * 0.48828125
这个数值是怎么来的?
对的。。。
0-100度 对应0-5v模拟口返回数值0-1024所以。模拟口的值 1=0.48828125
计算公式为 5V / 1024*100℃=0.48828125
计算器按出来的。。。