Posts tagged ‘low-temp NTC thermistor correction’

夏に作った、ディスプレイの輝度自動調整システムの明るさセンサの ついでに付けた室温測定機能。冬になってから、朝などに温度センサ(以下、「センサ」)と一般の温度計(以下、「シチズン大」)の差が大きいのが気になって居た。1℃くらい温度センサが高いようだった。合う時もあるので、「たまたま」wか、測定場所が違うせいかと思って居たのだが、そもそも、朝起きた時には ずっと空調が停まっていて室内の温度が ほぼ同じと考えられるにも関わらず違っているのはおかしいし、段々ズレがひどくなって来て見過ごせなくなったので、重い腰を上げて調整した。想像以上に大変だったが、センサと温度計が合うようになったのが気持ちいいし、今まで分からなかったことが分かった(気がする)。

なお、ここでは、シチズン大が「真の温度」を示すと仮定し、センサの示す温度を それに近づけるような補正を考えている。もちろん、シチズン大にも誤差はあるが、市販品なのでセンサよりは正確で安定している(突発的な誤差の変動が起こらない → ほぼ一定のオフセット誤差が長時間続く)と想定する。

ズレの原因は、推定した温度センサ(サーミスタ)のパラメタ(B値, 基準抵抗値, 基準温度)が異なっているのかパラメタが温度依存なのか、温度が下がるにつれてサーミスタの抵抗値から得られる温度が高くなるためだった。そのズレの量は、パラメタが合っているであろう温度からの差に比例しているようだ(簡単に言うと、温度が上がるとズレは減る: 下図の灰色の点線が補正量(= ズレの符号を逆にしたもの)。

YL-40の温度センサを直線で補正した。

今までの測定と調整から、補正の式は以下のようになった。

補正パラメタ:

    • 補正する下限の温度: Ta (実際にはこれより低い温度も可能)
    • Taでの補正量: Da
    • パラメタが合っているであろう温度: Tb
    • Tbでの補正量: Db= 0

→ 補正直線の傾き: k= (Da-Db)/(Ta-Tb)

温度補正式: センサの温度をtとすると、補正後の温度t'は以下である。

t < Tbの場合: t’= t + k * (t – Ta) + Da
t >= Tbの場合: t'= t

実際のパラメタは以下になり、kは0.0905となった。

  • Ta: 14.0 (℃)
  • Da: -1.72 (℃)
  • Tb: 33.0 (℃)
  • Db: 0 (℃)

以下に補正の例を示す。

  • シチズン大: 15℃: 補正前のセンサ: 16.35℃, 補正量: -1.51℃ → 補正後のセンサ: 14.8℃
  • シチズン大: 20℃: 補正前のセンサ: 21.15℃, 補正量: -1.07℃ → 補正後のセンサ: 20.1℃
  • シチズン大: 22℃: 補正前のセンサ: 22.84℃, 補正量: -0.92℃ → 補正後のセンサ: 21.9℃

ズレは結構大きく、しかも、ほぼ全温度(33℃以下)でズレて居たことになり、一体僕は何をしていたんだと、なかなか がっかりだ。確かに、夏に調整していた時も、夕方などに なぜか0.6℃くらいズレたままだったことがあって、当時はシチズン大の「熱・冷え溜まり」と思って片付けたが、実は こういうことだったのかも知れない。※ ただ、温度が高くなると上の補正式からズレてくると思う(実際には曲線なのではないか)ので、春や初夏に再度確認・調整したい。

※今、上の式で26℃での補正量を計算したら、-0.63℃だった。合わない0.6℃の正体は これだったのだろうか? (だったら楽で いいが・・・w)

 

何日間も寒い朝に暖房なしで測定するなどの苦労をして、上の補正式とパラメタを求めてプログラムに適用したところ、概ね合うようになった(下に例)。

YL-40とシチズン大の温度が合っている例。: YL-40の温度は右端下部の"Rm ℃"の下。

上のグラフを説明する。: グラフは補正式が分かってからの数日間の測定・補正結果を示している。横軸は温度センサでの温度、縦軸(左)はシチズン大での温度または補正後の温度、縦軸(右)は補正量(オフセット)である。グラフ中央の斜めの点線は補正前後の温度を示す。測定した温度の点が この直線上にある時※、温度センサ(補正後)とシチズン大の温度が「合っている」状態である(ほとんどの点はセンサの分解能の約±0.25℃に収まっている)。

※正確には、「この直線の近くにあるはずの、センサの温度とシチズン大の温度を対比する線上」であるが、センサの温度とシチズン大の温度を対比させることは正確な補正することであるので、描くことはできない。

下のほうの灰色の線は温度センサの温度に対する補正量(縦軸は右)を示す。

たまにズレが大きいことがあるが、暖房をし始めたり、日が出て来たりして温度変化が急な場合に、温度計とセンサの温度反応速度の違いが影響していると推測している。不思議なのは、なかなか合わない領域があることだ(グラフの20-22℃の膨らんだ部分)。

他におもしろいのは、日によって測定点の直線からのブレ方(上か下か)が違うことだ。センサのADCの特性が長短時間的にブレるためかと想像している。そのため、補正後の値のグラフが そのブレの範囲の中央辺りを通るように調整した。

 

最後に苦労話を書く。

センサとシチズン大の温度差をちゃんと測れるようになるまでが大変だった。そもそも、「同じ温度」を比べていないのに気付かずに惑わされたので、何度も試行錯誤した。空調(暖房)の影響にも惑わされた。一時は、机の下の電気ストーブや日射しや横にあるディスプレイの熱もズレる原因かと思ったが、それらはセンサとシチズン大の両方に効くので、直接の原因ではないことが分かった。ただ、反応速度に差があるので、短時間的にはズレるため、原因と誤解してしまった。

やはり、以前も書いたように、正しい測定・計測が一番重要だ。これを しなければ・できなければ、何もできない・始まらない。

測定ファースト!

それから、電源を入れてからセンサが温まるまで(約10分)は温度が低目に出ることにも惑わされた。夏でもそうだったが、寒い場合はその時間が長引くことに気付かなかった。それが分かるまでは、補正は中央辺りでV字に交わる2つの直線(低温側の傾きは負)なのかと思ったが、そんな器用なものではなかったし、日によって結果が異なった(電源を入れる時刻が違うので、開始時の温度も違うため)ので、そのたびに補正パラメタを変更していた。

あと、センサのケースの通風が悪いのかと思って、側面のほぼ全体を開口にしてみたが、効果があったかは不明だ(温度の精度の点では ないだろう)。まあ、埃が入りやすくなる以外は、通風が良くて悪いことはないのでそのままにしているが、もし、センサ付近に埃が溜まるようなら、狭めたい。

 

PS. センサの温度分解能の0.25℃は物足りない。ちょっとした時に差が大きく見えて、気分が悪い。今はADCの測定可能範囲の半分以下しか使っていないので、フルに使うようにすれば0.1℃オーダー(例: 0.18℃)にできる。のだが、かなりの手間が掛かる(例: 明るさも温度も調整・較正し直し)ため保留している。というか、やりたくないw

そもそも、分解能を上げても それに合う精度が あるかは疑問で、「雑音で ふらついているだけ」ってことになるかも知れない(それでも、平均すれば精度が高められる可能性はある。音や画像のディザーのイメージ)。

分解能以外に、ADCの誤差(オフセット, 直線性)を補正できないかと思って基準電圧源を調べたが、手軽なものではADCの分解能(約14mV)を超えるものは なさそうなので諦めた。また、1個だけでは駄目で、少なくとも2個(高・低電圧)必要なので、なかなか大変だ。

  •  1
  •  0
Keys: , ,