目次>5章 第2ステップ(色々な実験)>(8)人が近づいたら明かりを点ける

人が近づいたら明かりを点ける

更新日2005.11.12

焦電型赤外線センサと言う、人の動き(赤外線のゆらぎ)を検出する素子を使って、人の動きがあったら明かりを点ける実験を行います。
(7)暗くなったら明かりを点けるで使ったCdsセルと組み合わせる事で、夜ひとの動きを検出したら明かりを点けるといった事が可能になります。

焦電型赤外線センサとは

焦電素子と言う、熱(赤外線)の変化を電流に変換できるセラミックスを使用し、温度変化を検出できるものが焦電型赤外線センサです。

比較的速い温度変化に感応しますので、夜から朝になるにつれて温度が序所に上がるようなケースには反応しません。センサの近く(2m〜10m)で人が普通に動くような温度変化に反応します。

通常は、レンズを付けて狭い角度で遠くまで検知させたり、近くを広い角度で検知したりできるようにします。

焦電型赤外線センサから出力される電流は非常に小さいので、そのままではPICの入力にはできず、アンプで増幅する必要があります。
また、温度変化の方向により、+−両方向の電流が発生しますので、通常はコンパレータにより両方向の電流を面倒見る必要があります。
回路をイメージで表すと以下のようになります。

この回路を作るのは少し厄介です。

そこで、上の回路を一つのパッケージにした、松下電工のNaPiOnというセンサを使用する事にします。

3年程前は3000円以上しましたが、今では(2005.11)秋葉原で1600円で入手できます。

(2007.10)
この間、秋葉原に行ったら1050円まで下がっていました。
焦電型赤外線センサーとオペアンプを組み合わせて自作するのと同等の価格です。

NaPiOnのページ:http://www.mew.co.jp/ac/control/sensor/human/napion/index.jsp

実験回路

今回作成する回路図です。
今まで使っていた実験回路のRA0にNaPiOnを接続しています。
RB0,RB1は今まで通りLEDを接続していますが、RB1を半導体リレー(SSR)に変更すれば家庭の電源(AC100V)を制御できるようにプログラムを作成します。

新たに必要なパーツは、NaPiOn一つと100KΩの抵抗2つだけです。

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

プログラムの作成
前のCdsセルの実験で作ったプログラムがあったらそのまま動かして見て下さい。
NaPiOnの前で手を動かすと、赤と緑のLEDが点滅すると思います。

これで実験を終わっても良いですが、今回はこれにタイマ処理を追加します。

プログラムの概要

ひとの動きを検出して明かりを点けた場合、動きが無くなっても10秒程度は明かりを点けたままにした方が実用的です。
また、NaPiOnは電源投入から回路が安定するまで平均7秒かかりますので、電源投入後10秒待ってからNaPiOnの出力判定を開始します。
今回の実験回路は、出力としてLEDを二つ付けていますので、次のような処理をするプログラムを作成します。
RB0(緑色LED):NaPiOnの出力をそのまま出力する。(NaPiOnの動作を確認するため)
RB1(赤色LED):NaPiOnの出力がONになったらONにするが、NaPiOnの出力がOFFになっても10秒間ONのままとする。

以下は処理フローです。

プログラムで使用するフラグ

上の処理フローでは、フラグを2つ使っています。その使い方は次のようにしています。
フラグ用 途
napionNaPiOnの出力変化を3つの状態で管理します。
0:NaPiOnの出力が10秒以上OFFの場合
1:NaPiOnの出力がONの時、1にする
2:NaPiOnの出力がONからOFFになった時、2にする
flag10sTMR0割り込みルーチンで10秒経過をカウントしたら1にする

10秒待つには

10秒待つ処理は、TMR0を使用します。
(TMR0については「(5)TMR0割込みを使う」を参照して下さい。)

以下の条件で、約26.2mS毎にTMR0割り込みが発生します。
クロック10MHz
TMR00(256回で割り込み)
プリスケーラ256(OPTIONレジスタのPS2−PS0を111に設定)
このTMR0割り込み38回で約1秒となり、さらに10回繰り返す事で約10秒を作り出します。(実際は約9.96秒ですが、今回のプログラムは正確な時間は必要無いのでこのようにしました。)
この処理は、TMR0割り込み処理の中で行い、10秒経過したら「flag10s」を1にします。

フローには記述していませんが、38回カウントおよび10回カウントのために、「CNT38」と「CNT10」というカウンタを使用しています。

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