Сбор информации о погодных условиях

Dependencies:   RF24 USBDevice mbed

Committer:
pro100kot14
Date:
Sat Dec 05 16:57:30 2015 +0000
Revision:
6:db4538895ae7
Parent:
4:7cd67d988145
Added unit testing. Test results are displayed on the device LEDs.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pro100kot14 1:8766173d267f 1 #include "Thermistor.h"
pro100kot14 1:8766173d267f 2
pro100kot14 1:8766173d267f 3 Thermistor::Thermistor(AnalogIn inputChanel, double a, double b, double c):input(inputChanel), error(0){
pro100kot14 1:8766173d267f 4 this->a = a;
pro100kot14 1:8766173d267f 5 this->b = b;
pro100kot14 1:8766173d267f 6 this->c = c;
pro100kot14 1:8766173d267f 7 }
pro100kot14 1:8766173d267f 8
pro100kot14 6:db4538895ae7 9
pro100kot14 1:8766173d267f 10 double Thermistor::getTemperature(){
pro100kot14 6:db4538895ae7 11 return getTemperatureByAdcValue(input.read(), a, b, c, error);
pro100kot14 6:db4538895ae7 12 }
pro100kot14 6:db4538895ae7 13
pro100kot14 6:db4538895ae7 14 double Thermistor::getTemperatureByAdcValue(float adcVal, double a, double b, double c, double error){
pro100kot14 1:8766173d267f 15 double temp;
pro100kot14 1:8766173d267f 16 double realV;
pro100kot14 1:8766173d267f 17 double resistance;
pro100kot14 1:8766173d267f 18 //3.3 - ADC maximum
pro100kot14 6:db4538895ae7 19 realV = adcVal*3.3;
pro100kot14 2:ad2653bcf93f 20 resistance = (10000 * 3.3) / realV - 10000;
pro100kot14 1:8766173d267f 21 //Considering the error
pro100kot14 1:8766173d267f 22 resistance -= error;
pro100kot14 1:8766173d267f 23 //Calculations using Steinhart–Hart equation
pro100kot14 1:8766173d267f 24 temp = log(resistance);
pro100kot14 1:8766173d267f 25 temp = 1/(a+b*temp+c*temp*temp*temp);
pro100kot14 1:8766173d267f 26 //Convert from Fahrenheit to Celsius
pro100kot14 1:8766173d267f 27 temp -= 273.15;
pro100kot14 1:8766173d267f 28 return temp;
pro100kot14 1:8766173d267f 29 }
pro100kot14 1:8766173d267f 30
pro100kot14 6:db4538895ae7 31
pro100kot14 1:8766173d267f 32 void Thermistor::setError(double error){
pro100kot14 1:8766173d267f 33 this->error = error;
pro100kot14 1:8766173d267f 34 }
pro100kot14 1:8766173d267f 35
pro100kot14 1:8766173d267f 36 double Thermistor::getError(){
pro100kot14 1:8766173d267f 37 return error;
pro100kot14 1:8766173d267f 38 }
pro100kot14 1:8766173d267f 39
pro100kot14 1:8766173d267f 40 void Thermistor::setCoefficientA(double a){
pro100kot14 1:8766173d267f 41 this->a = a;
pro100kot14 1:8766173d267f 42 }
pro100kot14 1:8766173d267f 43
pro100kot14 1:8766173d267f 44 void Thermistor::setCoefficientB(double b){
pro100kot14 1:8766173d267f 45 this->b = b;
pro100kot14 1:8766173d267f 46 }
pro100kot14 1:8766173d267f 47
pro100kot14 1:8766173d267f 48 void Thermistor::setCoefficientC(double c){
pro100kot14 1:8766173d267f 49 this->c = c;
pro100kot14 1:8766173d267f 50 }
pro100kot14 1:8766173d267f 51
pro100kot14 1:8766173d267f 52 double Thermistor::getCoefficientA(){
pro100kot14 1:8766173d267f 53 return a;
pro100kot14 1:8766173d267f 54 }
pro100kot14 1:8766173d267f 55
pro100kot14 1:8766173d267f 56 double Thermistor::getCoefficientB(){
pro100kot14 1:8766173d267f 57 return b;
pro100kot14 1:8766173d267f 58 }
pro100kot14 1:8766173d267f 59
pro100kot14 1:8766173d267f 60 double Thermistor::getCoefficientC(){
pro100kot14 1:8766173d267f 61 return c;
pro100kot14 6:db4538895ae7 62 }
pro100kot14 6:db4538895ae7 63
pro100kot14 6:db4538895ae7 64 bool ThermistorTest::adcValue_0_049_is_0_degree(){
pro100kot14 6:db4538895ae7 65 return abs(Thermistor::getTemperatureByAdcValue(0.049, 0.001995, 0.00007997, 0.0000003863)) < 1.0;
pro100kot14 6:db4538895ae7 66 }
pro100kot14 6:db4538895ae7 67
pro100kot14 6:db4538895ae7 68 bool ThermistorTest::adcValue_0_104_is_15_degree(){
pro100kot14 6:db4538895ae7 69 return abs(Thermistor::getTemperatureByAdcValue(0.104, 0.001995, 0.00007997, 0.0000003863) - 15.0) < 1.0;
pro100kot14 6:db4538895ae7 70 }
pro100kot14 6:db4538895ae7 71
pro100kot14 6:db4538895ae7 72 bool ThermistorTest::adcValue_0_202_is_30_degree(){
pro100kot14 6:db4538895ae7 73 return abs(Thermistor::getTemperatureByAdcValue(0.202, 0.001995, 0.00007997, 0.0000003863) - 30.0) < 1.0;
pro100kot14 6:db4538895ae7 74 }