Iduinoスタータキットの中に入っていた、フォトレジスタとサーミスタを使ってみます。
フォトレジスタのことを、よく「CdSセル」って言いますけど、今でもCdS(硫化カドミウム、Cadmium Sulphide)を使っているのでしょうか?RoHSの規制対象物質ですし、あまり大手を振って使える物質ではないですよね。
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を光らせる時と同様に、適切な電流制限抵抗を直列に挿入する必要がありますね。
それと、実験していて分かったのは、反応が速いことです。相対的に明るくしたり、暗くしたりした時、ほとんどタイムラグなしで、すぐに抵抗値が変化しているように見えます(少なくとも、人間の目で認知できる範囲内では)。例えば、ちょっと手をかざして影を作ってしまうと、すぐにそれに反応して抵抗値が上昇する、などです。
センサで測定した物理量に対して、何らかのアクション(照明を点灯するなど)を起こしたとき、アクションに対する応答が早く返ってくると、圧倒的に制御が容易になりますから、大きな利点です。
フォトレジスタに関連して実験するのも何ですが、サーミスタと言う素子も、温度の変化に従って抵抗値が変化する素子なので、ついでに実験しておきます。前節と同様な抵抗測定回路で評価できます。
さっきのフォトレジスタとは比べ物にならないほど小さいです。先っぽの黒い部分は、直径2mm程度でゴマ粒より小さいくらい。測定したい部分に当て易い様に、デュポンワイヤのコネクタに挿して使います。
一般の金属は、温度が上昇すると抵抗値も上昇します。一方、Iduinoスタータキットに入っていたサーミスタ(上図)は、温度が上昇すると抵抗値が低下するという、逆の動きをします。まあ、「サーミスタ」としての特徴は、「逆に働くかどうか?」ではなくて、「温度の変化に従った特性の変化量が大きいかどうか?」なのですが。
3時のお茶の時間に入れたホットコーヒーのマグカップに接触させて、暫くしてから抵抗値を測って比べてみます。
サーミスタ | 抵抗値[Ω] |
室温 | 10,350 |
マグカップに接触 | 3,470 |
金属皮膜抵抗 | 抵抗値[Ω] |
室温 | 9,978 |
マグカップに接触 | 10,000 |
サーミスタと、もう一方は普通の金属皮膜抵抗(定格10kΩ)です。沸かしたての熱湯を入れたマグカップなので、50〜60[℃]くらいはあるはずです。金属皮膜抵抗の方は、ものすごく微妙ですが、高温にすると、わずかに抵抗値が上昇しています。サーミスタは逆の動きをして、高温になると抵抗値が下がる結果となりました。また、抵抗値の変化量が圧倒的に大きいこともわかります。
さて、「第9回 気温・湿度のログを取る(後編、最終回)」でご紹介した、気温・湿度ログ取得用に使っている小型のPC(CANPC)ですが、ちょっと負荷の高い処理をさせると、筐体(アルミ製?)が温かくなります。そこで、CANPCの温度をサーミスタで測定して、ログを取ってみます。
サーミスタはとても小さいので、SDカードスロットに突っ込んで測定しました(中で金属部分がショートしない程度に浅く(1^^;))。
CANPCは、さすがに鈍いAtomなので、普段はあまり重たい処理はさせないのですが、高負荷にして温度を上昇させたいので、レイトレーシングを実行しました(Xi-TRACE)。Atom z7-Z8700 @1.60GHzなので、2コア4スレッドですね。Xi-TRACEでCPU 2個に分配して、CPU負荷80%↑の状態で計算し続けました。
縦軸がサーミスタの抵抗値、横軸に測定開始からの時間を取ってグラフにしました。
ある程度温度上昇(⇔抵抗値の低下)が落ち着いてきたので、50分過ぎ辺りで、外部のUSBファン(扇風機)をONにして、空冷しました。サーミスタはSDカードスロットに突っ込んであるので、USBファンの風は、直接当たらないようになっています。筐体が金属製(おそらく、ヒートシンクを兼ねている)なので、外から空冷することで内部の温度も相当下がっているようです(上図)。
ちなみに、測定時は冬場12月中旬、室温21.8℃で測定開始しました。冬場なので、実験中、PCのパフォーマンス低下は見られませんでしたが、夏場だと、温度上昇によって動作周波数が低下し、パフォーマンスが一気に低下してしまう、残念な機体です。
サーミスタの抵抗値[Ω]と絶対温度[K]の関係式は、以下の様に表すことができるそうです。
温度T0[K]の時の抵抗値がR0だった場合に、温度T[K]では、抵抗値がRになるという関係式ですね。Bは「B定数」と言って、サーミスタごとに異なるのだそうです。ただ、この式で表されることがわかっていれば、2点の温度と、その時の抵抗値を知れば、Bは求めることができます。すなわち、測定した抵抗値から温度を逆読みすることが可能となります。
筆者の手元には、温度を測定する器具(温度計)が無いので、ここまで\(1^^;)/。
サーミスタで温度をモニタしながら、外部USBファンのON/OFF制御し、PCを冷却する用途に使えるかもしれません。……来年の夏までに実現できるかな(1^^;)っ?