第六章 焦電型赤外線センサー


焦電型赤外線センサー基板を利用できるように配線しなおす

焦電型赤外線センサモジュールは秋月電子通商で販売しています。単体のセンサを使うことも出来ますが、こちらの方がアンプなどが内蔵されているので開発が簡単です。

購入時はこのような姿です
接続されている配線を外します
表側:カバーと配線を取り除いて、新たな配線を行ったセンサー側。 裏側:直接A/Dコンバータに接続したり、電源を供給できるように配線する。
赤:CPU側の3.3V電源に直接つなげる。
緑:これが検知した電圧です。A/Dコンバータ入力につなげる。
黒:3つの穴の真ん中がグラウンドです。
橙:3.3Vにプルアップするために近くの105表示の抵抗の電源側に22kΩの抵抗を、3つの穴のうちの出力につなげ、オレンジで引き出す。他の配線と接触しないように熱収縮チューブをかぶせている。これはCPUへの割り込み信号として利用する。
引っ張られて配線が取れないように、穴に通してから引き出す。
ロボットに装着したところ。
適切なカバーを付けないと、前後左右からの熱ノイズによって、正しくは動作しない。


重要注意事項
下のチェックプログラムの上部には下記の宣言などが必要です。
#include "interruptClass.h"
extern BYTE intKind;
void startInit(char* str);


次のチェックプログラムは割り込みの部分をテストし、その時のアナログ値を読んでいます。

焦電センサ割り込みテスト
void main()
{
  startInit("\n***** 焦電センサ割り込みテスト ****\n");
  Timer tm;
  ADCon ad;
  int thermoValue;
  interruptClass wkp = interruptClass(2, 0);//立下り
  wkp.enable();
  CPU.BuzzerSet(0x80,0x80);
  intKind = 0;
  while(true)
  {
    LED(0);
    if(intKind & 4){
      LED(2);
      tm.wait(50); 
      for(int i=0; i<5; i++)
      {
        thermoValue = ad.value(2);
        if(thermoValue<490) {
          LED(1);
          CPU.BuzzerStart();
          tm.wait(100); 
          CPU.BuzzerStop();
          tm.wait(1000);
          break;
        }
        printf("%d ", thermoValue);
        tm.wait(100); 
      }
      printf("\n");
      intKind &= 0xfb;
    }
  }
}
 1 
 2 
 3 
 4 タイマーオブジェクト
 5 焦電センサのアナログ値のオブジェクト
 6 焦電センサのアナログ値を保持する
 7 割り込みオブジェクト。wkpのbit2の立ち下がりエッジで割り込む
 8 割り込み許可
 9 ブザーの初期設定
10 割り込み変数の初期化;割り込みの種類を保持する
11 永久ループ
12 
13 
14 wkpのbit2から割り込みがあったかのチェック
15
16 両方とも近かったら以下のif文の中を処理する
17 とりあえず5回チェックしてみる
18
19 焦電センサの値を読む
20 その値が通常から外れていたら
21 
22 ブザーを鳴らす
23
24 ブザー停止
25
26
27
28
29
30
31
32 bit2からの割り込み処理終了
33
34
35


第七章に行く    ホームに戻る