13/10/2021, 20:59
Il sensore comunica tramite bus I2C, sul sito di Blue Robotics, che fornisce il sensore pronto all'uso con il case metallico idoneo per l'immersione, hanno anche la libreria Python utilizzabile con la Raspberry.
Tieni presente che con una risoluzione minima di 1 milli bar, la ottieni senza troppe complicazioni, quella massima è 0.1 milli bar ma tocca combattere non poco, hai una risoluzione pari a 1 cm di H2O.
In pratica il sensore ti fornisce direttamente il valore della pressione e la temperatura del liquido, o del gas,, la rileva perché viene compensato in funzione di questa, dato che ha il suo ADC interno, un delta sigma a 24 bit, non devi usare nessun hardware esterno per la conversione da tensione in count.
Io lo uso tramite codice in C, mi sono scritto una mia libreria perché mi serve la massima risoluzione possibile, però se usi la libreria standard di Blue Robotics, sia C che Python, ottieni senza problemi la lettura con risoluzione 1 millibar.
Questo è il loro esempio di codice in Python
Tieni presente che con una risoluzione minima di 1 milli bar, la ottieni senza troppe complicazioni, quella massima è 0.1 milli bar ma tocca combattere non poco, hai una risoluzione pari a 1 cm di H2O.
In pratica il sensore ti fornisce direttamente il valore della pressione e la temperatura del liquido, o del gas,, la rileva perché viene compensato in funzione di questa, dato che ha il suo ADC interno, un delta sigma a 24 bit, non devi usare nessun hardware esterno per la conversione da tensione in count.
Io lo uso tramite codice in C, mi sono scritto una mia libreria perché mi serve la massima risoluzione possibile, però se usi la libreria standard di Blue Robotics, sia C che Python, ottieni senza problemi la lettura con risoluzione 1 millibar.
Questo è il loro esempio di codice in Python
Codice:
import ms5837
import time
sensor = ms5837.MS5837_30BA() # Default I2C bus is 1 (Raspberry Pi 3)
# We must initialize the sensor before reading it
if not sensor.init():
print "Sensor could not be initialized"
exit(1)
# Print readings
while True:
if sensor.read():
print("P: %0.1f mbar %0.3f psi\tT: %0.2f C %0.2f F") % (
sensor.pressure(), # Default is mbar (no arguments)
sensor.pressure(ms5837.UNITS_psi), # Request psi
sensor.temperature(), # Default is degrees C (no arguments)
sensor.temperature(ms5837.UNITS_Farenheit)) # Request Farenheit
else:
print "Sensor read failed!"
exit(1)