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.
Thermistor.cpp
00001 #include "Thermistor.h" 00002 #include "math.h" 00003 00004 //#define ABSTMP (273.0) ///< 絶対温度と0℃との差 00005 00006 /// コンストラクタ 00007 /// @param B B定数 00008 /// @param T0 抵抗値がR0Ωとなる摂氏温度 00009 /// @param Rs0 T0℃でのサーミスタ抵抗値[Ω]、+入力端子とGNDとの間に設置 00010 Thermistor::Thermistor(double B, double T0, double Rs0) 00011 { 00012 b = B; t0 = T0+ABSTMP; 00013 rs0 = Rs0; 00014 // 温度補正パラメタを「補正なし」に初期化 00015 a2 = 0.0; 00016 a1 = 1.0; 00017 a0 = 0.0; 00018 }; 00019 00020 00021 /// AD変換結果から温度を算出する 00022 /// @param adVal AD変換結果 00023 /// @return 摂氏温度 00024 double Thermistor::toTempValue(double rs) 00025 { 00026 // サーミスタ抵抗値から温度を算出 00027 t = b * t0 / (b + t0 * log(rs/rs0)); 00028 // 2次式による補正 00029 t = a2 * t * t + a1 * t + a0 - ABSTMP; 00030 return t; 00031 } 00032 00033 /// 3点を指定し2次式で補正する温度校正 00034 /// @param t1 補正点1の測定値 00035 /// @param t1r 補正点1の正しい温度 00036 /// @param t2 補正点2の測定値 00037 /// @param t2r 補正点2の正しい温度 00038 /// @param t3 補正点3の測定値 00039 /// @param t3r 補正点3の正しい温度 00040 void Thermistor::adjust(double t1, double t1r, double t2, double t2r, double t3, double t3r) 00041 { 00042 t1 += ABSTMP; 00043 t1r += ABSTMP; 00044 t2 += ABSTMP; 00045 t2r += ABSTMP; 00046 t3 += ABSTMP; 00047 t3r += ABSTMP; 00048 // 2次式の係数を求める 00049 a2 = (t1r*(t2 - t3) + t2r*t3 - t2*t3r + t1*(-t2r + t3r))/((t1 - t2)*(t1 - t3)*(t2 - t3)); 00050 a1 = (-(t2r*t3*t3) + t1r*(-t2*t2 + t3*t3) + t1*t1*(t2r - t3r) + t2*t2*t3r)/((t1 - t2)*(t1 - t3)*(t2 - t3)); 00051 a0 = (t1r*t2*(t2 - t3)*t3 + t1*(-(t1*t2r*t3) + t2r*t3*t3 + t1*t2*t3r - t2*t2*t3r))/((t1 - t2)*(t1 - t3)*(t2 - t3)); 00052 } 00053 00054 /// 2点を指定し1次式で補正 00055 /// @param t1 補正点1の測定値 00056 /// @param t1r 補正点1の正しい温度 00057 /// @param t2 補正点2の測定値 00058 /// @param t2r 補正点2の正しい温度 00059 void Thermistor::adjust(double t1, double t1r, double t2, double t2r) 00060 { 00061 t1 += ABSTMP; 00062 t1r += ABSTMP; 00063 t2 += ABSTMP; 00064 t2r += ABSTMP; 00065 // 1次式の係数を求める 00066 a2 = 0.0; 00067 a1 = (t1r - t2r)/(t1 - t2); 00068 a0 = (-(t1r*t2) + t1*t2r)/(t1 - t2); 00069 } 00070
Generated on Tue Jul 12 2022 19:08:10 by
1.7.2