Raspberry Pi设置上的Max31865

时间:2017-07-05 16:50:42

标签: raspberry-pi3 rtd

我对编码很陌生。我试图通过我的Raspberry Pi 3读取PT100 rtd。我读到我需要Max31865 RTD放大器来正确读取数据,因为电阻非常小。我相当确定我已正确插入。  我使用此代码,只是稍加编辑。  https://github.com/steve71/MAX31865

我到目前为止得到了两个不同的输出,但它似乎与我改变的任何东西(主要与readTemp相关的字节)相关联,因为我已经运行了相同的代码两次并得到两个输出。产出如下:

config register byte: ff
RTD ADC Code: 32767
PT100 Resistance: 429.986877 ohms
Straight Line Approx. Temp: 767.968750 degC
Callendar-Van Dusen Temp (degC > 0): 988.792111 degC
high fault threshold: 32767
low fault threshold: 32767

config register byte: 08
RTD ADC Code: 0
PT100 Resistance: 0.000000 ohms
Straight Line Approx. Temp: -256.000000 degC
Callendar-Van Dusen Temp (degC > 0): -246.861024 degC
high fault threshold: 0
low fault threshold: 0

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

我正在处理同样的问题。您是使用带有3线或4线的Pt100吗?

我通过将原始代码(https://github.com/steve71/MAX31865)的第78行中的正确配置状态寄存器设置为0xA2来修复此问题

self.writeRegister(0, 0xA2)

我使用4线,所以我不得不将bit4从1(3线)更改为0(2线或4线)

0xb10100010

在此之后,我将此作为输出

config register byte: 80
RTD ADC Code: 8333
PT100 Resistance: 101.721191 ohms
Straight Line Approx. Temp: 4.406250 degC
Callendar-Van Dusen Temp (degC > 0): 4.406808 degC
high fault threshold: 32767
low fault threshold: 0

Brrr ......我房间里很冷,不是吗?为了解决这个问题,我不得不将第170行的参考电阻改为430欧姆

R_REF = 430.0 # Reference Resistor

很奇怪,因为我很多次都是红色,这个设备上安装了一个400欧姆的电阻作为参考。实际上,在SMD电阻上是一个3位代码“431”,意思是430欧姆。姆...

但是现在我在这里感觉很温暖和温暖

Callendar-Van Dusen Temp (degC > 0): 25.091629 degC

祝你好运

答案 1 :(得分:0)

你有没有解决这个问题?如果你没有,下面的python类方法适合我。我记得我在连接强制端子方面遇到了一些麻烦,从2线的存储器中你必须桥接两个强制端子。

def _take_Resistance_Reading(self):
    msg = '%s: taking resistance reading...' % self.Name
    try:
        self.Logger.debug(msg + 'entered method take_resistance_Reading()')
        with self._RLock:
            reg = self.spi.readbytes(9)
            del reg[0]                      # delete 0th dummy data
            self.Logger.debug("%s: register values: %s", self.Name, reg)           
            RTDdata = reg[1] << 8 | reg[2]
            self.Logger.debug("%s: RTD data: %s", self.Name, hex(RTDdata))
            ADCcode = RTDdata >> 1
            self.Logger.debug("%s: ADC code: %s", self.Name, hex(ADCcode))
            self.Vout = ADCcode
            self._Resistance = round(ADCcode * self.Rref / 8192, 1)
            self.Logger.debug(msg + "success, Vout: %s, resistance: %s Ohm" % (self.Vout, self._Resistance))
            return True
    except Exception as e: