eka sinambela / Mbed 2 deprecated g3_waterplay

Dependencies:   mbed

Fork of g3_waterplay by Mario Simaremare

Committer:
mariosimaremare
Date:
Thu Jun 02 17:53:02 2016 +0000
Revision:
0:ad9362f18797
Child:
1:f448c12d2c5b
Salinity and temperature sensors are implemented in classes.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mariosimaremare 0:ad9362f18797 1 /*
mariosimaremare 0:ad9362f18797 2 * G3: WATERPLAY
mariosimaremare 0:ad9362f18797 3 */
mariosimaremare 0:ad9362f18797 4
mariosimaremare 0:ad9362f18797 5 #include "TemperatureSensor.h"
mariosimaremare 0:ad9362f18797 6 #include "mbed.h"
mariosimaremare 0:ad9362f18797 7
mariosimaremare 0:ad9362f18797 8 TemperatureSensor::TemperatureSensor(
mariosimaremare 0:ad9362f18797 9 PinName pin,
mariosimaremare 0:ad9362f18797 10 double const_voltage,
mariosimaremare 0:ad9362f18797 11 double const_converter,
mariosimaremare 0:ad9362f18797 12 double variance,
mariosimaremare 0:ad9362f18797 13 double vin,
mariosimaremare 0:ad9362f18797 14 double resistance
mariosimaremare 0:ad9362f18797 15 ):
mariosimaremare 0:ad9362f18797 16 _analog_in(pin),
mariosimaremare 0:ad9362f18797 17 _const_voltage(const_voltage),
mariosimaremare 0:ad9362f18797 18 _const_converter(const_converter),
mariosimaremare 0:ad9362f18797 19 _variance(variance),
mariosimaremare 0:ad9362f18797 20 _vin(vin),
mariosimaremare 0:ad9362f18797 21 _resistance(resistance),
mariosimaremare 0:ad9362f18797 22 _k0(0.00102119),
mariosimaremare 0:ad9362f18797 23 _k1(0.000222468),
mariosimaremare 0:ad9362f18797 24 _k2(0.000000133342),
mariosimaremare 0:ad9362f18797 25 _kelvin_to_celcius(-273.15)
mariosimaremare 0:ad9362f18797 26 {
mariosimaremare 0:ad9362f18797 27 read();
mariosimaremare 0:ad9362f18797 28 }
mariosimaremare 0:ad9362f18797 29
mariosimaremare 0:ad9362f18797 30 double TemperatureSensor::read()
mariosimaremare 0:ad9362f18797 31 {
mariosimaremare 0:ad9362f18797 32 _voltage = _analog_in.read();
mariosimaremare 0:ad9362f18797 33
mariosimaremare 0:ad9362f18797 34 return(_voltage);
mariosimaremare 0:ad9362f18797 35 }
mariosimaremare 0:ad9362f18797 36
mariosimaremare 0:ad9362f18797 37 double TemperatureSensor::getVoltage()
mariosimaremare 0:ad9362f18797 38 {
mariosimaremare 0:ad9362f18797 39 float retVal = _voltage * _const_voltage;
mariosimaremare 0:ad9362f18797 40
mariosimaremare 0:ad9362f18797 41 return(retVal);
mariosimaremare 0:ad9362f18797 42 }
mariosimaremare 0:ad9362f18797 43
mariosimaremare 0:ad9362f18797 44 double TemperatureSensor::getTemperature()
mariosimaremare 0:ad9362f18797 45 {
mariosimaremare 0:ad9362f18797 46 double vout = getVoltage();
mariosimaremare 0:ad9362f18797 47 double RT = (vout * _resistance) / (_vin - vout);
mariosimaremare 0:ad9362f18797 48 double logRT = log(RT);
mariosimaremare 0:ad9362f18797 49 double K0 = _k0;
mariosimaremare 0:ad9362f18797 50 double K1 = _k1 * logRT;
mariosimaremare 0:ad9362f18797 51 double K2 = _k2 * pow(logRT, 3.0);
mariosimaremare 0:ad9362f18797 52 double kelvin = 1.0 / (K0 + K1 + K2);
mariosimaremare 0:ad9362f18797 53 double celcius = (kelvin + _kelvin_to_celcius) + _variance;
mariosimaremare 0:ad9362f18797 54
mariosimaremare 0:ad9362f18797 55 return(celcius);
mariosimaremare 0:ad9362f18797 56 }