Skip to content

Commit 227d97b

Browse files
committed
fixed temp and pressure calcs
1 parent e095886 commit 227d97b

File tree

1 file changed

+36
-24
lines changed

1 file changed

+36
-24
lines changed

adafruit_dps310.py

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ class Mode(CV):
9292
"""Options for ``mode``"""
9393
pass #pylint: disable=unnecessary-pass
9494

95-
# attribute name, value, string, lsb value
9695
#pylint: disable=no-member
9796
Mode.add_values((
9897
('IDLE', 0, "Idle", None),
@@ -154,22 +153,26 @@ class DPS310:
154153

155154
_temp_ratebits = RWBits(3, _DPS310_TMPCFG, 4)
156155
_temp_osbits = RWBits(4, _DPS310_TMPCFG, 0)
157-
_temp_src_bit = RWBit(_DPS310_TMPCFG, 7)
156+
157+
_temp_measurement_src_bit = RWBit(_DPS310_TMPCFG, 7)
158+
158159
_temp_config = RWBits(8, _DPS310_TMPCFG, 0)
159160

160-
_shiftbit = RWBit(_DPS310_CFGREG, 2)
161+
_pressure_shiftbit = RWBit(_DPS310_CFGREG, 2)
162+
163+
_temp_shiftbit = RWBit(_DPS310_CFGREG, 3)
161164

162165
_coefficients_ready = RWBit(_DPS310_MEASCFG, 7)
163166
_sensor_ready = RWBit(_DPS310_MEASCFG, 6)
164167
_temp_ready = RWBit(_DPS310_MEASCFG, 5)
165168
_pressure_ready = RWBit(_DPS310_MEASCFG, 4)
166169

167-
_raw_pressure = ROBits(24, _DPS310_PRSB2, 0, 3)
168-
_raw_temperature = ROBits(24, _DPS310_TMPB2, 0, 3)
170+
_raw_pressure = ROBits(24, _DPS310_PRSB2, 0, 3, lsb_first=False)
171+
_raw_temperature = ROBits(24, _DPS310_TMPB2, 0, 3, lsb_first=False)
172+
173+
_calib_coeff_temp_src_bit = ROBit(_DPS310_TMPCOEFSRCE, 7)
169174

170-
_coeff_temp_src_bit = ROBit(_DPS310_TMPCOEFSRCE, 7)
171175

172-
173176
def __init__(self, i2c_bus, address=_DPS310_DEFAULT_ADDRESS):
174177
self.i2c_device = i2c_device.I2CDevice(i2c_bus, address)
175178

@@ -180,7 +183,7 @@ def __init__(self, i2c_bus, address=_DPS310_DEFAULT_ADDRESS):
180183

181184
def initialize(self):
182185
"""Reset the sensor to the default state"""
183-
print("called initialize")
186+
# print("called initialize")
184187
self._init_values()
185188
self.reset()
186189
# wait for hardware reset to finish
@@ -223,20 +226,18 @@ def _init_values(self):
223226
@property
224227
def pressure(self):
225228
"""Returns the current pressure reading in kPA"""
226-
raw_temperature = self.twosComplement(self._raw_temperature, 24)
227-
raw_pressure = self.twosComplement(self._raw_pressure, 24)
228229

230+
temp_reading = self._raw_temperature
231+
raw_temperature = self.twosComplement(temp_reading, 24)
232+
pressure_reading = self._raw_pressure
233+
raw_pressure = self.twosComplement(pressure_reading, 24)
229234
_scaled_rawtemp = raw_temperature / self._temp_scale
230235

231-
# print("raw_temperature", raw_temperature)
232-
# print("self._temp_scale", self._temp_scale)
233-
# print("_scaled_rawtemp:", _scaled_rawtemp)
234-
# print("self._c1, self._c0:", self._c1, self._c0)
235-
236-
# print("self._c1 + self._c0:", self._c1 + self._c0)
237236
_temperature = _scaled_rawtemp * self._c1 + self._c0 / 2.0
238-
# print("Temp: ", _temperature)
237+
239238
p_red = raw_pressure / self._pressure_scale
239+
240+
240241
pres_calc = self._c00 + p_red * (self._c10 + p_red * (self._c20 + p_red * self._c30)) + _scaled_rawtemp * (self._c01 + p_red * (self._c11 + p_red * self._c21))
241242

242243
final_pressure = pres_calc / 100
@@ -254,6 +255,15 @@ def sensor_ready(self):
254255
"""Identifies the sensorhas measurements ready"""
255256
return self._sensor_ready
256257

258+
@property
259+
def temperature_ready(self):
260+
"""Returns true if there is a temperature reading ready"""
261+
return self._temp_ready
262+
263+
@property
264+
def pressure_ready(self):
265+
return self._pressure_ready
266+
257267
@property
258268
def mode(self):
259269
"""An example"""
@@ -265,29 +275,31 @@ def mode(self, value):
265275
raise AttributeError("mode must be an `Mode`")
266276

267277
self._mode_bits = value
278+
################# PRESSURE CONFIG ########################################
268279

269280
def pressure_configuration(self, rate, oversample):
270281
"""Configure the pressure rate and oversample count"""
271282
self._pressure_ratebits = rate
272283
self._pressure_osbits = oversample
273284

274-
self._shiftbit = (oversample > Samples.COUNT_8)
285+
self._pressure_shiftbit = (oversample > Samples.COUNT_8)
275286

276287
self._pressure_scale = self._oversample_scalefactor[oversample]
277-
288+
################# TEMP CONFIG ############################################
278289
def temperature_configuration(self, rate, oversample):
279290
"""Configure the temperature rate and oversample count"""
280291

281292
self._temp_ratebits = rate
282293
self._temp_osbits = oversample
283294
self._temp_scale = self._oversample_scalefactor[oversample]
295+
# print(" ***** setting temp shiftbit *******")
296+
self._temp_shiftbit = (oversample > Samples.COUNT_8) # 0x9
297+
# print(" ***** getting temp coeff source *******")
284298

285-
self._shiftbit = (oversample > Samples.COUNT_8) # 0x9
286-
# _shiftbit = RWBit(_DPS310_CFGREG, 2)
287-
288-
coeff_src = self._coeff_temp_src_bit # 0x28
299+
coeff_src = self._calib_coeff_temp_src_bit # 0x28
289300

290-
self._temp_src_bit = coeff_src # 0x7
301+
self._temp_measurement_src_bit = coeff_src # 0x7
302+
#############################################################################
291303

292304
def twosComplement(self, val, bits):
293305
if (val & (1 << (bits - 1))):

0 commit comments

Comments
 (0)