目次>5章 第2ステップ(色々な実験)>(7)暗くなったら明かりを点ける

暗くなったら明かりを点ける

更新日2005.10.23

Cdsセルと言う、明るさで抵抗値が変わる素子を使って、暗くなったら明かりを点ける実験を行います。
夜になったら門灯を点けるなどの応用が可能です。

Cdsセルとは

Cdsセルは、硫化カドミウムを主成分とした光導電素子で、可視光線に対して高感度に反応し抵抗が変化します。
暗いと抵抗が大きくなり、明るいと抵抗が小さくなります。(種類や明るさによりますが、200Ω〜1MΩと大きく変化します)

色々なサイズがあり、サイズにより受光感度や抵抗値の範囲が異なりますが、今回の実験回路はどんなサイズでも対応できると思います。

− 参考 −
原理や使い方は異なりますが、光に反応する同様の素子として、フォトダイオードやフォトトランジスタがあります。
Cdsセルに比べ、光に対する反応が早いためスイッチング回路などに使用されます。

実験回路

今回作成する回路図です。
今まで使っていた実験回路のRA0にCdsを接続しています。
RB0,RB1は今まで通りLEDを接続していますが、半導体リレー(SSR)に変更すれば家庭の電源(AC100V 蛍光灯や電球など)を制御することもできます。

新たに必要なパーツは、Cds,抵抗,可変抵抗です。

可変抵抗は、つまみを取り付けられるタイプでは無く、基盤に取り付けるトリマ(半固定抵抗)にします。

今回は左から3番目のタイプを使用しました。

右の2つのタイプはつまみを取り付けるタイプです。

ブレッドボードに組み込んだ状態です。

CdsをPICの入力として使う
PICの入力特性は下図のようになっています。(電源電圧が5Vの場合)

入力電圧が、2V以上であればONとなり、0.8V以下であればOFFになります。

今回の実験回路で、明るさによりCdsの抵抗が変化した時、その抵抗値とRA0の電圧の変化を以下に示します。

Cdsの抵抗が50KΩの場合、RA0の電圧は約0.45VとなりPICの入力としてはLow(OFF)になりますCdsの抵抗が400KΩの場合、RA0の電圧は約2.2VとなりPICの入力としてはHigh(ON)になります
本が読めるが、長時間読むなら明かりが欲しい位の明るさ本を読むのはかなり厳しい明るさ

プログラムを作成
プログラムは非常に単純です。

RA0がON(暗い)ならRB0をON(緑色LED点灯)にし、RA0がOFF(明るい)ならRB0をOFF(緑色LED消灯)にします。
赤色LEDをRB1に接続していますので、こちらは逆の動作をさせましょう。

従って、次の動きになります。
明るい時は、赤色LEDのみ点灯
暗い時は、緑色LEDのみ点灯

単純なプログラムですのでフローは省略します。プログラム全体を参考にして下さい。

出力をSSR(半導体リレー)にして実用化する場合は、タイマロジックを組み込んで下さい。
入力がOFFからONになった時、一定時間は入力判定せずにそのままの状態を保ちます。
逆に、入力がONからOFFになった時も同じです。
これは、PICがON/OFFと認識する電圧の間の時に、ON/OFFを繰り返す場合があるためです。

タイマロジックについては、目次の索引から「一定の時間を作る」を参考にして下さい。
命令をループさせる方法と、TMR0割込みを使う方法があります。

プログラム全体
上記の処理を組み込んだプログラムはこちらです。
メモ帳などのテキストエディタに取り込んで、CDS.ASMという名で保存し、MPLABでアセンブル&PICライタでPICに書き込んで動かしてみて下さい。