※本記事にはプロモーション(広告)が含まれています。
フォトトランジスタとフォトダイオードは、光が当たると電流が流れる部品で、マイコンの ADC で読むには抵抗を通して電圧に変えます(電圧=光の電流×抵抗)。抵抗の決め方は3ステップ、CdS を含めた違いは3つの違いの節へ。
部屋が暗くなったら明かりをつける、回転する板の穴を数える、紙があるかを見る。こうした「光で何かを知る」回路の入口が、フォトトランジスタとフォトダイオードです。
この記事では、実在する部品のデータシートの数字を使って、回路と抵抗の決め方を、中学の理科(オームの法則)だけでわかるように説明します。

この記事で作るもの:光の強さをA0の電圧にする回路
5V → フォトトランジスタ → 抵抗 3.6kΩ → GND とつなぎ、フォトトランジスタと抵抗のあいだの電圧をマイコンの A0 で読みます。部屋の明かり(約300lux)で約0.8V、1000lux で約2.7V(typ)です。
| 明るさ | 流れる電流(typ) | A0 の電圧 | 読み(5V 基準) |
|---|---|---|---|
| 10lux | 7.5µA | 0.03V | 5 |
| 100lux | 75.0µA | 0.27V | 55 |
| 300lux | 225.0µA | 0.81V | 165 |
| 1000lux | 750.0µA | 2.70V | 552 |
例は Vishay の TEPT5700 という、人の目に近い色の光に反応するフォトトランジスタです。マイコンは電源 5V・ADC が 10ビット(0〜1023)の場合で、Arduino Uno がこの組み合わせです。
回路は部品2つだけです。むずかしいのは「抵抗を何Ωにするか」で、この記事の中心はそこです。
つまり、作るのは「フォトトランジスタ+抵抗1本」の回路。抵抗の値で、測れる明るさの範囲が決まります。

しくみ:光が当たると電流が流れ、抵抗で電圧になる
光が当たると、フォトトランジスタに光の強さに応じた電流が流れます。その電流が抵抗を通ると、抵抗の両はしに「電流×抵抗」の電圧が出ます。100lux なら 75µA × 3.6kΩ = 0.27V です。
フォトトランジスタは、光を受ける窓のついたトランジスタです。ふつうのトランジスタはベースに電流を流して ON にしますが、フォトトランジスタは光がベースの代わりをします。光が強いほど、コレクタ(C)からエミッタ(E)へ大きな電流が流れます。
真っ暗だと、流れる電流は暗電流だけです。TEPT5700 の暗電流は最大でも 50nA(0.00005mA)なので、抵抗の電圧は 0.2mV 以下で、ほぼ 0V です。
光で電気が流れる現象そのもの(光電効果)は、別の記事で図解しています。
光電効果・熱電効果・圧電効果の違い。光で電気が生まれるしくみ
つまり、光 → 電流 → 抵抗で電圧、の順に変わります。マイコンが読むのは最後の電圧です。

足の見分け方:フォトトランジスタは長い足がE
TEPT5700 は、長い足がエミッタ(E)、短い足がコレクタ(C)です。LED は長い足がプラス(アノード)なので、つなぐ向きの感覚が逆になります。
つまり、フォトトランジスタは「長い足を GND 側」。LED と逆だと覚えます。

負荷抵抗の決め方:3ステップ
抵抗 RL は、①測りたい最大の明るさを決め、②その明るさでの最大の電流を出し、③ RL=0.9×5V÷最大の電流 で計算して E24 の小さい側へ丸めます。1000lux なら 3.75kΩ → 3.6kΩ です。
「0.9」は、いちばん明るいときでも電源の 9 割で止めるための余裕です。電圧が電源に近づくと、フォトトランジスタの C と E のあいだに電圧が残らなくなり、それ以上は上がらなくなります(頭打ち)。
代表値(typ)の 0.75µA/lux だけで計算すると 5.6kΩ になります。ところが感度の高い個体だと、約714lux で頭打ちになり、1000lux まで測れません。だから STEP 2 では最大の電流を使います。
つまり、抵抗は「いちばん感度の高い個体」でも頭打ちしない値にします。丸めは小さい側です。

