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.
TemperatureSensor.cpp@0:ad9362f18797, 2016-06-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |