温度传感器/ w Raspberry Pi 3

时间:2017-11-04 08:03:04

标签: python raspberry-pi3

我正在尝试制作一个温度传感器。问题是:我连接了传感器(5V的VCC,接地的GND和高级用的OUT(我猜的是传感器)。现在的问题是,我使python文件工作,但它不是真正的温度和电压它连续显示我-50,即使我试图加热他仍然-50。这是python代码:

import spidev
import time
spi = spidev.SpiDev()
spi.open(0,0)

def readadc(adcnum):
    if ((adcnum > 7) or (adcnum < 0)):
        return -1
    r = spi.xfer2([1,(8+adcnum)<<4,0])
    adcout = ((r[1]&3) << 8) + r[2]
    return adcout

while True:
    for adcInput in range(0,8):
        value = readadc(adcInput)
        voltage = value * 3.3
        voltage /= 1024.0
        tempCelsius = (voltage-0.5)*100
        print "---------------------------"
        print "ADC(", adcInput,")= ", value
        print "---------------------------"
        print "Voltage: ", voltage
        print "---------------------------"
        print "Temp: ", tempCelsius
    time.sleep(1)

现在问题是,什么可能导致这个问题;传感器或代码的设置?我把#coding UTF-8还是-50。我是编码的新手,我真的找不到如何修复它。

P.S。 :我正在使用Raspberry Pi 3 2015

3 个答案:

答案 0 :(得分:0)

你说你把OUT连接到引脚28.正如我在你的代码中看到的那样,你正在使用一个与SPI接口的ADC。 SPI是同步的,只连接OUT数字PIN:时钟引脚未命中。

你有这样的屏蔽(带SPI接口的ADC)吗?您的树莓必须读取一些模拟值(树莓上没有adc)。

答案 1 :(得分:0)

实际上,无法读取树莓派中的模拟输入,您需要使用电子电路来读取信息。 例如,MCP3008是一款低成本8通道10位模数转换器。 https://learn.adafruit.com/raspberry-pi-analog-to-digital-converters/mcp3008https://learn.adafruit.com/raspberry-pi-analog-to-digital-converters/overview

答案 2 :(得分:0)

你正试图从Pi读取模拟信号 - 另一种用法说:如果没有ADC,这是不可能的。我建议使用Arduino板并通过串口读取Arduino中的值。 Arduino有一个庞大的模拟信号处理数据库,所以我总是先推荐它。我写了一篇关于如何做到这一点的博客文章,看看它(如果你感兴趣的话):

Datalogging with Arduino and pySerial on a Raspberry Pi