今回は、フォトダイオードを使って、光を数値化します。
【光を数値化】これって、実はあなたも日常的に使っているあるものの中に入っています。
それが、カメラです。
カメラは細かいフォトダイオードが並んでいて、
レンズを通した光を数値化して画像に変換しているんです。
詳しい原理はこちらを見てもらえればスッキリすると思います。
そんなフォトダイオードですが、
手軽に電子工作にも使えるようにモジュール化されたものが販売しています。
そのモジュール化されたものとArduinoを使って、手軽に光を可視化してみます。
光を数値化するフォトダイオードの使い方が理解できる。
Youtubeチャンネルにさまざまな動画を上げています。
↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓
本ブログはアフィリエイトを用いた広告を掲載しています。
【道具】今回の解説に使ったもの
今回解説に実際に使用したものをご紹介します。
どれも一般的な量販店では販売されていないものですが、安心してください。
すべてAmazonで購入可能ですので、
どこにお住まいでも入手可能!便利な時代ですね…
今回の主役【フォトダイオード】
今回の主役です。これが無いと始まりません。
このフォトダイオードをArduinoにつないで抵抗値を測定することで
光の強さを数値化することができます。
![](https://www.hobbyhappyblog.jp/wp-content/uploads/2024/01/image-2.jpg)
Arduinoとの接続方法などは次の章で解説します。
とりあえず「光を受けると、流せる電流値が増加する。」
これだけ理解していればOKです。
Arduino UNO R4
Arduinoも主役の一人です。
今回は、光をフォトダイオードで電気に変換するわけですが、
変換された電気を数値化するものが必要になりますよね。
そんな時便利なのがArduinoです。
Arduinoは電圧を数値化することが可能なので、
どれくらいの強さの光がいつフォトダイオードに入ったか?
なんてのも出すことができます。
![arduino-uno-r4-minima](https://www.hobbyhappyblog.jp/wp-content/uploads/2023/12/image-2.jpg)
電圧を数値化することができればいいので、
ArduinoのA/D変換付きのモデルや、
RaspberryPiでも電圧をアナログ入力できるようなモジュールを使うことで
代用可能です。
ただ、今回Arduino UNO R4を選択した理由は2つありました。
1つ目のArduinoなら~の理由ですが、
Arduino UNO R4は2023年に発売された新しいArduinoです。
Arduino UNO R3から、R4までのモデルチェンジにかかった時間は約10年なので、
今後10年約にたつ記事となればいいなと思って選んでみました。
Arduino UNO R4はA/D変換が10bit⇒14bitに強化された
![arduino-uno-analog-pin](https://www.hobbyhappyblog.jp/wp-content/uploads/2023/12/image-3.png)
Arduino UNOに限らず、Arduino系列のA/D変換は10bit階調が基本となっていました。
A/D変換の階調とは、簡単に言うと、AnalogPinと呼ばれる端子に、
どれくらいの電圧がかかっているか数値で表せる細かさのようなものです。
そもそも、Arduinoには、2種類の端子が存在しています。
1つは、ある一定以上の電圧がpinにかかった場合、その時点でHIGHと認識。
それ以外の時はLOW。つまり、HIGH or LOWで1bit階調ともいえるわけです。
これをdigitalPin(デジタルピン)と言います。
次に、2つ目の端子ですが、こちらは、電圧値をアナログ値として認識する端子です。
具体的には、ArduinoはDC5Vで動作していますから、10bit階調の場合は、
5/1024 = 約5mVとなり、5mVの差を表すことが可能となっています。
従来のArduinoはこの階調が10bitでしたが、
Arduino UNO R4に関しては14bitに強化されています。
ですから、5/16384 =約0.3mVの差まで表すことが可能となりました。
単純計算で今までの最小分解能の1/10以下ということで、
是非使ってみようということでArduino UNO R4を選択しました。
10bitから14bitにパワーアップした内容について、
こちらに詳しく書いています。何がどう変わったのか参考にしてみてください。
抵抗や配線関係の部品
抵抗がなぜ必要なのかについての説明が必要となりますが、
とりあえず抵抗は10kΩの物を1個。それから、これから配線図をお見せしますが、
ジャンパーワイヤーとブレッドボードはあったほうが良いです。
ブレッドボードを使わずに何とか浮かせながら配線する方法もありますが、
落ち着いて作業をするには必要です。
【配線方法】フォトダイオードとArduinoの接続
それではフォトダイオードとArduinoを接続していきましょう。
ポイントは、ただフォトダイオードをArduinoとつなぐだけではダメで、
抵抗をつないで、その間の電圧を監視してあげる。ということ。
具体的に配線方法をお見せします。こんな感じです。
![](https://www.hobbyhappyblog.jp/wp-content/uploads/2024/01/image.jpg)
フォトダイオードから抵抗に電気が流れるわけですが、
フォトダイオードと抵抗の間のところの電圧を読み取っています。
【原理】フォトダイオードと抵抗で光の強さがわかる理由
フォトダイオードと抵抗で光の強さがわかる理由ですが、
そもそもフォトダイオードは、光の強さによって抵抗値が変わります。
具体的には、フォトダイオードで光を検知すると、
抵抗値が下がり、電気がよく流れるようになります。
ただし、抵抗値が減る場合、
5Vをそのまま入れて、GNDに流すようなことをすると、
ほとんど抵抗が無いので、ショートしたような流れができてしまいます。
ですから、今回は10kΩを入れましたが、
抵抗が必要ということになります。
また、この抵抗値は今回10kΩですが、
購入した・もしくは手元にあるフォトダイオードによって、
抵抗値を調整することで、照度と電圧の関係式を出せます。
基準となる照度があるのであれば、
それに対してArduinoのAnalog値を控えておけばOKということです。
【プログラム】Arduinoに書き込むスケッチ
それでは、Arduinoに書き込むスケッチ(プログラム)をご紹介します。
とはいっても、配線したA0でanalogReadするだけなので難しいことはありません。
void setup() {
Serial.begin(115200);
pinMode(A0,INPUT);
analogReadResolution(14);
}
void loop() {
int getLuminus = 0;
getLuminus = analogRead(A0);
Serial.println(getLuminus);
}
Serial.printlnしているので、
シリアルモニタを開くと、とんでもない速さで照度が表示されます。
もしデータを取得してエクセルなんかで分析したい場合は、
面倒ですが、TeraTermなどのシリアル通信ソフトで
データの吸出しをしたほうが良いです。
【実演】LEDと豆電球の点灯・消灯を数値化
さて、せっかく光の強さが数値化できるようになったので、
LEDと豆電球の点滅について数値化してみましょう。
前提として、豆電球とLEDの特徴はご存じでしょうか?
豆電球は、フィラメントに電圧・電流をかけることで、
赤熱して発光します。
対するLEDは、半導体に電圧・電流をかけることで、
P型とN型半導体の再結合により、生まれたエネルギーが光に変わって放出されます。
LEDのほうが、長寿命で省エネなことは有名なので、
あなたももちろんご存知だと思いますが、意外と意識されないのが、
点灯の応答性です。
最近クルマのウインカーもLED化されることが多くなってきましたが、
そのときの点滅が昔よりも、スパスパっと変わる印象なのはわかりますか?
実は、LEDは、従来の電球に比べて、ON/OFFに対する反応がとても速いんです。
それを示した実験結果がこちら。
どちらもフォトダイオードで点灯・消灯を数値化した結果です。
![](https://www.hobbyhappyblog.jp/wp-content/uploads/2024/01/image.png)
![](https://www.hobbyhappyblog.jp/wp-content/uploads/2024/01/image-1.png)
このように、LEDは一瞬でMAX輝度まで到達しますが、
豆電球はMAXに到達するまでゆっくり上昇していきます。
また、点灯よりは早いですが、消灯時も
LEDより時間がかかっているのがわかります。
この応答性の違いが、見た目のふわっとついたり、ふわっと消えたり
することにつながっているんですね。
【今回のまとめ】光を数値化することで電子工作の幅が広がる!
今回は、フォトダイオードを使うことで、
光を数値化することができました。
数値化できるのと同時に、
時系列で値を取得することも可能なので、今回の実験例のように、
点灯の様子をプロットすることで、点灯の強さを数値化して視覚的にわかりやすくできます。
Arduinoとフォトダイオードがあればできてしまうので、
光を数値化してみたいな。とお考えの場合はやってみるといいかもしれません。
コメント