前回の記事では、レーザーハープを製作する上での指針を考えました。
前回の記事から半年以上経過してしまいましたが、
今回からレーザーハープの設計を行います!(・・;)
レーザーハープを製作する上での指針を踏まえ、いよいよ電子回路を考えていきましょう。CdSセルを使って、レーザーを遮ったことをArduinoで検出します。
[前回の記事]レーザーハープを自作する。(Part 1 : 準備編)
1. Arduinoのアナログインプットを試してみる
CdSセルにかかる電圧を検出するために、まずはArduinoのアナログインプット機能を試してみます。
Arduinoのピンソケットの中に、アナログインプットに対応したものが存在します。このピンにCdSセルを接続することで、CdSセルにかかる電圧を検出することができます。
Arduino UNOはネットで購入できるので、是非試してみてください!
1.1. 回路を考える
では、ArduinoとCdSセルを接続する回路を考えていきましょう。
ここでは
Arduino UNO , CdSセル , 抵抗(10kΩ) , ブレッドボード , ジャンパーコード
を使用します。
以下のようにArduinoとそれぞれの部品を接続しましょう。
上図の回路図にしたものを見てみましょう。
5VからCdSセルに接続され、次に抵抗、最後にGNDに接続されます。そして、CdSセルと抵抗の間からコードを伸ばし、Arduinoのアナログ0ピンに接続します。
この回路図では、厳密に言うとCdSではなく、抵抗にかかる電圧を検出しています。
1.2. プログラムを考える
次にCdSの値を検出するためのプログラムを考えていきましょう。
Arduinoにはアナログピンの入力値を読み取る関数が用意されています。それがanalogRead関数です。
analogRead関数は、0〜5Vの電圧を0〜1023の値として出力します。
(参考 : Arduino 日本語リファレンス – analogRead(pin) )
次のようなプログラムをArduinoに書き込みましょう。
int val = 0; //値格納用変数 void setup(){ Serial.begin(9600); //シリアル通信 } void loop(){ val = analogRead(0); //アナログ0ピンで電圧を検出し、変数に格納 Serial.println(val); //変数の値を出力 delay(200); }
このプログラムを実行し、Arduino IDEのシリアルモニタを見ると、結果が出力されています。
出力結果を以下に示します。
僕の結果では「761」という値が出力されています。これは、使用したCdSセルや部屋の明るさ等の環境によって変わります。
CdSを手で覆ってみましょう。シリアルモニタの値が変わるはずです。
僕の場合は、「420」くらいになりました。
今度はライトで強い光を当ててみましょう。「1000」くらいになりました。
まとめると
- 暗い → 420 (CdSセルの抵抗値が増加し、抵抗部の電圧が減少)
- そのまま → 761 (基準値)
- 明るい → 1000 (CdSセルの抵抗値が減少し、抵抗部の電圧が増加)
となります。
これでCdSセルに光が当たっているか否かを、数値として見ることができるようになりました。
2. レーザーとCdSセルを組み合わせてみる
それでは、レーザーとCdSセルを組み合わせて数値を見てみます。
レーザー光を出すためのレーザーモジュールは、秋月電子で販売されているものを使用しました。
緑色レーザー発光モジュール JPM-1-3 (A4) APC :
http://akizukidenshi.com/catalog/g/gM-00766/
レーザー光を上手くCdSセルに当てるために、少し工夫して台座を作ってみました。
この台座を使ってCdSセルにレーザー光を当てましょう。
今回使用したレーザーモジュールは電源がDC3Vですので、乾電池を2本直列に接続して使用します。電池ケースに収納してレーザーモジュールに接続しましょう。
このとき、レーザー光が目に入らないように十分注意して下さい!
ではレーザーを当てた時と、レーザーを手で遮った時の2つの状態の値を見てみましょう。
- そのまま → 967
- 手で遮る → 550
CdSセルにレーザーを当てた時とレーザーを遮ったときの違いを検出することができました!
いかがでしたでしょうか。
CdSセルでレーザー光を遮ったことを検出するのは、意外と簡単に出来たのではないでしょうか。
次回はこの回路を踏まえ、ArduinoでMIDI信号を出力する「プログラム編」を書きたいと思います!
どうぞよろしくお願いしますm(_ _)m
[次回の記事はこちら]
※この記事内で使用した回路図はFritzingにより製作しました。
この図にはCC Attribution-ShareALikeライセンスが適用されます。
コメント
こちらレーザーモジュールは回路に接続せず使用していますか?
私もレーザーハープ自作に挑戦してみようと思っているのですが、何せ回路等の知識がないので貴殿のサイトを参考にさせていただこうと思っております。
その中で、レーザーモジュールの扱いについて分からないところがありました。レーザー光をCdSセルが感知すればいいということなので、レーザーは電源が供給され、レーザー光が照射されているだけでよく、回路に接続する必要はないということでよろしいですか?
支離滅裂な説明で申し訳ありません。
山知さん
コメントいただきまして、ありがとうございます。
また、返信が大変遅くなりまして、申し訳ないです。
この記事にて使用しているレーザーモジュールの場合、
むしろ、仕様上Arduinoの回路と接続することは避けたほうがよろしいです。
レーザーモジュールの電源に関しまして、
特にこの記事で使用しているレーザーは仕様上の電源電圧が3Vです。
しかし、Arduino基板より取れる電圧は3.3Vとなっておりますので、
Arduinoの回路から電源を取ってしまうと0.3V分余分になってしまいます。
また、レーザーモジュールの注意事項として
「電圧:ノイズの少ないDC3V」
と書かれておりますので、電池を電源にすることが望ましいと考えられます。
http://akizukidenshi.com/catalog/g/gM-00766/
dinケーブルを使用するレーザーハープを作りたくこちらの記事を参考にさせていただきました。
お陰様で一弦のみのレーザーハープを完成させることは出来たのですが、ニ弦目以降の回路がわかりません。繋ぎ方を教えて頂ければ幸いです。
2弦目以降の接続については、記事中の回路図[ 5V -> CdS -> 抵抗 -> GND ]の組み合わせ1組として、この組を弦の数だけ用意します。(もちろんレーザーモジュールも弦の数だけ必要です。)
そして、上の回路と同様に、各組のCdSと抵抗の間のポイントをArduinoのA1,A2,A3,…とそれぞれ接続します。
この接続方法ではArduinoのポート数の上限によって、A0〜A5の最大6弦まで対応可能です。