Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed MODSERIAL FATFileSystem
omegaPX209/omegaPX209.cpp
- Committer:
- danstrider
- Date:
- 2017-10-31
- Revision:
- 14:85b64a4d08e8
- Parent:
- 10:085ab7328054
- Child:
- 17:7c16b5671d0e
File content as of revision 14:85b64a4d08e8:
/*
This class wraps an Omega pressure transducer.
Author: Matthew, October 24th, 2013
Modified: Dan, 2017-10-30
*/
#include "mbed.h"
#include "omegaPX209.hpp"
omegaPX209::omegaPX209(PinName pin):
_adc(pin)
{
_psi = 14.7; // pressure [psi]
_zeroPsi = 14.7; // atmospheric pressure at sea level [psi]
_adcVoltage = 3.3; // mbed ADC system voltage [V]
_fullscale = 50; // value of sensor at full scale (*confirm with Stearns*) [psi]
_cal = _fullscale/5.0; // psi per volt calibration [psi/V]
}
// nothing to initialize, but you can call this function if it makes you feel better.
void omegaPX209::init() {
}
// lets user set a different ambient pressure [psi]
void omegaPX209::setZero(float zeroPsi) {
_zeroPsi = zeroPsi;
}
// returns the internal ambient pressure [psi]
float omegaPX209::getZero() {
return _zeroPsi;
}
// reads from ADC system and does math for converting to psi
float omegaPX209::getPsi() {
// filter by over-sampling
float add = 0;
for (int i = 0; i < OVERSAMPLE; i++) {
// analog input _adc is float 0.0 to 1.0
// multiplying by _adcVoltage converts percentage to a voltage
// multiplying by _cal converts voltage to a pressure
add += _adc.read() * _adcVoltage * _cal;
}
// use over-sampled
_psi = (add/OVERSAMPLE);
return _psi;
}
// reads the ADC system and returns depth in feet
float omegaPX209::getDepthFt() {
float psi = getPsi() - _zeroPsi; // read the sensor and remove atmospheric bias
float Pa = psi2Pa * psi; // convert psi to Pascals
float depth_m = Pa / (water_density_kg_m3 * grav_m_s2); // convert Pa to fluid depth in meters
float depth_ft = m2ft * depth_m; // convert meters to feet
return depth_ft;
}
// call this if you want to tare to zero
float omegaPX209::tare() {
setZero(getPsi());
}