Arduino環境でレーザモジュールとセンサーモジュールを使う

コンピュータ、組み込み

Arduino環境で可視レーザモジュールとセンサーモジュールを使ってみます。
レーザの発光と、センサの受光信号を見てみます。
センサーの応答速度をオシロスコープで測ってみます。

今回紹介するもの

レーザモジュール

特徴
電源電圧3~5V
波長650nm
赤色

電源と信号線に電圧を加えることで発光します。
※レーザー光が目に入ることにより重大な障害を起こす可能性があります。
人に向けたり、のぞき込んだりしないでください。

赤のリード線に電源、黒にGNDを接続します。

外観


今回このモジュールをユニバーサル基板に固定して使用します。

センサーモジュール

特徴
電源電圧3.3~5V
出力3V~4.5V

出力は電源電圧に依存します。
3.3V入力すると2.8Vが出力されました。
5.0V入力すると4.4Vが出力されました。

受光による波長帯域は可視光以外でも応答します。
レーザ光以外に、近くでLEDが発光することでも応答します。

ボードと検出器が同梱されています。
取り付け方向に気を付けてください。

外観

購入時アングルピンヘッダが付いていました。
この後、ストレートのピンヘッダに付け替えました。

使用感

レーザモジュールは通電させるだけで使用できますが、安全には十分注意して使用してください。

センサーモジュールの応答はかなり早く、立ち上がり、立下りのエッジもシャープです。
レーザ光以外にLEDを向けるだけでもある程度の光量があれば応答するようです。
それだけに、明るい日中では外乱光の影響でレーザーの採光、遮光に対する反応が悪くなります。

650nm周辺のレーザとセット売りされていますが、可視光以外にIR LED(赤外線)にも反応しました。
UV LED(紫外線)は持っていないので入手したら試してみることにします。

センサーの応答が速くきれいな信号なので、採光と遮光の状態や時間を利用した様々なアプリケーションを作ることができそうです。

準備

加工

レーザのユニバーサル基板固定

レーザモジュールをセンサーに安定して光を当てるためにユニバーサル基板に実装固定します。

センサーのピンヘッダ換装

アングルピンヘッダを実装していたので、ストレートに換装します。
ブレッドボード上の実験やユニバーサル基板への実装をしやすくするためです。

使うもの

画像名称、型番用途
レーザモジュール光ってもらいます
レーザセンサモジュールレーザの受光状態を信号にしてもらいます
Raspberry Pi PicoSSD1306を表示制御します。
ブレッドボード配線します
ジャンパワイヤ数本
オス-オス
配線します

動作

発光と受光

説明

レーザーモジュールは3.3VをGPIOから供給して発光させます。
受光モジュールは電源に3.3Vを供給し時に出力される信号のレベルを観察します。

発光させるGPIOは200msごとに点灯と消灯を繰り返します。
GPIOの電圧と受光した信号の形状や遅延を観察します。

配線

レーザを発光させたら、センサモジュールの中心で受光するように位置調整をします。

Raspberry Pi Pico配線レーザモジュール配線センサモジュール
3.3VVCC
GNDGNDGND
GPIO0VCC

オシロスコープでは、GPIO0の信号(レーザーの発光)とセンサーモジュールの信号ピンをプローブして読み取ってみます。

スケッチ
void setup() {
  // put your setup code here, to run once:
  pinMode(0, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:

  digitalWrite(0, HIGH);
  delay(100);
  digitalWrite(0, LOW);
  delay(100);
}
結果

結果をオシロスコープでモニタしました。
黄の波形はレーザー側で、LOWが消灯、HIGHが発光です。
青の波形はセンサー側で、LOWが受光状態です。

100msごとに発光と消灯を繰り返している様子が見えます。

発光の立ち上がりでトリガを仕掛けました。
オシロスコープのキャプチャ画像にコメントを入れました。
レーザー発光のための信号の立ち上がりから概ね1us後にセンサーの信号は立ち下がっています。
ジッターが±200ns見られました。

応答限界

説明

レーザーの連滅に対し、センサーはどのくらいまで応答できるかを見てみます。
結果的には発光と消灯の各ウエイトは1usまでの応答はありそうです。

配線は同じなので、使用したスケッチと結果を掲載します。

スケッチの発光と消灯のウエイトは1usです。
10回繰り返すごとに1msのウエイトを置いています。

先ほどの結果ではセンサーの応答には1us前後の遅延があったため、連続した信号ではどの信号に応答したか分からなくなるためです。

スケッチ
void setup() {
  // put your setup code here, to run once:
  pinMode(0, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:

  for(int i = 0; i < 10; i ++)
  {
    digitalWrite(0, HIGH);
    delayMicroseconds(1);
    digitalWrite(0, LOW);
    delayMicroseconds(1);
  }
  delay(1);
}
結果

結果をオシロスコープでモニタしました。
黄の波形はレーザー側で、LOWが消灯、HIGHが発光です。
青の波形はセンサ側で、LOGが受光状態です。

黄のHIGH(レーザの発光)に対して、青のLOW(センサの受光)が対応するかに赤の補助線を加えました。
レーザの消灯に対しての応答は2us程度の遅延がみられ、信号の変化にもナマリが見えます。
スケッチではこれより高速の処理を実施していませんが、感覚的にもこれより短周期になると信号がつぶれてしまいそうです。

コメント

タイトルとURLをコピーしました