Very simple library for reading temperature from NTC thermistors

Dependents:   lightweight-weather-station

thermistor.cpp

Committer:
programy1
Date:
2020-05-17
Revision:
1:424e85f62cd8
Parent:
0:5459d9074b70

File content as of revision 1:424e85f62cd8:

#include "mbed.h"
#include "thermistor.h"
 
Thermistor::Thermistor(PinName ThermistorPin, int NominalRes, int Beta, int SeriesResistor) : thermistorpin(ThermistorPin), nominalres(NominalRes), beta(Beta), seriesresistor(SeriesResistor) {
    init();
}
 
void Thermistor::init() {
    //defaults:
    //beta = 3950 // The beta coefficient of the thermistor (usually 3000-4000)
    //seriesresistor = 4700 //value of the second resistor - seriesresistor
}
 
void Thermistor::get_temperature() {
    int temperaturenominal = 25; //temperature when the resistance is measured
    a = thermistorpin.read_u16(); // Read 16bit Analog value
    res = (float) seriesresistor / ((65536.0 / a) - 1); // get resistance of the thermistor
    steinhart = res / nominalres;  // (R/Ro)
    steinhart = log(steinhart);                 // ln(R/Ro)
    steinhart /= beta;                  // 1/B * ln(R/Ro)
    steinhart += 1.0 / (temperaturenominal + 273.15);   // + (1/To)
    steinhart = 1.0 / steinhart; //invert
    temp = steinhart - 273.15;           // to celsius
}
 
float Thermistor::temperature() {
    get_temperature();
    return temp;
}

float Thermistor::resistance() {
    get_temperature();
    return res;
}