most functionality to splashdwon, find neutral and start mission. short timeouts still in code for testing, will adjust to go directly to sit_idle after splashdown
Dependencies: mbed MODSERIAL FATFileSystem
omegaPX209/omegaPX209.cpp
- Committer:
- tnhnrl
- Date:
- 2017-11-21
- Revision:
- 17:7c16b5671d0e
- Parent:
- 14:85b64a4d08e8
- Child:
- 54:d4990fb68404
File content as of revision 17:7c16b5671d0e:
/* 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 void omegaPX209::tare() { setZero(getPsi()); }