NTC temperature sensor going to A:D input. Topology is: (Vref or 3.3V) -> Series_resistor -> A:D_input -> NTC -> GND. Easy modification of NTC parameters w/o recompile of library
Diff: ntc.cpp
- Revision:
- 6:8e6bd0f9877b
- Parent:
- 5:9655397ba539
- Child:
- 8:781d00449dd7
diff -r 9655397ba539 -r 8e6bd0f9877b ntc.cpp --- a/ntc.cpp Tue Apr 11 20:30:30 2017 +0000 +++ b/ntc.cpp Wed Apr 12 16:56:27 2017 +0000 @@ -29,44 +29,7 @@ return ntc_set_data.ntc_res; } -int NTC::get_ntc_beta_0050() { - return ntc_set_data.ntc_beta_0050; -} - -int NTC::get_ntc_beta_2550() { - return ntc_set_data.ntc_beta_2550; -} - -int NTC::get_ntc_beta_2580() { - return ntc_set_data.ntc_beta_2580; -} - -int NTC::get_ntc_beta_2585() { - return ntc_set_data.ntc_beta_2585; -} - -int NTC::get_ntc_beta_25100() { - return ntc_set_data.ntc_beta_25100; -} - -int NTC::get_ntc_beta_other() { - return ntc_set_data.ntc_beta_other; -} - -int NTC::get_series_res() { - return ntc_set_data.sres_res; -} - -float NTC::get_ntc_res_viaAD(uint16_t din) { - uint16_t ad = din; - if(din == 0) { - ad = NTC::read_ad_reg(); - } - float adv = ntc_set_data.vref / ntc_set_data.ad_resolution * (float)ad; - return (ntc_set_data.vref / ((ntc_set_data.vref - adv) / ntc_set_data.sres_res) - ntc_set_data.sres_res); -} - -float NTC::get_ntc_temp(int curve, uint16_t din) { +int NTC::get_ntc_beta(int curve) { int beta = 0; switch (curve) { case B0_50: @@ -88,9 +51,27 @@ beta = ntc_set_data.ntc_beta_other; break; default: - beta = ntc_set_data.ntc_beta_2550; + beta = ntc_set_data.ntc_beta_2585; break; } + return beta; +} + +int NTC::get_series_res() { + return ntc_set_data.sres_res; +} + +float NTC::get_ntc_res_viaAD(uint16_t din) { + uint16_t ad = din; + if(din == 0) { + ad = NTC::read_ad_reg(); + } + float adv = ntc_set_data.vref / ntc_set_data.ad_resolution * (float)ad; + return (ntc_set_data.vref / ((ntc_set_data.vref - adv) / ntc_set_data.sres_res) - ntc_set_data.sres_res); +} + +float NTC::get_ntc_temp(int curve, uint16_t din) { + int beta = NTC::get_ntc_beta(curve); float ntc_res = 0.0f; if(din == 0) { ntc_res = NTC::get_ntc_res_viaAD(); @@ -101,3 +82,4 @@ return (beta / (log(ntc_res / (ntc_set_data.ntc_res * exp(-beta / 298.0f)))) - 273.0f); } +