Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 24 additions & 4 deletions tests/scenarios/board_temperature_comparison.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ drivers:
- wsen-hids
- wsen-pads
- lis2mdl
- ism330dl

tests:
- name: "Read all temperature sensors"
Expand All @@ -20,6 +21,7 @@ tests:
sys.path.insert(0, '/remote/wsen-hids')
sys.path.insert(0, '/remote/wsen-pads')
sys.path.insert(0, '/remote/lis2mdl')
sys.path.insert(0, '/remote/ism330dl')

from machine import I2C
from time import sleep_ms
Expand Down Expand Up @@ -52,6 +54,12 @@ tests:
mag = LIS2MDL(i2c)
temps['LIS2MDL'] = mag.read_temperature_c()

# ISM330DL (auxiliary, offset not guaranteed by datasheet)
from ism330dl.device import ISM330DL
imu = ISM330DL(i2c)
sleep_ms(200) # stabilize after reset
temps['ISM330DL'] = imu.temperature_c()

# Print comparison table
print('--- Temperature Comparison ---')
for name, t in temps.items():
Expand Down Expand Up @@ -108,6 +116,7 @@ tests:
sys.path.insert(0, '/remote/wsen-hids')
sys.path.insert(0, '/remote/wsen-pads')
sys.path.insert(0, '/remote/lis2mdl')
sys.path.insert(0, '/remote/ism330dl')

from machine import I2C
from time import sleep_ms
Expand All @@ -131,6 +140,10 @@ tests:
from lis2mdl.device import LIS2MDL
mag = LIS2MDL(i2c)

from ism330dl.device import ISM330DL
imu = ISM330DL(i2c)
sleep_ms(200) # stabilize after reset

# Read reference just before each sensor to minimize drift
ref_t = ref.temperature()
hts_t = hts.temperature()
Expand All @@ -141,34 +154,41 @@ tests:
ref_t3 = ref.temperature()
mag_t = mag.read_temperature_c()

ref_t4 = ref.temperature()
imu_t = imu.temperature_c()

print('--- Before offset alignment ---')
print(' WSEN-HIDS (ref): ' + str(round(ref_t, 2)) + ' C')
print(' HTS221: ' + str(round(hts_t, 2)) + ' C')
print(' WSEN-PADS: ' + str(round(pads_t, 2)) + ' C')
print(' LIS2MDL: ' + str(round(mag_t, 2)) + ' C')
print(' ISM330DL: ' + str(round(imu_t, 2)) + ' C')

spread_before = max(hts_t, pads_t, mag_t, ref_t) - min(hts_t, pads_t, mag_t, ref_t)
spread_before = max(hts_t, pads_t, mag_t, imu_t, ref_t) - min(hts_t, pads_t, mag_t, imu_t, ref_t)
print(' Spread: ' + str(round(spread_before, 2)) + ' C')

# Apply offset to align each sensor to the reference reading
hts.set_temp_offset(ref_t - hts_t)
pads.set_temp_offset(ref_t2 - pads_t)
mag.set_temp_offset(ref_t3 - mag_t)
imu.set_temp_offset(ref_t4 - imu_t)

# Re-read after offset alignment
sleep_ms(50)
ref_t4 = ref.temperature()
ref_t5 = ref.temperature()
hts_t2 = hts.temperature()
pads_t2 = pads.temperature()
mag_t2 = mag.read_temperature_c()
imu_t2 = imu.temperature_c()

print('--- After offset alignment ---')
print(' WSEN-HIDS (ref): ' + str(round(ref_t4, 2)) + ' C')
print(' WSEN-HIDS (ref): ' + str(round(ref_t5, 2)) + ' C')
print(' HTS221: ' + str(round(hts_t2, 2)) + ' C')
print(' WSEN-PADS: ' + str(round(pads_t2, 2)) + ' C')
print(' LIS2MDL: ' + str(round(mag_t2, 2)) + ' C')
print(' ISM330DL: ' + str(round(imu_t2, 2)) + ' C')

spread_after = max(hts_t2, pads_t2, mag_t2, ref_t4) - min(hts_t2, pads_t2, mag_t2, ref_t4)
spread_after = max(hts_t2, pads_t2, mag_t2, imu_t2, ref_t5) - min(hts_t2, pads_t2, mag_t2, imu_t2, ref_t5)
print(' Spread: ' + str(round(spread_after, 2)) + ' C')

# After alignment, spread should be < 2°C
Expand Down