[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
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import time
|
||||||
import spidev
|
import spidev
|
||||||
from atemperatureSensor import ATemperatureSensor
|
from atemperatureSensor import ATemperatureSensor
|
||||||
|
|
||||||
@@ -11,11 +12,13 @@ class Max31865(ATemperatureSensor):
|
|||||||
# Open SPI bus
|
# Open SPI bus
|
||||||
self.spi = spidev.SpiDev()
|
self.spi = spidev.SpiDev()
|
||||||
self.spi.open(0, 0)
|
self.spi.open(0, 0)
|
||||||
self.spi.max_speed_hz = 100000
|
self.spi.max_speed_hz = 50000
|
||||||
self.spi.mode = 0b01
|
self.spi.mode = 0b01
|
||||||
self.write_reg(0x00, 0xA3)
|
|
||||||
self.temp_correction = -0.2
|
self.temp_correction = -0.2
|
||||||
|
self.write_reg(0x00, 0xA3)
|
||||||
|
time.sleep(0.100)
|
||||||
|
self.digits = 0
|
||||||
|
|
||||||
def read_reg(self, addr):
|
def read_reg(self, addr):
|
||||||
reg = self.spi.xfer([addr, 0xFF])
|
reg = self.spi.xfer([addr, 0xFF])
|
||||||
|
|
||||||
@@ -27,16 +30,20 @@ class Max31865(ATemperatureSensor):
|
|||||||
def read_digits(self):
|
def read_digits(self):
|
||||||
msb = self.read_reg(0x01)
|
msb = self.read_reg(0x01)
|
||||||
lsb = self.read_reg(0x02)
|
lsb = self.read_reg(0x02)
|
||||||
self.write_reg(0x00, 0xA3)
|
if (lsb & 0x01 == 0x00):
|
||||||
digits = float(256*msb + lsb)/2
|
self.digits = float(256*msb + lsb)/2
|
||||||
|
|
||||||
return digits
|
self.write_reg(0x00, 0xA3)
|
||||||
|
return self.digits
|
||||||
|
|
||||||
def temperature(self):
|
def temperature(self):
|
||||||
return self.__tempRaw()
|
return self.__tempRaw()
|
||||||
|
|
||||||
def __tempRaw(self):
|
def __tempRaw(self):
|
||||||
digits = self.read_digits()
|
try:
|
||||||
|
digits = self.read_digits()
|
||||||
|
except:
|
||||||
|
return None
|
||||||
R = Max31865.calc_R(430, digits)
|
R = Max31865.calc_R(430, digits)
|
||||||
T = Max31865.vanDusen_temp(R) + self.temp_correction
|
T = Max31865.vanDusen_temp(R) + self.temp_correction
|
||||||
# print("R={:.3f} Ohm, T={:.2f} degC".format(R, T))
|
# print("R={:.3f} Ohm, T={:.2f} degC".format(R, T))
|
||||||
@@ -99,6 +106,7 @@ class Max31865(ATemperatureSensor):
|
|||||||
# Main
|
# Main
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
|
|
||||||
max31865 = Max31865()
|
max31865 = Max31865()
|
||||||
for i in range (0, 8):
|
for i in range (0, 8):
|
||||||
print("Reg[0x{}]: 0x{:02X}".format(i, max31865.read_reg(i)))
|
print("Reg[0x{}]: 0x{:02X}".format(i, max31865.read_reg(i)))
|
||||||
|
|||||||
Reference in New Issue
Block a user