〇フォトレジスタで明るさを測定する
明るさを測定するには光センサーが必要です、そこで光センサーの一種であるフォトレジスタを使って明るさを数値に変換したいと思います。
フォトレジスタは光の強度により抵抗値が変化する部品で硫化カドミウム(CdS)が使われておりcdsセルとも呼ばれます。
反応速度は遅いですが、光が強くなるに従って抵抗値が小さくなってゆく性質があり、抵抗分圧により抵抗値を電圧に変換して使用する事が多いと思います。

こちらが回路の全体像です、5VとGNDの間に抵抗とフォトレジスタを接続して電圧の変化をアナログピン5番により値として読み込みます。

今回使用するフォトレジスタと100Ω抵抗2本です。

はんだ付けして回路を作成します。

回路の全体像に従って部品を取り付けます。
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println( analogRead( A5 ) );
delay(100);
}
Arduinoマイコンボードには上記プログラムを書き込みました。
シリアル通信によりマイコンからパソコンにデータが送られます。
ArduinoIDEのシリアルモニタを開くと明るさのデータが100ミリ秒毎に送られて来ているのが確認できるはずです。
フォトレジスタを手で覆ったりして暗くすると値が変化するのが見れると思います。
■フォトレジスタまでの距離を長くする
フォトレジスタをもう少し遠くにセットしたい時にはケーブルを長くする必要があります。
しかし、ケーブルを長くするとサージ(静電気やノイズなど)によりマイコンのポートが破壊される可能性が高くなります。
もともとマイコンにはサージ対策用のダイオードが入っていますが確実とは言えません。
そこで、クランプダイオードによるサージ対策を考えます。
▼ポートがVccよりもプラス側に高い電圧がかかった場合

ポートがVccよりもプラスになった場合にはダイオードを使い、ポートからVccに逃がす事によりポートが保護されるはずです。
▼ポートがGNDよりマイナス側に高い電圧がかかった場合

ポートとGNDの間にダイオードを付けて電圧を逃がすことが出来そうです。
▼大きな電流が流れてきた場合

ダイオードの許容できる電流量を超えた場合にはポートに直接ながれてしまいます。
そこで、可能な限り大きな抵抗を手前に取り付けることにより電流を制限します。
■実際にフォトレジスタを取り付けて配線を長くした回路
フォトレジスタとの抵抗分圧の抵抗値は10KΩに変更しました。

ダイオードはシリコンダイオードよりも順方向電圧(Vf)が低いショットキーバリアダイオードを使うべきです。
シリコンダイオードだと、電気が流れるのに0.6V〜0.7V程度の順方向電圧が必要ですのでこの場合、5.7Vぐらいにならないとダイオードが動作しません。
そうするとマイコンのポートが破壊されてしまう可能性が高くなります。
ショットキーバリアダイオードでも、順方向電圧(Vf)が0.15〜0.5V以上の物もあり、データシートを見て選ぶ必要があります。
■ツエナーダイオードを使った保護回路
5.1Vのツエナーダイオードを使用すると、ポート側が5.1Vに達した時点で電気をGNDへ逃す事が出来ます。
マイコンのポートが破壊される可能性をより下げる事ができそうです。

▼屋外でも使用できるように感度調整
抵抗分圧の抵抗値が10KΩだと屋内での明るさには対応できましたが、屋外での明るさだと値が上限に近い所でしか動かずデータがとりずらいです。
そこで、抵抗の横にもう一つ1KΩの抵抗を並列に接続して感度を調整しました。
並列接続の合成抵抗値は900Ωになります。
可変抵抗を使っても良いのですが、調整により値が変動されるとソフトウエアでは扱いにくくなるため固定にしました。

■ローパスフィルタによるノイズ対策
実際に回路を設置してみたのですが近くのリレーにAC100Vを通電させると取得したアナログ値が20前後大きくなり値が不安定になりました。
交流のノイズによりマイコンのA/D変換回路が影響を受けていると考えられます。
そこで、ローパスフィルタを作成し交流成分を取り除きます。

赤の点線で囲まれた部分がコイルとコンデンサで構成されたローパスフィルタ(低周波成分を取り除くフィルタ)です。
接続先がフォトレジスタで反応が遅くてもよいので、すべての周波数をなめらかにするぐらいの大きなコイルと大きなコンデンサが良さそうな気がします。

スクラップから大きめのトロイダルコイル(推定740uH)と大きめの電解コンデンサ(470uF)を拾ってきて作成しました。

実際に回路に取り付けてみました。
大きなコイルとコンデンサの威力は素晴らしく、AC100VのリレーをON/OFFしてもアナログ値の変化は5以下で影響はほとんど受けなくなりました。
こちらを実際に使用してみて問題がないのか確認してみたいと思います。
▲トップページ
>
マイコンなど