公開日:2018/12/24
title.png

3rd Season


#3-5 フォトレジスタとサーミスタ

 Iduinoスタータキットの中に入っていた、フォトレジスタとサーミスタを使ってみます。

フォトレジスタ(CdSセル?)

 フォトレジスタのことを、よく「CdSセル」って言いますけど、今でもCdS(硫化カドミウム、Cadmium Sulphide)を使っているのでしょうか?RoHSの規制対象物質ですし、あまり大手を振って使える物質ではないですよね。

ar35_photor.jpg

 CdSと言えば、II-VI属半導体ですね。光らないSi (IV属)の代わりにIII-V属半導体が活躍しますが、更にその外側、ゲテモノ中のゲテモノ半導体です。が、II-VI属と言えば、ZnOとか透明導電膜としても使用されたりしてます。色々な用途に使用可能で、有用な材料なのかもしれません。……Cdの毒性については困りものですが……。

 CdSは、当てる光の量によって抵抗値が変化するそうです。ですので、「#2-9 抵抗値を測定する」で使った抵抗測定回路とプログラム(meas_resistance.ino)を使って評価してみます。
 残念ながら、光の強さを定量的に測定可能な機器が手元に無いので、モノすっごく非科学的ではありますが、「シチュエーション」別に測定してみた結果を並べてみます。

シチュエーション 抵抗測定値[Ω]
夜、机の上、照明なし、暗闇 inf
夜、机の上、豆電球のみ 98,805
夜、机の上、液晶ディスプレイのみ 20,066
夜、机の上、蛍光灯の真下 1,386
LED懐中電灯で照らす(〜30cm) 483
LED懐中電灯で照らす、至近距離(〜1cm) 78

※敢えて、「夜」測定したのは、昼間だと、太陽が雲に隠れたり、建物の影になったりした影響を受けてしまうためです。夜なら、人工的な光だけですので、制御可能なため。

 すごいですね。78〜inf (∞)[Ω]まで変化しました。「豆電球」というのは、蛍光灯を消したときに代わりに点灯する白熱電球のことです。これだけでも差がわかるほどの抵抗値変化が観測できました。天井の豆電球より、距離が近かったとは言え、液晶ディスプレイのバックライト、明るいなぁ〜。
 定量的な光量を知るためには、別途校正が必要となりますが、相対的な光量の変化を検知したり、特定の測定環境において、「人間が暗いと思う明るさ」を検知して、自動的に照明器具をONにするとか、その程度の(定性的な)用途であれば、すぐにでも応用できそうです。

※尚、ATmega328の10ビットAD変換器を使った測定では、「計算上inf (∞)になってしまった」、と言うだけのことで、実際の抵抗値は数100kΩくらいでしょうか?抵抗測定回路の基準抵抗(上測定では1kΩを使用)も、数100kΩの抵抗値を測定するには、ちょっと小さすぎるかと思われます。

 それにしても、78Ωまで抵抗値が下がるとは、予想外でした。もし、Vcc−GND間にフォトレジスタを直結してしまうと、抵抗値が78Ωになるほどの強い光が当たってしまったときに、大電流が流れてしまいます。LEDを光らせる時と同様に、適切な電流制限抵抗を直列に挿入する必要がありますね。

 それと、実験していて分かったのは、反応が速いことです。相対的に明るくしたり、暗くしたりした時、ほとんどタイムラグなしで、すぐに抵抗値が変化しているように見えます(少なくとも、人間の目で認知できる範囲内では)。例えば、ちょっと手をかざして影を作ってしまうと、すぐにそれに反応して抵抗値が上昇する、などです。
 センサで測定した物理量に対して、何らかのアクション(照明を点灯するなど)を起こしたとき、アクションに対する応答が早く返ってくると、圧倒的に制御が容易になりますから、大きな利点です。

サーミスタ

 フォトレジスタに関連して実験するのも何ですが、サーミスタと言う素子も、温度の変化に従って抵抗値が変化する素子なので、ついでに実験しておきます。前節と同様な抵抗測定回路で評価できます。