抵抗の大きさで、測れる明るさの範囲が変わる
抵抗が大きいほど、暗い所でも大きな電圧が出ます。そのかわり、早く頭打ちになります。測りたい明るさの範囲に合わせて選びます。
| 抵抗 RL | 10lux | 100lux | 1000lux | 頭打ちの明るさ(typ) |
|---|---|---|---|---|
| 1kΩ | 0.007V | 0.07V | 0.75V | 約6,400lux |
| 3.6kΩ | 0.027V | 0.27V | 2.70V | 約1,778lux |
| 10kΩ | 0.075V | 0.75V | 4.80V | 約640lux |
| 47kΩ | 0.352V | 3.52V | 4.80V | 約136lux |
1kΩ では 1000lux でも 0.75V しか出ず、暗い所の変化はほとんど読めません。47kΩ では 10lux でも 0.35V 出ますが、136lux で頭打ちになり、部屋の明かりの違いが見分けられません。
表とグラフは、TEPT5700 の代表値で「電流は明るさに比例する」として計算したイメージです。データシートのグラフ(明るさと電流)は、両対数でほぼまっすぐなので、比例として目安にできます。
つまり、暗い所を見たいなら大きく、明るい所まで測りたいなら小さく。部屋の明かり〜1000lux なら 3.6kΩ です。

計算例:3.6kΩのとき、読みから明るさに直す
A0 の読みから、電圧=読み×5÷1024、明るさ=電圧÷(3.6kΩ×0.75µA) で直せます。読み 400 なら 1.95V で、約723lux(typ)です。
5V 基準の ADC の1段は 4.9mV で、3.6kΩ では約1.8lux に当たります。10lux 前後の暗い所を細かく見たいなら、抵抗を大きくするか、内部 1.1V の基準電圧で読みます。
ADC の1段・基準電圧の選び方を、データシートの数字で
読みが毎回少しずつゆれるときは、何回か読んで平均します。Arduino なら次のように書けます(例)。
long sum = 0;
for (int i = 0; i < 16; i++) sum += analogRead(A0); // 16回読んで
float v = sum / 16.0 * 5.0 / 1024.0; // 平均 → 電圧
float lux = v / (3600.0 * 0.75e-6); // 電圧 → 明るさ(typ の係数)
つまり、読み → 電圧 → 電流 → 明るさの3つの割り算です。ただし、最後の係数は個体で変わります(次の節)。

同じ型番でも感度は4.6倍ちがう:ランクと合わせ込み
TEPT5700 は感度でランク A・B・C に分けて出荷され、20lux の電流は 5.2〜24µA と 4.6 倍の幅があります。同じ読み 400 でも、明るさは約452〜2087lux とちがって見えます。
| ランク | 20lux の電流 | 読み 400 のときの明るさ(目安) |
|---|---|---|
| A(低い) | 5.2〜9.9µA | 多めに出る |
| B | 8.2〜15.4µA | その間 |
| C(高い) | 12.7〜24µA | 少なめに出る |
データシートによると、1つの袋には1つのランクだけが入りますが、どのランクかは指定できません。量産では、ランクが混ざる前提で設計します。
明るさの値(lux)が必要なときは、照度計と同じ場所に置いて読み、「lux=係数×電圧」の係数を1台ずつ決めます(合わせ込み)。「暗い・明るい」を判定するだけなら、しきい値に余裕をとれば合わせ込みなしでも使えます。
しきい値の近くで ON・OFF がバタつくときは、上げるときと下げるときでしきい値を変える(ヒステリシス)と落ち着きます。
しきい値の近くで出力がバタつく原因と、ヒステリシスの決め方
つまり、抵抗は最大の個体で決め、明るさの値は照度計で合わせ込む。判定だけなら余裕をとれば十分です。

フォトダイオードの使い方:逆向きにつないで抵抗で電圧に
フォトダイオードは、カソード(K)を 5V、アノード(A)を抵抗で GND につなぎ(逆向き)、アノードの電圧を読みます。BPW34 は 1000lux で 75µA と、フォトトランジスタの約1/10 なので、抵抗は 47kΩ と大きめになります。
フォトダイオードは、ふつうのダイオードと同じ記号に光の矢印がついたものです。電流を流さない向き(逆向き)に電圧をかけて使うと、光の強さにきれいに比例した電流が流れます。
暗電流は、ダイオードのリーク電流と同じものです。BPW34 は最大 30nA で、温度が上がると増えます。
ダイオードのリーク電流(IR)が、温度で増える理由
電流が小さいので、抵抗をさらに大きくしたくなりますが、抵抗が大きいほど反応が遅くなり、ノイズも拾いやすくなります。もっと小さな光を測るときは、オペアンプで電流を電圧に変える回路(電流電圧変換)を使います。
小さな信号を大きくする、オペアンプの使い方の基本
つまり、フォトダイオードは「逆向き+大きめの抵抗」。電流は小さいけれど、明るさにきれいに比例します。

