●RCWL-0516マイクロ波レーダーセンサーを使ってみる

レーダーにより人間などの動きを検出するセンサーで焦電型赤外線モーションセンサの代わりになるそうです。


通常の使い方だと、端子のVINに5Vのプラス、GNDにマイナス、OUTとGNDの間にLEDを取り付ける。
左側の部品面が表でこの方向にレーダーが照射されるみたいで、電源ON後LEDが点灯し数秒後消灯、電源ONから10数秒経った時点からからセンサー作動、
表側の人体などの動きでセンサーが反応するとLEDが1〜2秒ほど点灯して人体を検出できました、めでたしめでたしとなるわけです。

しかし、このセンサーが不安定で、電源のノイズの影響なのか電圧の問題なのか、検出距離や感度がよくわからないので色々いじってみたいと思います。
まず、センサーに乗っているICのピンを調べる事にしました。



1OUTや1IN - 1IN + 2OUT 2IN - といった端子が出てきます。
ひょっとしたらレーダーの出力の増幅量を調整するオペアンプの端子じゃないかと思えてきました。
そこで、レーダー部分の回路図を調べました。



レーダー部分の回路図では例の端子でセンサーの増幅量を調整しているようです。
つまり簡略化するとこのようなイメージでしょうか。



このイメージで行くと、1OUTと2OUTに直接線を繋ぐとレーダーの信号を電圧で直接取得できるのではないかと思います。
そこで、1OUTと2OUTに直接配線して信号を取り出してみます。


まずはICチップの足に直接配線をとりつけてみます。


全体像はこのような感じです。

取り出した信号線に電圧計代わりのArduinoを取り付けてアナログピンから電圧を読んでみます。


ArduinoではアナログピンA0番の電圧を単純に読み出してパソコンに送信するプログラムを書き込んでおきます。
void setup() {
  Serial.begin(9600);
}
   
void loop() {
  Serial.println( analogRead( A0 ) ); 
  delay(100);
}

Arduinoとの配線をGNDはArduinoのGND、VINはArduinoの5Vに接続してセンサーの2OUTをArduinoのA0に接続しました。
ArduinoIDEのシリアルプロッタを動作させて電圧の変化を見る事にしました。


センサーに手をかざすと波形が大きくなり、検出している事が確認できました。


ちなみに、1段目のオペアンプ1OUTの出力では、値の変化が小さいです。
センサーに手をかざすと変化が小さいですが検出している事を確認できます。


■高感度で人間の動きを検出できるようにする

このレーダーモジュールは物によってうまく検出したりしなかったりと、いまいち感度にバラツキがあり利用しにくいです。
そして、もっと高感度に動きを検出して欲しいと思ってました。

そこでレーダーの電圧をArduinoで直接読みだし、値の平均を取り現在値との差が閾値を超えたら反応ありとすることにより、 元のモジュールよりかなり高感度(7メートル先で手を振ると反応する)ぐらいにする事ができました。

まずは、改造したモジュールの2OUTをArduinoのアナログピンA0に接続します。
モジュールのGNDはArduinoのGND、モジュールのVINはArduinoの5Vに接続します。
そして次のプログラムをArduinoに書き込みます。
#define THRESHOLD 20

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

int count,ave;
void loop() {
  int pos = analogRead( A0 );
  //平均値がTHRESHOLDより大きい場合にはLEDを点灯する
  if (abs(ave - pos) > THRESHOLD) count = 0;
  ave = (pos + ave) / 2;

  //0.5秒間 基板上のLEDを点灯させる
  if (count < 5) {
    count++;
    digitalWrite(LED_BUILTIN, 1);
  } else {
    digitalWrite(LED_BUILTIN, 0);
  }

  delay(100);
}
レーダーが反応するとArduinoの基板上のLEDが点灯するはずです。
感度の調整は先頭の行、#define THRESHOLD 20 の値を20から変更することにより調整出来ます。
ひょっとしたら電源のノイズなどの影響やモジュールの違いにより、値をもっと大きくしないといけないかもしれません。

▲トップページ > マイコンなど