利用する素子も決まったので、まずは、試行実験。
フォトトランジスタが明るさを検知する訳だが、それをArduinoで簡単にデジタルポートで受けようとしている。デジタルと言うことは、HiかLowの2値である。それでは、その境目はどうか?一般的には、電源が5Vの場合、1V以下でLow、2V以上でHiとなると考えておけばよい。昔、ロジック回路を組むためによく使ったTTLは、トランジスタで組まれているICだった。トランジスタのゲート電圧は0.8VでONする。これは、物性から決まっている値である。
現在は、CMOSなど、より省電力の構造となっているが、インタフェースについてはTTL互換となっている場合が多い。
回路の概要はこんな感じ。フォトトランジスタが導通して電流が流れたら、抵抗によって電位差ができる。これが2Vを超えるとArduinoでHiになる。当てる光によって、流れる電流が変わるため、適切な抵抗値を設定しないと、うまくHi/Lowが切り替わらない。
NJL7302L-F3のデータシートから、明るさと電流の関係を表すグラフを見ると、以下の通り。
例えば、1kΩとすると、抵抗による電圧降下が2Vになる電流を計算すると、Ωの法則から
電流=電圧/抵抗 2V/1000Ω=2mA
上のグラフの縦軸が電流。2mA(2000μA)のところを右に見てグラフとの交点を見ると、約1000lux。
ところで、1000luxって、どんな明るさだ?こんなサイトで確認すると、「パチンコ店内」とある。おぉ~~~
パチンコ店と言えば、蛍光灯がやたら多くて明るいイメージ。かなり明るくないHi/Lowが切り替わらない。
用途に応じて、適切な抵抗値を選ぶ必要があるが、上記のように概ね当たりを付けることができる。
今回は、フォトトランジスタを利用する際の抵抗値の決め方などを解説してみた。なかなか先に進めずまどろっこしいが、たまには丁寧な解説も必要かと思うので、もう少しお付き合い頂きたい。
おまけとして、フォトトランジスタのテストプログラムを提供しよう。パソコン上のシリアルモニタに、フォトトランジスタの前が暗いと0、明かりを照らして明るくすると1が表示されるはずだ。0のままだったり、1のままだったら、抵抗値を変えて試してみよう。
// フォトトランジスタテスト
unsigned char pt=2; // フォトトランジスタポート
void setup() {
Serial.begin(9600); // シリアル利用宣言
pinMode(pt, INPUT); //フォトトラポートをインプットに
Serial.println(“Ready….”);
}
void loop() {
unsigned char data=digitalRead(pt); // センサ入力
Serial.print(“Input=”); // モニタ送信
Serial.println(data); // モニタ送信
delay(1000); // 1秒待ち
}