速さを比べる:フォトダイオードが速く、CdSは遅い
反応の速さは、フォトダイオード(0.1µs ほど)、フォトトランジスタ(10µs ほど)、CdS(20〜30ms)の順です。BPW34 に 47kΩ をつなぐと、抵抗×素子の容量で約1.2µs かかります。
| 部品 | 反応の時間(目安) | 条件・出典 |
|---|---|---|
| BPW34(フォトダイオード) | 0.1µs | 上昇・下降 100ns、VR 10V・RL 1kΩ |
| BPW34 + 47kΩ | 約1.2〜3.3µs | 47kΩ×25pF(3V)〜70pF(0V)の計算 |
| TCST2103(フォトトランジスタ) | 10µs | ton 10µs・toff 8µs、RL 100Ω |
| GL5528(CdS) | 20〜30ms | 明るくなるとき 20ms・暗くなるとき 30ms |
フォトトランジスタは、中で電流を増やすぶん、反応が遅くなります。さらに抵抗を大きくすると、もっと遅くなります。明るさを見るだけなら気にしなくてよい速さですが、光で信号を送る通信や、速く回る板の穴を数えるときに効いてきます。
抵抗と容量で時間が決まる考え方は、RC の時定数と同じです(計算は連載の RC の記事)。
つまり、明るさならどれでも足りる速さ。速い光の信号ならフォトダイオード、CdS は明暗の判定だけ。

フォトトランジスタ・フォトダイオード・CdSの違い
迷ったら、明るさを見る・ON/OFF にはフォトトランジスタ、速い信号・正確な測定にはフォトダイオード、手軽な明暗の判定には CdS です。
| フォトトランジスタ | フォトダイオード | CdS | |
|---|---|---|---|
| 感度(100lux) | 75µA(大きい) | 7.5µA | 抵抗が変わる(10lux で 10〜20kΩ) |
| 速さ | 数µs〜 | 0.1µs〜(速い) | 20〜30ms(遅い) |
| 明るさとの関係 | ほぼ比例 | 比例(よい) | 比例しない(γ0.6) |
| よく感じる光 | 570nm(目に近い) | 900nm(赤外まで) | 540nm |
| 回路 | 抵抗1本(電流→電圧) | 逆向き+抵抗 | 固定抵抗と分圧 |
| 例の品種 | TEPT5700 | BPW34 | GL5528 |
CdS は抵抗が変わる部品なので、固定抵抗と分圧して読みます。くわしくはセンサの電圧を読む記事で説明しています。CdS はカドミウムを含み、EU の RoHS 指令で使用が制限される物質なので、売る製品にはフォトトランジスタや照度センサ IC が選ばれることが多いです。
明るさの CdS・温度センサ・可変抵抗を、分圧と ADC で読む3つの例
BPW34 は赤外線までよく感じるので、目で見た明るさとずれることがあります。人の目に近い明るさを測りたいなら、TEPT5700 のように「人の目に合わせた」と書かれた品を選びます。
つまり、感度・速さ・比例・色の4つで選びます。

フォトインタラプタ:LEDと受光素子が1つになった部品
フォトインタラプタは、赤外線 LED とフォトトランジスタを1つにした部品です。透過型はすき間を物が通ると光が切れ、反射型は前に物があると光がはね返ってきます。
| 透過型 | 反射型 | |
|---|---|---|
| 例 | TCST2103(すき間 3.1mm) | TCRT5000(いちばん強く返る距離 2.5mm) |
| わかること | すき間を物が通ったか | 前に物があるか・白か黒か |
| 使い道 | 回転数・原点・紙の有無 | 黒い線をたどる・物の有無 |
どちらも、外の光を減らすフィルタがついていて、LED の赤外線だけに反応しやすくなっています。
LED と受光素子を向かい合わせて1つにした部品には、フォトカプラもあります。フォトカプラは、電気を光で伝えて回路どうしを絶縁するための部品で、光が外に出ないように閉じられています。
フォトカプラのしくみと、CTR・寿命の考え方
つまり、物の有無を光で見るならフォトインタラプタ。すき間を通るなら透過型、前にあるかなら反射型です。

