mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
142 lines
4.3 KiB
C++
142 lines
4.3 KiB
C++
#pragma once
|
|
//
|
|
// FILE: pressure.h
|
|
// AUTHOR: Rob Tillaart
|
|
// VERSION: 0.3.1
|
|
// PURPOSE: Arduino library for pressure conversion
|
|
// URL: https://github.com/RobTillaart/pressure
|
|
|
|
|
|
|
|
#define PRESSURE_LIB_VERSION (F("0.3.1"))
|
|
|
|
|
|
// CONSTANTS NEED TO BE VERIFIED
|
|
// Temperature 25°C ?
|
|
|
|
// CONSTANTS SETTERS
|
|
#define BAR2MILLIBAR 1000
|
|
#define ATM2MILLIBAR 1013.25
|
|
#define PSI2MILLIBAR 68.9475729318
|
|
#define DYNES2MILLIBAR 0.001
|
|
#define INHG2MILLIBAR 33.85355
|
|
#define INH2O2MILLIBAR 2.4908890833333
|
|
#define PASCAL2MILLIBAR 0.01
|
|
#define TORR2MILLIBAR 1.33322368
|
|
#define CMHG2MILLIBAR 13.3322368
|
|
#define CMH2O2MILLIBAR 0.980665
|
|
#define MSW2MILLIBAR 0.01
|
|
|
|
// CONSTANTS GETTERS
|
|
#define MILLIBAR2BAR (1.0 / BAR2MILLIBAR)
|
|
#define MILLIBAR2ATM (1.0 / ATM2MILLIBAR)
|
|
#define MILLIBAR2PSI (1.0 / PSI2MILLIBAR)
|
|
#define MILLIBAR2DYNES (1.0 / DYNES2MILLIBAR)
|
|
#define MILLIBAR2INHG (1.0 / INHG2MILLIBAR)
|
|
#define MILLIBAR2INH2O (1.0 / INH2O2MILLIBAR)
|
|
#define MILLIBAR2PASCAL (1.0 / PASCAL2MILLIBAR)
|
|
#define MILLIBAR2TORR (1.0 / TORR2MILLIBAR)
|
|
#define MILLIBAR2CMHG (1.0 / CMHG2MILLIBAR)
|
|
#define MILLIBAR2CMH2O (1.0 / CMH2O2MILLIBAR)
|
|
#define MILLIBAR2MSW (1.0 / MSW2MILLIBAR)
|
|
|
|
/*
|
|
// was
|
|
#define MILLIBAR2BAR 0.001
|
|
#define MILLIBAR2ATM 9.86923267e-4
|
|
#define MILLIBAR2PSI 0.0145037738
|
|
#define MILLIBAR2DYNES 1000
|
|
#define MILLIBAR2INHG 2.9539e-2
|
|
#define MILLIBAR2INH2O 0.40146307866177
|
|
#define MILLIBAR2PASCAL 100
|
|
#define MILLIBAR2TORR 0.750061683
|
|
#define MILLIBAR2CMHG 0.0750061683
|
|
#define MILLIBAR2CMH2O 1.0197162129779
|
|
#define MILLIBAR2MSW 100
|
|
*/
|
|
|
|
|
|
|
|
class pressure
|
|
{
|
|
public:
|
|
// CONSTRUCTOR
|
|
pressure(float value = 0.0) { _pressure = value; };
|
|
|
|
|
|
void setMilliBar(float value) { _pressure = value; };
|
|
void setBar(float value) { _pressure = value * BAR2MILLIBAR; };
|
|
void setPSI(float value) { _pressure = value * PSI2MILLIBAR; };
|
|
void setATM(float value) { _pressure = value * ATM2MILLIBAR; }
|
|
void setDynes(float value) { _pressure = value * DYNES2MILLIBAR; }
|
|
void setInchHg(float value) { _pressure = value * INHG2MILLIBAR; }
|
|
void setInchH2O(float value) { _pressure = value * INH2O2MILLIBAR; }
|
|
void setPascal(float value) { _pressure = value * PASCAL2MILLIBAR; }
|
|
void setTORR(float value) { _pressure = value * TORR2MILLIBAR; }
|
|
void setCmHg(float value) { _pressure = value * CMHG2MILLIBAR; }
|
|
void setCmH2O(float value) { _pressure = value * CMH2O2MILLIBAR; }
|
|
void setMSW(float value) { _pressure = value * MSW2MILLIBAR; }
|
|
|
|
|
|
float getMilliBar() { return _pressure; };
|
|
float getBar() { return _pressure * MILLIBAR2BAR; };
|
|
float getPSI() { return _pressure * MILLIBAR2PSI; };
|
|
float getATM() { return _pressure * MILLIBAR2ATM; }
|
|
float getDynes() { return _pressure * MILLIBAR2DYNES; }
|
|
float getInchHg() { return _pressure * MILLIBAR2INHG; }
|
|
float getInchH2O() { return _pressure * MILLIBAR2INH2O; }
|
|
float getPascal() { return _pressure * MILLIBAR2PASCAL; }
|
|
float getTORR() { return _pressure * MILLIBAR2TORR; }
|
|
float getCmHg() { return _pressure * MILLIBAR2CMHG; }
|
|
float getCmH2O() { return _pressure * MILLIBAR2CMH2O; }
|
|
float getMSW() { return _pressure * MILLIBAR2MSW; }
|
|
|
|
|
|
// EXPERIMENTAL
|
|
// temperature in KELVIN !
|
|
float change(float T1, float T2, float V1, float V2, float N1, float N2)
|
|
{
|
|
changeTemperature(T1, T2);
|
|
changeVolume(V1, V2);
|
|
changeMole(N1, N2);
|
|
return _pressure;
|
|
}
|
|
|
|
// temperature must be in KELVIN!
|
|
float changeTemperature(float T1, float T2)
|
|
{
|
|
if ((T1 != T2) && (T1 > 0) && (T2 > 0))
|
|
{
|
|
_pressure *= (T2 / T1);
|
|
}
|
|
return _pressure;
|
|
}
|
|
|
|
// volume must be in same units
|
|
float changeVolume(float V1, float V2)
|
|
{
|
|
if ((V1 != V2) && (V1 > 0) && (V2 > 0))
|
|
{
|
|
_pressure *= (V1 / V2);
|
|
}
|
|
return _pressure;
|
|
}
|
|
|
|
// moles must be in same units.
|
|
float changeMole(float N1, float N2)
|
|
{
|
|
if ((N1 != N2) && (N1 > 0) && (N2 > 0))
|
|
{
|
|
_pressure *= (N2 / N1);
|
|
}
|
|
return _pressure;
|
|
}
|
|
|
|
private:
|
|
float _pressure; // millibar.
|
|
};
|
|
|
|
|
|
// -- END OF FILE --
|
|
|