🔧 使い方
入力するのは3つだけです。
- 電源電圧 Vcc — マイコンのピンで光らせるなら、その出力電圧(5V や 3.3V)
- 順方向電圧 Vf — LED のデータシートに書いてある値。色でだいたい決まります
- 流したい電流 If — 表示用途なら 5〜10mA でも十分明るく光ります
結果は上から「理論値」「E系列の直近上位」「そのとき実際に流れる電流」「抵抗の消費電力」「推奨定格」の順に並びます。買い物のときに見るのは2段目の実抵抗値、はんだ付けの前に確認したいのが4段目と5段目です。
理論値が 300Ω でも 300Ω という抵抗は E12 系列にありません。このツールは 330Ω のように 理論値以上でいちばん近い値 を選びます。抵抗を大きくする側なら電流は設計値より少なくなる、つまり LED を壊さない側に外れるからです。逆に 270Ω を選ぶと電流は設計値より増えます。
🔎 計算しているのはこの回路です
電源・抵抗・LED を1本の線でつないだだけの直列回路です。
電源電圧が LED と抵抗で分け合われる。図は ArduinoでLEDを光らせる より
図の数字が、そのままツールの入力欄と対応しています。
| 図の中の値 | ツールの欄 | 意味 |
|---|---|---|
| 電源 9V | 電源電圧 Vcc | 回路全体にかかる電圧 |
| LED の 2.1V | 順方向電圧 Vf | LED が食う電圧。ほぼ一定 |
| 抵抗の 6.9V | (自動で計算) | Vcc − Vf の残り全部 |
| 21mA | 流したい電流 If | 直列なのでどこでも同じ値 |
| 330Ω | 結果に出る抵抗値 | 6.9V ÷ 21mA から決まる |
直列回路なので、電流は LED も抵抗も同じ値です。だから「LED に流したい電流」を決めれば、抵抗に流れる電流も自動的に決まります。あとは抵抗にかかる電圧が分かればオームの法則で値が出る、という順序になっています。
図の例は 9V 電源に 330Ω をつないだ実測ベースの値で、ツールに Vcc = 9・Vf = 2.1・If = 21mA と入れるとほぼ同じ 328.6Ω が出ます。
📐 なぜ (Vcc − Vf) ÷ If なのか
LED は抵抗ではなくダイオードです。かける電圧を少し上げただけで電流が一気に増える性質があるので、「何ボルトかければいいか」で考えると壊します。そこで発想を逆にして、先に電流を決めて、その電流が流れるように抵抗で調整する というのが電流制限抵抗の考え方です。
電源電圧は LED と抵抗で分け合います。LED が食う分は Vf でほぼ決まっているので、残りの (Vcc − Vf) がまるごと抵抗にかかることになります。あとは抵抗にかかる電圧と流したい電流が分かっているので、オームの法則 R = V ÷ I をそのまま当てはめるだけです。
R = \frac{V_{CC} - V_F}{I_F}たとえば 5V 電源で Vf = 2V の赤色 LED に 10mA 流したいなら、抵抗にかかるのは 3V。3V ÷ 0.01A = 300Ω、E12 系列なら 330Ω という具合です。
🎨 Vf は色でだいたい決まる
LED の順方向電圧は発光色(=半導体材料)でおおよそ決まります。以下は代表的な目安で、実際の値は必ず購入した製品のデータシートで確認してください。
| 色 | Vf の目安 | 補足 |
|---|---|---|
| 赤・黄・橙 | 約 1.8〜2.2V | 3.3V 電源でも余裕がある |
| 緑 | 約 2.1〜3.4V | 黄緑系は低め、純緑系は高め |
| 青・白・紫 | 約 3.0〜3.4V | 3.3V 電源だとほぼ余裕なし |
青や白の LED を 3.3V で光らせようとすると Vcc と Vf の差が 0.3V 程度しかなく、Vf のわずかなばらつきで電流が大きく振れます。このツールも差が 0.5V を切ると注意を出します。
⚠️ Vf は「その電流のときの値」でしかない
計算がずれる原因のほとんどは、抵抗ではなく Vf の側にあります。Vf は定数ではなく、条件で動く値だからです。
① データシートの Vf には測定条件がついている。 「Vf = 2.1V」とだけ覚えてしまいがちですが、実際には「If = 20mA のとき」という但し書きが必ずあります。同じ LED でも 5mA しか流さなければ Vf は 0.1〜0.2V ほど下がります。すると抵抗にかかる電圧が計算より大きくなり、実際の電流は設計値より増える方向にずれます。
② 同じ型番でも個体差がある。 LED は製造後に明るさや Vf で選別(ビニング)される部品で、データシートには min / typ / max が載っています。typ で計算しておいて max の個体を引くと、Vcc − Vf の差が縮んで暗くなります。
③ 温めると Vf は下がる。 温度係数はおおむね −2mV/℃ 程度です。連続点灯で LED 自身が温まると Vf が下がり、電流が増え、さらに温まる——という向きに働きます。表示用の数 mA なら気にしなくて構いませんが、大電流で使うときは効いてきます。
だから Vcc − Vf の差は大きめに取っておくほうが安定します。差が 1V 以上あれば Vf が 0.2V 動いても電流の変化は2割程度で済みますが、差が 0.3V しかないと同じ 0.2V の変動で電流が倍以上変わります。3.3V で白色 LED を光らせる構成が扱いにくいのは、この比の問題です。
Vcc を上げられないなら、定電流ドライバ IC を使うか、電流の精度を諦めて「光ればよい」と割り切るかの二択になります。とくに複数の LED を並列につないで1本の抵抗で受けるのは避けてください。Vf の低い個体に電流が集中して、その1個だけが明るく光り、先に劣化します。並列にするなら LED ごとに抵抗を1本ずつが原則です。
⚠️ 抵抗の定格を確認する
抵抗にも「何ワットまで耐えられるか」という定格があります。電子工作でよく使うのは 1/4W(0.25W)のカーボン抵抗です。
このツールの「推奨定格」は、実際の消費電力の2倍以上 を満たす最小の定格を出しています。定格ぎりぎりで使うと抵抗が熱くなって値が変わったり寿命が縮んだりするため、余裕を持たせる(ディレーティングする)のが定石だからです。
抵抗が正しくても、マイコンのピンから取り出せる電流には上限があります。1ピンあたりの上限は機種によって数 mA から数十 mA まで大きく違い、さらにポート全体・IC全体の合計電流にも制限があります。複数の LED を同時に光らせるときは必ず合計で確認してください。たくさん光らせたい場合は、全ピンLED搭載デバッグシールド のようにトランジスタやドライバICを挟む設計を検討しましょう。
🔗 あわせて読みたい
LED を実際に Arduino で光らせる手順は ArduinoでLEDを光らせる、RGB LED のように3色ぶんの抵抗を選ぶ話は RGB LEDの制御 で扱っています。抵抗の比を決めたいときは 分圧回路 計算ツール もどうぞ。