Skip to content

Commit 35e0b12

Browse files
authored
Merge pull request #4 from boryszef/master
Add support for the MLX90615 sensor
2 parents 6cb5bef + 7bb388b commit 35e0b12

File tree

1 file changed

+27
-14
lines changed

1 file changed

+27
-14
lines changed

mlx90614.py

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,7 @@
2626

2727
import ustruct
2828

29-
_REGISTER_TA = const(0x06) # ambient
30-
_REGISTER_TOBJ1 = const(0x07) # object
31-
_REGISTER_TOBJ2 = const(0x08) # object2
32-
33-
class MLX90614:
34-
def __init__(self, i2c, address=0x5a):
35-
self.i2c = i2c
36-
self.address = address
37-
_config1 = i2c.readfrom_mem(address, 0x25, 2)
38-
_dz = ustruct.unpack('<H', _config1)[0] & (1<<6)
39-
self.dual_zone = True if _dz else False
29+
class SensorBase:
4030

4131
def read16(self, register):
4232
data = self.i2c.readfrom_mem(self.address, register, 2)
@@ -51,14 +41,14 @@ def read_temp(self, register):
5141
return temp;
5242

5343
def read_ambient_temp(self):
54-
return self.read_temp(_REGISTER_TA)
44+
return self.read_temp(self._REGISTER_TA)
5545

5646
def read_object_temp(self):
57-
return self.read_temp(_REGISTER_TOBJ1)
47+
return self.read_temp(self._REGISTER_TOBJ1)
5848

5949
def read_object2_temp(self):
6050
if self.dual_zone:
61-
return self.read_temp(_REGISTER_TOBJ2)
51+
return self.read_temp(self._REGISTER_TOBJ2)
6252
else:
6353
raise RuntimeError("Device only has one thermopile")
6454

@@ -73,3 +63,26 @@ def object_temp(self):
7363
@property
7464
def object2_temp(self):
7565
return self.read_object2_temp()
66+
67+
class MLX90614(SensorBase):
68+
69+
_REGISTER_TA = 0x06
70+
_REGISTER_TOBJ1 = 0x07
71+
_REGISTER_TOBJ2 = 0x08
72+
73+
def __init__(self, i2c, address=0x5a):
74+
self.i2c = i2c
75+
self.address = address
76+
_config1 = i2c.readfrom_mem(address, 0x25, 2)
77+
_dz = ustruct.unpack('<H', _config1)[0] & (1<<6)
78+
self.dual_zone = True if _dz else False
79+
80+
class MLX90615(SensorBase):
81+
82+
_REGISTER_TA = 0x26
83+
_REGISTER_TOBJ1 = 0x27
84+
85+
def __init__(self, i2c, address=0x5b):
86+
self.i2c = i2c
87+
self.address = address
88+
self.dual_zone = False

0 commit comments

Comments
 (0)