PR

サーミスタは自己発熱する(Arduinoで温度を測るときの注意)

サーミスタを使ってArduinoで温度計を作ってみた。センサ部の回路はよくあるもので、+5Vを抵抗とサーミスタで分圧して、その電圧をArduinoのADコンバータで見る。

しかし、測定結果がどうも高めの温度になってしまう(1~2℃程度)。サーミスタの抵抗値から温度に変換する計算式がよくないのかとか思ったのだけど、調べているうちにサーミスタの自己発熱というものを知った。

自分で熱を出してしまうのなら、そりゃ測定値が高くなるわなぁ。じゃ、どのくらいの電流を流すのが適切なのか知りたくなるのだけど、素子によって違うらしく、目安となりそうな値は見つけることができなかった。

しょうがないので、試しにサーミスタへ供給する電圧を3.3Vにしてみた(Arduinoには3.3V端子があるので簡単)。ADコンバータの基準電圧はEXTERNALに設定し、3.3VをAREF端子に突っ込む。

これでやってみると、期待通りに、5Vを加えていたときよりも測定結果は低めになった。それでも、まだちょっと高い(0.5~1℃程度)。

なお、使用したサーミスタはNXFT15XH103FA2B050。

もっと電流を下げるといいのかな?やるとすれば、上の図のR2(基準抵抗)の値を大きくする。二倍とか?それに合わせてサーミスタの抵抗値計算を修正する必要もある。

あるいは、供給電圧を下げる。それならプログラムの変更はいらない(電圧の絶対値を測るのではなくて、基準抵抗との比で見ているため)。電圧を下げると言っても、レギュレータを使うのは仰々しい。手っ取り早いのは抵抗二本で分圧する方法。負荷は(ほぼ)変動しないのでこれでもよかろう。

470Ω×2を使ったのは適当。あまり多くの電流は流したくない(もったいない)けど、測定対象の10kΩ+サーミスタよりも充分小さいだろうという値。ついでにパスコンも付けてみた。これで定格上では1.65Vということになる(ぴったり半分にしなけれないけないものでは全然ないので、この抵抗の精度は問わない)。

結果はいい感じ。±0.5℃の温度センサ(ADT7410)を使った温度計(温度計付きGPS時計)とほぼ同じ温度を示すようになった。と言っても0.5℃位はふらつくが(どちらかといえば高い値側に振れやすい)。

サーミスタって結構発熱するものなのね。最適な電圧(電流)値ではないかもしれないけど、とりあえずこれで良しとする。

なお、このサーミスタは25℃のときに10kΩなので、基準抵抗の10kΩと合せて20kΩ。したがって、各電圧でのサーミスタに流れる電流値は次の通り。

5V250μA
3.3V165μA
1.65V82.5μA

コメント