透過型の回路:LEDに200Ω、受光側は10kΩでプルアップ
LED 側は 5V → 200Ω → LED → GND、受光側は 5V → 10kΩ → C、E → GND とつなぎ、C の電圧をマイコンの D2 で読みます。光が通ると L、板がさえぎると H です。
プルアップがないと、受光側が OFF のとき D2 の電圧が決まらず(浮いた状態)、読みがふらつきます。
入力が「浮いている」とは。プルアップ・プルダウンの選び方
LED の抵抗の計算は、ふつうの LED と同じです。赤外線 LED は目に見えないので、点いているかはスマホのカメラで見ると確かめやすいです(機種によっては見えません)。
LED の抵抗を、何Ω・何W かの3ステップで
つまり、LED には電流を決める抵抗、受光側にはプルアップの抵抗。2本の抵抗で動きます。

透過型の計算:LEDの抵抗とプルアップの抵抗
LED の抵抗は (5−1.25)÷20mA=187.5Ω → 200Ω。受光側の電流は最小でも CTR 10% で 1.88mA なので、プルアップは 2.45kΩ 以上あれば L になり、10kΩ なら約4倍の余裕です。
VF の 1.25V は、データシートに書かれた 60mA のときの値です。20mA では VF が少し下がるので、電流は計算より少し増えますが、最大 60mA には十分届きません。
反射型(TCRT5000)も同じ考え方で、LED は 10mA なら (5−1.25)÷10mA=375Ω → 390Ω です。ただし、受光側の電流(最小 0.5mA)は鏡を 12mm に置いたときの値で、紙ではずっと小さくなります。反射型は A0 でアナログに読み、実物でしきい値を決めると調整しやすいです。
つまり、プルアップは「最小の電流でも L になる」値より大きく。10kΩ から試し、速さが足りなければ小さくします。

早見表:光センサの回路と抵抗(5V)
答えだけ欲しい人向けの表です。抵抗の考え方は、どれも「電流×抵抗=電圧」です。
| 部品 | 例 | 抵抗 | 出力 |
|---|---|---|---|
| フォトトランジスタ | TEPT5700 | E 側に 3.6kΩ(1000lux まで) | 1000lux で 2.7V(typ) |
| フォトダイオード | BPW34 | アノード側に 47kΩ(1000lux まで) | 1000lux で 3.5V(typ) |
| 透過型フォトインタラプタ | TCST2103 | LED 200Ω・プルアップ 10kΩ | 通る L/さえぎる H |
| 反射型フォトインタラプタ | TCRT5000 | LED 390Ω・10kΩ | 近いほど L に近づく(A0 で読む) |
つまり、測りたい明るさが変われば、RL も変わります。式に入れ直して決めます。

ブレッドボードの配線:フォトトランジスタをA0へ
フォトトランジスタの短い足(C)の列を 5V へ、長い足(E)の列から 3.6kΩ を GND レールへつなぎ、同じ E の列からマイコンの A0 へ線を引きます。
光センサは、まわりの照明の影響を強く受けます。窓の光や照明の真下など、置く場所で値が大きく変わるので、使う場所で確かめます。
暗くなったら何かを ON にする:トランジスタと MOSFET の選び方
つまり、E の列に「抵抗」と「A0」の2本、C の列に「5V」の1本です。

よくある失敗4つ:光センサの回路
E と C を逆に差す・抵抗が大きすぎて頭打ち・照明のちらつきを拾う・反射型のデータシートの数字をそのまま使う、の4つがよくある失敗です。
1. E と C を逆に差す
LED と同じつもりで長い足を 5V に差すと、光を当ててもほとんど電圧が出ません。長い足(E)を GND 側へ差し直します。
2. 抵抗が大きすぎる
明るい所で A0 が 4.8V 近くに張りつき、明るさが変わっても同じ値になります。最大の明るさでの最大の電流で、RL を決め直します。
3. 照明のちらつきを拾う
室内の照明には、電源の周波数の2倍(100Hz・120Hz)で明るさがゆれるものがあります。1回だけ読むと値がばらつくので、何回か読んで平均します。
4. 反射型の数字をそのまま信じる
TCRT5000 のデータシートの電流は、鏡を 12mm に置いたときの値です。紙や布ではずっと小さくなるので、実物で読みを測ってしきい値を決めます。
つまり、向き・抵抗・平均・実物での確認の4つを、組む前と組んだ後に見直します。

テスターで確かめる:A0の電圧が光で動くか
最低限、①手でおおうと A0 が 0V 近くになるか、②ライトを近づけると電圧が上がるか、をテスターで確かめます。
最低限ここだけ
余裕があれば
部屋の明かりで 0.3〜1V くらいか(3.6kΩ・typ の目安)、テスターの電圧と「読み×5÷1024」が同じかを比べます。明るさの値が要るなら、照度計と並べて係数を決めます。
つまり、「暗い → 0V、明るい → 上がる」が見えれば、回路は正しく動いています。


