部品屋根性(14) Thermistorモジュールの素性

Joseph Halfmoon

再び、お楽しみの中華部品キット Kuman K4キットに戻ってまいりました。Kitの意図するArduino(の互換機)で動作すれば良い、というスタンスを全く守らず、異なる方法で付属の部品を端から動かして観察しています。この前はDHT11温湿度センサであったので、今回は同じ温度センサつながりでサーミスタ・モジュールを取り上げさせていただきます。

※「部品屋根性」投稿順Indexはこちら

サーミスタ(温度で抵抗が変化する素子)については、本サイトでも何度も取り上げさせていただいておりますが、Kuman K4キット付属のサーミスタ・モジュールについては、最初、分からないことだらけでした。いつものようにArduinoで動かした例が日本語ドキュメント(英語などもあり)で説明されているのですが、

温度といいつつ、ADコンバータの生の測定値を垂れ流し

ているだけなんであります。サーミスタの特性値を使って温度に変換しようなどということは一切していません。また、アイキャッチ画像にあるような小さな基板になっているのですが、どんな回路なのかは書いてません。ただ、Arduinoとの接続方法が書かれているのみ。初心者が同じことをするのは簡単ですが、温度を求めようとするとその先皆目分からないのではないでしょうか。そのうえ、狭いところに押し込めてあったためか、サーミスタの配線が折れ曲がり、モジュール端の端子も1本が曲がっていました。「細かいこと」をトヤカク言いますまい。ペンチで修正すれば動作そのものはOKですから。

Thermistor Module Circuitまずは、基板の回路がどうなっているのか調べてみます。基板そのものにはサーミスタ以外に10kΩの抵抗が一つ載っているだけのシンプルなもの。テスタで端子間の抵抗をあたれば、左図のような回路であると分かりました。なお、サーミスタの出っ張っている面を表として、左の端子から、Pin1, Pin2, Pin3と勝手に呼んでいます。

サーミスタの抵抗は、室温21.4℃にて112.6kΩと測定しました。ついでに、サーミスタを指で温めて、抵抗の変化を見ていると、どんどん抵抗は小さくなり、70kΩ台まで低下いたしました。これにて、温度が上がると抵抗が下がるNTCタイプのサーミスタである、と確認できました。

後は、この使われているサーミスタの特定さえわかれば、温度に換算することは難しくはない(精度を追い込もうとすると時間がかかりますが。)サーミスタの抵抗の特性を表す式として、よく使われている近似式としては以下があります。

NTC_Thermistor_FormulaT0は基準温度(25℃にとることが多いようです)で、そのときの抵抗値がR0です。Bはサーミスタの特性を表す定数、そして測定時の温度がTであれば、そのときの抵抗値はRTになる、という具合です。なお、Tは絶対温度なので、摂氏から換算して代入することを忘れずに。

小さなマイコンに実装するときは、浮動小数点数やexp、lnといった関数を使うのを避けたいので、電圧測定値から温度を求める変換表を温度範囲毎折れ線グラフ近似などで実装する感じですかね。

通常、サーミスタのデータシートを読めば、B値やR0に相当する値が書いてあるので不明な部分はありません。しかし、キット付属のCDの中に格納されていたサーミスタのデータシートを読むと、

B値の異なる11品種のサーミスタが列挙

されています。そして現物のサーミスタモジュールに実装されているサーミスタには型番を示すような記号など一切ありません。どれを選択したら良いのじゃ?その上、データシートにはR0として使えるような値の記載も見当たりません(別にR25という値が定義されていたのですが、値の幅が広く、実機相当のkΩ単位にも見えず、こちらの期待するような値ではないです。なんなんだろ。)

しかし、さすがKuman社、箱の中の探検者のために、手がかりを用意しています。今回は、サーミスタのデータシート(PDF)のファイル名に注目です。

MF52D-103f-3950 Thermistor.pdf

よく見れば、これはデータシート記載の Ordering code (デバイス屋さんに部品発注するときに使う注文番号、多くはそれを聞けばどんな部品か分かることが多い)そのものした。

  • MK52シリーズ
  • D=PVC insulation wire品
  • 103: 25℃での抵抗が103kΩ
  • F:上記の許容値±1%
  • 3950:B値

データシートの内部にではなく、ファイル名に必要な情報を盛り込んでおくとは恐るべし。。。

しかしですね、ちょっと不安があります。

本当にそうなのか?

とりあえず計ってみた抵抗値とちょっと乖離しているような気がするのです。どうしたものかと思って調べていたら、素晴らしいページがあることに気付きました。偉大なCQ出版さんのサイトで小川さんという方が書かれていました。

サーミスタを使用した温度測定回路

ここに書かれている方法を使うと、御馴染みのLTspice使って、サーミスタの特性グラフなど、ちょちょいと描けてしまうのです。早速、やってみました。

MF52D_103f_3950_SPICEそして、得たグラフがこちらです。グラフの大体12.3℃のところにカーソルが当ててあるのを覚えておいてくだされ。MF52D_103f_3950_CHAR

先ほど現物の抵抗値について、21.4℃のときの値が112.6kΩだった、と書きましたが、温度を下げたときの抵抗値も測っておいたのです(恒温槽や校正済の温度計などないのでありあわせの環境ですが。)

12.3℃にて197.9kΩ

でした。温度2点の抵抗値があれば、B値を計算してみることができます。そこでも自分で計算する必要などありません。時々お世話になるカシオ様の高精度計算サイトへ行けば、

NTCサーミスタのB定数の算出

があり、ここに測定値を代入すればB定数算出できます。計算値は、

5210K

ううむ、3950Kとは大分ちがうんでないかい。

実際にサーミスタ・モジュールをマイコンにつないで温度を測るときは、電圧をADで測定する形になります。PDFのファイル名から得た特性と、現物で測定(測定環境ボロボロではあるけれど)の特性でLTspiceに計算してみてもらいました。

ThermistorMod_COMP_spice上の回路をシミュレーションした結果がこちら。緑の線がファイル名から読み取った特性のグラフ、青の線が実機測定結果から求めた特定のグラフであります。遠くからみたら、似たようなものかもしれないけれど、近寄ってみたら大分差があります。27℃付近なら、緑と青で温度的には3度くらいも違う結果が出そう。

ThermistorMod_COMP_char

これはセンサの個体差、バラツキなんですかね。でもそれにしたらデータシートの規定値を上回っている気も多いにするのですが。それとも私の測定が悪いのか。どうなんだろ。

部品屋根性(13) S9705、フォトICの中を覗く へ戻る

部品屋根性(15) AN logic社、FPGA へ進む