From b51e2c222ddfe14de11b8756eaabb7d32c9dcafa Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sun, 5 May 2019 11:16:19 +0000 Subject: [PATCH] [Max31865] - reduce SPI speed to 50 kHz - in case of fault, return lastt known temp value git-svn-id: http://moon:8086/svn/projects/HendiControl@289 fda53097-d464-4ada-af97-ba876c37ca34 --- Control/brewpi/max31865.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Control/brewpi/max31865.py b/Control/brewpi/max31865.py index 2d676dd..99678bc 100755 --- a/Control/brewpi/max31865.py +++ b/Control/brewpi/max31865.py @@ -1,5 +1,6 @@ #!/usr/bin/python3 +import time import spidev from atemperatureSensor import ATemperatureSensor @@ -11,11 +12,13 @@ class Max31865(ATemperatureSensor): # Open SPI bus self.spi = spidev.SpiDev() self.spi.open(0, 0) - self.spi.max_speed_hz = 100000 + self.spi.max_speed_hz = 50000 self.spi.mode = 0b01 - self.write_reg(0x00, 0xA3) self.temp_correction = -0.2 - + self.write_reg(0x00, 0xA3) + time.sleep(0.100) + self.digits = 0 + def read_reg(self, addr): reg = self.spi.xfer([addr, 0xFF]) @@ -27,16 +30,20 @@ class Max31865(ATemperatureSensor): def read_digits(self): msb = self.read_reg(0x01) lsb = self.read_reg(0x02) - self.write_reg(0x00, 0xA3) - digits = float(256*msb + lsb)/2 + if (lsb & 0x01 == 0x00): + self.digits = float(256*msb + lsb)/2 - return digits + self.write_reg(0x00, 0xA3) + return self.digits def temperature(self): return self.__tempRaw() def __tempRaw(self): - digits = self.read_digits() + try: + digits = self.read_digits() + except: + return None R = Max31865.calc_R(430, digits) T = Max31865.vanDusen_temp(R) + self.temp_correction # print("R={:.3f} Ohm, T={:.2f} degC".format(R, T)) @@ -99,6 +106,7 @@ class Max31865(ATemperatureSensor): # Main if __name__ == '__main__': + max31865 = Max31865() for i in range (0, 8): print("Reg[0x{}]: 0x{:02X}".format(i, max31865.read_reg(i)))