树莓派论坛

 找回密码
 立即注册

温度传感器显示有问题

marvel 发表于 2012-9-22 22:26:06 | 显示全部楼层 |阅读模式
我的方案是这样的:
电脑----arduino----温度传感器,这样显示比较正常,比如24度

但是如果用树莓派:

树莓派---arduino--温度传感器,感觉度数明显上升了好几度,比如27.8度

而如果用树莓派连9v供电的arduino,温度是26.8度,又不一样了

请问这是什么原因引起的呢?我是用树莓派的下面那个usb供电,应该也是5v吧?为什么会出现不准确的情况呢?应该如何解决

因为我现在没有万用表,无法确定到底有几伏,请教一下大家正常应该怎么测量温度呢?
senin 发表于 2012-9-22 23:09:19 | 显示全部楼层
不会是基准电压的问题吧?
ukonline2000 发表于 2012-9-22 23:54:58 | 显示全部楼层
你用的什么温度传感器?什么接口的?
marvel  楼主| 发表于 2012-9-24 13:02:35 | 显示全部楼层
温度传感器是lm35,vcc,vout和gnd三个接口

//usb口的电压不是都是5v左右的吗
ukonline2000 发表于 2012-9-24 15:05:30 | 显示全部楼层
@marvel   现在差不多能确认得你问题了!
首先LM35为NS(国家半导体)公司的生产的温度传感器,这个传感器为模拟输出,通过模拟输出电压来确定温度,温度每升高一度输出电压提高10mV!
因此LM35的Vout为模拟输出,是不能和树莓派的gpio连接的,和供电没关系,原因是树莓派的GPIO没有模拟输入输出功能,没法做为模拟输入检查电压!
我想你用它和arduino连接的时候,Vout应该是也连接的arduino的A0-A5这些管脚吧!
如果你想检测温度,建议是用DS12B80,一线温度传感器,非模拟传感器
以下是我实现的教程,希望对你有帮助
http://www.shumeipai.net/read.php?tid=711
marvel  楼主| 发表于 2012-9-24 15:41:45 | 显示全部楼层
谢谢u大,你说的“树莓派的GPIO没有模拟输入输出功能”,那也就是说树莓派连接arduino,是没法用所有的模拟信号的传感器了吗?包括热感等?

我看DS12B80淘宝上卖的不多,这个是数字传感器,还是需要插lm35的控制器呢?

此外,我注意到有人用ADC模块,这个是否可行呢?http://hackaday.com/2012/07/28/r ... h-the-raspberry-pi/
marvel  楼主| 发表于 2012-9-24 16:15:48 | 显示全部楼层
还有一个问题:虽然树莓派不支持模拟信号,但是arduino可以读出模拟值,然后传输的过程应该是数值型的吧?不应该有问题呀
ukonline2000 发表于 2012-9-24 16:17:51 | 显示全部楼层

回 marvel 的帖子

marvel:谢谢u大,你说的“树莓派的GPIO没有模拟输入输出功能”,那也就是说树莓派连接arduino,是没法用所有的模拟信号的传感器了吗?包括热感等?

我看DS12B80淘宝上卖的不多,这个是数字传感器,还是需要插lm35的控制器呢?

此外,我注意到有人用ADC模块,这个是否可行呢?http://hac .. (2012-09-24 15:41) 
不好意思我写错了是“DS18B20”,淘宝上很多的,也很便宜,10元以内吧
ADC可以实现,但是麻烦了一点,我做了一个树莓派上兼容arduino的扩展板,就是这样实现的
http://www.shumeipai.net/read.php?tid=780
ukonline2000 发表于 2012-9-24 16:19:58 | 显示全部楼层

回 marvel 的帖子

marvel:还有一个问题:虽然树莓派不支持模拟信号,但是arduino可以读出模拟值,然后传输的过程应该是数值型的吧?不应该有问题呀 (2012-09-24 16:15) 
不太理解你的意思,arduino读出的值是电压值,需要通过换算才能得到温度值
marvel  楼主| 发表于 2012-9-24 16:27:31 | 显示全部楼层

回 ukonline2000 的帖子

ukonline2000:不太理解你的意思,arduino读出的值是电压值,需要通过换算才能得到温度值 (2012-09-24 16:19) 
嗯,我看了你的板子,不过需要另外的硬件,比较麻烦,呵呵。

我是直接通过arduino读出传感器的模拟值,然后进行换算:

    val=analogRead(potPin);// 读取传感器的模拟值并赋值给val
    dat = val*0.48828125;
    delay(100);
    Serial.println(dat);//输出显示dat 的值

而且,我用手捂一下传感器,确实温度是增加的,可见模拟值是读得出来的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )