照度センサ

このエントリーをはてなブックマークに追加

 

 今回は照度センサです。照度センサでは明るさを取得することができます。取得する明るさの単位は[lx](ルクス)です。今回のシステムでは室内の照度を対象としています。太陽光を測定する場合、フィルタをつけて明るさを抑えるなどの改造が必要です。
 以前作成した7セグメントディスプレイシステムにシリアル通信を使用して照度を送り表示します。

 回路図およびプログラムに関する各種詳細は、以下の記事を参考にしてください。

 

1.今回使用するPICについて

 今回使用するPICは「PIC12F1822」です。

 

2.回路

2.1 電子回路図

 

 

2.2 電子回路の写真

 


抵抗の左側にあるのが照度センサです

 

2.3 回路説明

2.3.1 使用するパーツ一覧
パーツ名 説明 使用数
PIC12F1822 PIC本体 1
照度センサ(S9648-100) 照度センサ 1
抵抗(1[kΩ]) 電源電圧により変更すること 1

注:PICと照度センサにはバイパスコンデンサをつけることを推奨します。つける場合、コンデンサ容量は0.1[μF]でいいと思います。無くても問題なく動作はしていますが、安定しているかどうかはわかりません。

 

2.3.2 PICの配線
PICのピン 接続 補足
VDD 電源 5[V]
RA0 シリアル通信(TxD:送信) 7セグメントディスプレイへデータ転送
RA1 -未使用-  
RA2 -未使用-  
RA3 -未使用-  
RA4 照度センサ(S9648-100)  
RA5 -未使用-  
VSS グランド  
2.3.3 照度の計算方法

 照度を求める場合、以下の計算を行います。

照度 = 電流 / 照度係数

照度係数 = 0.26[mA]/100[lx]
電流 = 電圧 / 抵抗

 

2.3.4 取得可能照度

 今回は最大999[lx]とします。7セグメントディスプレイが3桁であるためと、室内では3桁で十分なためです。もし999[lx]を超えた場合、999[lx]を表示します。

 

3.プログラム

 プログラムの基本的な部分は以下の記事を参考にしてください。AD変換に関しては温度センサの記事を参考にしてください。

3.1 プログラムの説明

 プログラムを見ながら以下の説明を見てください。ソースコードは次の節にあるので、そちらを参照してください。

 

3.1.1 グローバル変数の宣言

 定数の宣言およびグローバル変数の宣言。グローバル変数は7セグメントディスプレイへのシリアル通信でのデータ転送用です。

 

3.1.2 シリアル通信用割り込み処理

 シリアル通信でのデータ転送処理です。

 

3.1.3 PICの初期設定

 各種初期設定です。周波数、ポート設定、シリアル通信設定などを行っています。

 

3.1.4 AD変換

 AD変換し電圧の取得を行っています。

 

3.1.5 電圧から照度計算

 取得した電圧から照度を求めています。PICは小数点の計算は苦手なので、できる限り整数にしています。

 

3.1.6 照度を7セグメントディスプレイPICへ送信

 照度をシリアル通信を使用して7セグメントディスプレイに送信するためのデータを作成しています。

 

3.2 ソースコード

 プログラムの全文を掲載します。

  プログラム新しいウィンドウで開く

<注意>
ファイル名は必要に応じて変更し利用してください。
本サイトの注意事項を確認してください。
ソースコードや回路図などを使用する場合、上記注意とともに、自己責任でお願いします。

    

 

5.動作確認

 起動すると7セグメントディスプレイに照度を表示します。

 

<更新履歴>

 

 日付  内容
2015年7月26日 新規作成
2016年10月7日 フォーマット変更(内容の変更はなし)

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)