John Lowe
/
WebSockets2
Embedded WebSockets Experiment
TemperatureSensor.cpp@0:6dee052a3fa4, 2011-07-26 (annotated)
- Committer:
- nandgate
- Date:
- Tue Jul 26 05:30:53 2011 +0000
- Revision:
- 0:6dee052a3fa4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nandgate | 0:6dee052a3fa4 | 1 | #include <TemperatureSensor.h> |
nandgate | 0:6dee052a3fa4 | 2 | #include <math.h> |
nandgate | 0:6dee052a3fa4 | 3 | |
nandgate | 0:6dee052a3fa4 | 4 | TemperatureSensor::TemperatureSensor():adc(p20) { |
nandgate | 0:6dee052a3fa4 | 5 | percentOfScale= adc.read(); |
nandgate | 0:6dee052a3fa4 | 6 | } |
nandgate | 0:6dee052a3fa4 | 7 | |
nandgate | 0:6dee052a3fa4 | 8 | void TemperatureSensor::measure(void) { |
nandgate | 0:6dee052a3fa4 | 9 | static const float R= 10500.0; |
nandgate | 0:6dee052a3fa4 | 10 | static const float LP= 0.01; |
nandgate | 0:6dee052a3fa4 | 11 | |
nandgate | 0:6dee052a3fa4 | 12 | percentOfScale= ((1.0 - LP) * percentOfScale) + (LP * adc.read()); |
nandgate | 0:6dee052a3fa4 | 13 | resistance= (percentOfScale * R) / (1.0 - percentOfScale); |
nandgate | 0:6dee052a3fa4 | 14 | } |
nandgate | 0:6dee052a3fa4 | 15 | |
nandgate | 0:6dee052a3fa4 | 16 | float TemperatureSensor::getKelvin(void) { |
nandgate | 0:6dee052a3fa4 | 17 | float x; |
nandgate | 0:6dee052a3fa4 | 18 | |
nandgate | 0:6dee052a3fa4 | 19 | // Compute the Steinhard-Hart eqn: 1/t = A + B*ln(r) + C*ln(r)^3 + D*ln(r)^5 |
nandgate | 0:6dee052a3fa4 | 20 | static const float A= 1.006389097E-3; |
nandgate | 0:6dee052a3fa4 | 21 | static const float B= 2.425678347E-4; |
nandgate | 0:6dee052a3fa4 | 22 | static const float C= 1.452612422E-7; |
nandgate | 0:6dee052a3fa4 | 23 | |
nandgate | 0:6dee052a3fa4 | 24 | x= log(resistance); |
nandgate | 0:6dee052a3fa4 | 25 | return 1.0 / (A + (B * x) + (C * x * x * x)); |
nandgate | 0:6dee052a3fa4 | 26 | } |
nandgate | 0:6dee052a3fa4 | 27 | |
nandgate | 0:6dee052a3fa4 | 28 | float TemperatureSensor::getResistance(void) { |
nandgate | 0:6dee052a3fa4 | 29 | return resistance; |
nandgate | 0:6dee052a3fa4 | 30 | } |
nandgate | 0:6dee052a3fa4 | 31 | |
nandgate | 0:6dee052a3fa4 | 32 | float TemperatureSensor::getPercentOfScale(void) { |
nandgate | 0:6dee052a3fa4 | 33 | return percentOfScale; |
nandgate | 0:6dee052a3fa4 | 34 | } |