ar35_thermis.jpg

 さっきのフォトレジスタとは比べ物にならないほど小さいです。先っぽの黒い部分は、直径2mm程度でゴマ粒より小さいくらい。測定したい部分に当て易い様に、デュポンワイヤのコネクタに挿して使います。

 一般の金属は、温度が上昇すると抵抗値も上昇します。一方、Iduinoスタータキットに入っていたサーミスタ(上図)は、温度が上昇すると抵抗値が低下するという、逆の動きをします。まあ、「サーミスタ」としての特徴は、「逆に働くかどうか?」ではなくて、「温度の変化に従った特性の変化量が大きいかどうか?」なのですが。

 3時のお茶の時間に入れたホットコーヒーのマグカップに接触させて、暫くしてから抵抗値を測って比べてみます。

サーミスタ 抵抗値[Ω]
  室温 10,350
  マグカップに接触 3,470
金属皮膜抵抗 抵抗値[Ω]
  室温 9,978
  マグカップに接触 10,000

 サーミスタと、もう一方は普通の金属皮膜抵抗(定格10kΩ)です。沸かしたての熱湯を入れたマグカップなので、50〜60[℃]くらいはあるはずです。金属皮膜抵抗の方は、ものすごく微妙ですが、高温にすると、わずかに抵抗値が上昇しています。サーミスタは逆の動きをして、高温になると抵抗値が下がる結果となりました。また、抵抗値の変化量が圧倒的に大きいこともわかります。

温度変化を測定してみる

 さて、「第9回 気温・湿度のログを取る(後編、最終回)」でご紹介した、気温・湿度ログ取得用に使っている小型のPC(CANPC)ですが、ちょっと負荷の高い処理をさせると、筐体(アルミ製?)が温かくなります。そこで、CANPCの温度をサーミスタで測定して、ログを取ってみます。

ar35_canpc.jpg

 サーミスタはとても小さいので、SDカードスロットに突っ込んで測定しました(中で金属部分がショートしない程度に浅く(1^^;))。

 CANPCは、さすがに鈍いAtomなので、普段はあまり重たい処理はさせないのですが、高負荷にして温度を上昇させたいので、レイトレーシングを実行しました(Xi-TRACE)。Atom z7-Z8700 @1.60GHzなので、2コア4スレッドですね。Xi-TRACEでCPU 2個に分配して、CPU負荷80%↑の状態で計算し続けました。
 縦軸がサーミスタの抵抗値、横軸に測定開始からの時間を取ってグラフにしました。

ar35_therm.png

 ある程度温度上昇(⇔抵抗値の低下)が落ち着いてきたので、50分過ぎ辺りで、外部のUSBファン(扇風機)をONにして、空冷しました。サーミスタはSDカードスロットに突っ込んであるので、USBファンの風は、直接当たらないようになっています。筐体が金属製(おそらく、ヒートシンクを兼ねている)なので、外から空冷することで内部の温度も相当下がっているようです(上図)。
 ちなみに、測定時は冬場12月中旬、室温21.8℃で測定開始しました。冬場なので、実験中、PCのパフォーマンス低下は見られませんでしたが、夏場だと、温度上昇によって動作周波数が低下し、パフォーマンスが一気に低下してしまう、残念な機体です。

温度に換算する

 サーミスタの抵抗値[Ω]と絶対温度[K]の関係式は、以下の様に表すことができるそうです。

ar35_bconst.png

 温度T0[K]の時の抵抗値がR0だった場合に、温度T[K]では、抵抗値がRになるという関係式ですね。Bは「B定数」と言って、サーミスタごとに異なるのだそうです。ただ、この式で表されることがわかっていれば、2点の温度と、その時の抵抗値を知れば、Bは求めることができます。すなわち、測定した抵抗値から温度を逆読みすることが可能となります。
 筆者の手元には、温度を測定する器具(温度計)が無いので、ここまで\(1^^;)/。


 サーミスタで温度をモニタしながら、外部USBファンのON/OFF制御し、PCを冷却する用途に使えるかもしれません。……来年の夏までに実現できるかな(1^^;)っ?


btn_arduino.png

btn_prev.png btn_next.png

home