第 8 回 LED の制御

本日の内容


このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。

8-1. LED の基礎

ダイオードの特性

ダイオードの電流特性

ダイオードは基本的に一方向にしか電流が流れないものですが、電圧―電流特 性は次のような指数関数的な関係になります。

I = Is e e V k T - 1

流れる電流が増えると発熱し、温度が上がりますので、完全な指数関数よりは やや増加が鈍りますが、基本的には指数関数的だと思って下さい。 すると、ある電圧を越えると急激に電流が流れ、発熱が始まります。 そして、発熱が激し過ぎると壊れます。 ダイオードの種類にも依りますが、基本的にはダイオードには 20mA を越える 電流は流さないようにするのが常識です。 また、電流が流れ始める時の電圧と、20mA 流れる時の電圧は大して変わらな いので、通常は同一と見なします。 これは、電圧によって電流のコントロールができないことを意味します。 つまり、近似的なダイオードは 20mA しか流せず、また流れ始めるのに一定の 電圧降下があると解釈して下さい。 そのため、かける電圧を調整する以外の方法で電流を制限しなければなりません。

電流制御回路

LED を点灯させる時、流れる電流を制御する必要があります。 電流を制御する方法にはいくつかありますので、それを紹介します。

定電流ダイオード

定電流ダイオード

定電流ダイオードとは、ある程度の電圧をかけると一定の電流しか流さなくな る特殊なダイオードです。 100V でも耐えるものもあります。 15mA など、 LED に適した規格もあるため、もっとも単純で確実な電流制御方 法です。 十分な電圧(1V 程度)があれば、定電流ダイオード一本と、必要な本数の LED を直列に繋げば LED に必要な電流を供給できます。 但し、一本 50 円から 100 円程度するので、複数の制御を行う場合や、並列 に繋ぐ場合などは比較的回路が高額になります。

抵抗による制御

抵抗による電流制限

LED と直列に抵抗を繋ぎ、電流を制限します。 電源電圧を V、LED の電圧降下を Vf、電流を I、抵抗値を R とすると次の式になります。

V = Vf + I R

これにより抵抗値を決定します。 誤差により電流が流れ過ぎると、抵抗の電圧降下が大きくなるため、 Vf に多少誤差があっても、流れる電流の誤差もおなじ割合になり ます。

抵抗は一本 1 円以下なので、もっとも安価に電流を制御できます。

トランジスタによる定電流回路

定電流回路

トランジスタのエミッタ接地回路は、ベース―エミッタ間電流でコレクタ― エミッタ間電流を制御できます。 ここで、帰還抵抗 R のみの回路を考えます。 ベース電流 IBhFE 倍だ けコレクタ電流 IC が流れ、 ベース―エミッタ間電圧をVBEとすると、 ベース電圧 V とコレクタ電流 IC に関して次の式が成り立ちます。

V = VBE + IB + IC R
IC = V - VBE 1 + 1 hFE R

つまり、コレクタに十分な負荷と十分な電圧をかけると IC の値が一定に保たれることになります。 但し、負荷が無い時、つまり IC が流れなかった時、 IBIC と同じくらい多く 流れてしまいます。 そのため、そのような場合でもトランジスタを壊さないようにベース側に保護 用の抵抗を繋ぐこともあります。 なお、トランジスタ 2SC1815 のベース電流の最大定格は 50mA (> 20mA) ですので、 LED の点灯制御をする際はベース側に保護抵抗は必要ありません。

トランジスタの価格は数円ですので、比較的安価に回路を作ることができます。

またこれは FET を用いても同じように考えることができます。 但し、 FET ではゲートへの電圧の入力に比例した電流がドレインか ら流れますので若干式が異なります。

三端子レギュレータによる定電流回路

三端子レギュレータ

三端子レギュレータ 7805 は IN, GND, OUT の三つの端子を持ちます。 IN 側に入力電圧を入れると、 OUT 側に 5V の電圧が出てきます。 三端子レギュレータは使用する電流によって 78M05 や 78L05 などの種類があ ります。 入力電圧は 6.7 V 以上必要です。 また、IN と GND を高周波特性のよいコンデンサ 0.33 μF で繋ぐ必要があ ります。 通常は三端子レギュレータは電源回路などで使用します。

さて、データシートにもある次の回路を考えます。7805 の OUT から抵抗を繋 ぎ、 GND に接続します。 すると OUT と GND 間は常に 5V になるように働きますので、 R で 5V の電圧 降下が生じるように電流が流れます。この、 R と GND を繋いだ部分から電流 を取り出して、 LED を繋ぎ、 IN 側の電源のグランドに接続することで定電 流回路ができます。 但し、 GND 端子から 3.8mA の電流が出ますので、 20mA の定電流回路を作る には (20-3.8)mA が抵抗に流れるように抵抗値を決める必要があります。 また、電源電圧は LED に必要な電圧より 7V ほど高い電圧が必要です。 さらに、 7805 は一個 20 円程度しますので、比較的高額になります。

まとめ

さまざまな電流制御回路を紹介しましたが、必要に応じて特性を生かせる回路を 選択する必要があります。

種類 価格 電流値 電圧降下 外部コントロール
定電流ダイオード 固定 1V 以下 なし
抵抗 対象に応じて抵抗値を決める 設定次第 なし
トランジスタ 基準電圧と抵抗でコントロール 基準電圧-VBE(0.6V) 基準電圧でコントロール可能
三端子レギュレータ 抵抗でコントロール 7V なし

8-2. マイコンによる制御

直結

ATMega328P の電流特性はデータシート p.365 32. Electrical Characteristics にあるように、一つのポー トで最大 40mA 、全体で 200mA まで取り出せます。 また、 出力電圧VOHVCC=5V の時 4.2 V(20mA取り出した時) となります。 例えば、 LED に 10mA 流すとすると 20本光らすことができます。 但し、LED を繋げるときは必ず電流を制限するための抵抗を接続します。

スイッチング回路

トランジスタをスイッチとして使い、 LED を ON, OFF させることを考えます。 単なるスイッチとして働くため、マイコンの電源電圧や出力電流にとらわれな い回路を作ることができます。

スイッチング回路

基本的にはエミッタ接地回路です。 電源から LED を通し、電源制限抵抗などを介し、コレクタに繋ぎます。 ベースはトランジスタ保護用の抵抗 R1を介してマイコンに繋ぎま す。 エミッタは接地します。 2SC1815 の場合、コレクタ電流の最大値は 150mA なので、20mA 流す LED の回路を 7 本並列に接続できます。

なお、ベースの入力が 0V ではなく、スイッチのように開放された場合を考え ます。 すると、コレクタには電圧がかかっているのでコレクタ遮断電流 (ICBO)がベース側に回り込んで来ます。 このベース側に回り込んできた電流を放置するとベースからエミッタへ流れ込 みます。 すると、この電流の hFE 倍の電流がコレクタ、エミッタ間を流れ てしまいます。 そのため、このコレクタ遮断電流を逃すため、ベースを抵抗 R2を 介して接地する必要があります。 2SC1815 のデータシートを読むとコレクタ遮断電流は多くて 1μA ですので、 これが抵抗を流れる際にベースエミッタ間の電圧を上げない程度 (<<0.4V)に抵抗が小さくなければなりません。 つまり、 0.4[V] >> 1μA × R2 より R2 << 400kΩ が得られます。 なお、トランジスタが On の時、この抵抗の両端には VBE(= 0.6V) の電圧がか かりますので、相応の電流が流れます。

一方で、コレクタ電流をある程度流すには、ある程度のベース電流が必要です。 但し、マイコンをベースに直結すると、トランジスタに大量の電流が流れて壊 れますので、マイコンとベース間に抵抗を入れて電流を制限する必要がありま す。 十分なベース電流として、最小の hFE 値の値に対し て計算したベース電流の 2 倍程度を流します。 2SC1815 の場合、最小の hFE 値は 70 になります。 従って、必要なベース電流は 140/70*2 = 4mA となります。 一方、 R2 には多くてもベース電流程度の電流を流すとすると 175Ω ≤ R2 となります。 ここでは R2=1kΩ とします。 このとき、入力側が Hi になり、 R2 に VBE(=0.6V) の電圧がかかると、 R2 には 0.6mA 流れますので、トランジスタ と R2 には合計で 4.6mA の電流が流れます。 これが保護抵抗 R1 に流れる電流です。 マイコンが 5V になった時、 R1 には 5V-VBE= 5-0.6 = 4.4 V がかかりますので、4.4[V]=4.6[mA] × R1 よりほぼ R1=1kΩ となります。

大雑把に抵抗値を R1=R2=1kΩ と定めましたの で、再度回路を流れる電流を求めます。 入力が開放の時、 R2 を流れる電流は ICBO(=1μA) なので R2 の両端には 1mV の電圧がかかります。この時、ベース を流れる電流はデータシートからは読み取ることができず、 0mA と仮定でき ます。 一方、入力が 5V の時、VBE は 0.6V なので、 R1 に は 4.4V、 R2 には 0.6V がかかります。 したがって、 R1 には 4.4 mA、 R2 には 0.6mA 流れ ますので、ベースには 3.8mA が流れます。 ここで、 hFE>70 とすると、コレクタには少なくとも 270mA 以上の電流を流すことができます。 これはコレクタの定格を越えてますので、入力が 5V の時はトランジスタは完 全に On になります。

なお、2SC1815 は比較的電流を流せないトランジスタです。もっと大電流を流 したい場合は大容量のトランジスタやパワー MOS FET などにする必要があり ます。

定電流トランジスタ回路

前述した定電圧トランジスタ回路のベースにマイコンをつなぐとポートの On, Off により電流をコントロールできます。 なお、流す電流が 25 mA より大きくなる場合、マイコンを保護するためにベース に電流制限抵抗を入れる必要があります。 また、基準電圧を 0V にする場合、スイッチング回路と同様にベースを抵抗に より接地する必要があります。

D/Aコンバータ

D/A コンバータ
A を ON
A を ON
A を ON
A を ON
B を ON

定電流トランジスタ回路はベース電圧に応じた電流が流れます。 したがって、ベース電圧をマイコンでコントロールできれば、電流の量をマイ コンでコントロールできるようになります。 そこで、ラダー型 D/A コンバータを使うことを考えます。

ラダー型 D/A コンバータは図のような回路です。 例えば、ポート A が ON, ポート B,C が OFF の時を考えます。 C がグランドにつながっ ているので、 c 点からグランドへの合成抵抗は R になります。したがって、 b から c 経由の合成抵抗は 2R になります。 ここで B もグランドに繋がるので、 点 b からグランドへの合成抵抗も R となります。 それと直列に繋がる R と合成 すると a 点から見て b点方面は 2R でグランドに繋がります。 結局、ポート A に流れる電流は a 点で二分され、さらに b 点でまた 2 分さ れ、 c 点でも 2 分されます。 合成抵抗を考えると、A にかかる電圧が V の時、 a 点が 1/3V, b 点が 1/6 V、 c 点が 1/12 V になります。 同様にポート B のみ ON にすると、 b 点に 1/3 V、a 点、 c 点に 1/6V の電 圧が得られます。 さらに同様にポート C のみを ON にすると a 点に 1/12V の電圧がかかります。 したがって、重ねの理により A, B, C をそれぞれ On にした時、対応する 1/3, 1/6, 1/12 の値を加えた電圧が a 点にかかることになります。 つまり、 A,B,C∈{0,1} で表現し、 x=A×22+B×2+C とし た時、 a 点には x/12×V の電圧がかかります。

その他

電圧降下

LED の電圧降下は赤系統で 2.0〜2.4 V、青や白系統では3.3〜3.8 V です。 LED ごとにバラツキがあります。

並列つなぎ

×並列つなぎ(NG)
並列つなぎ(Ok)

LED は個体毎にばらつきがありますので、ダイレクトに電源に並列につながな いで下さい。 わずかなバラツキにより並列つなぎでは電圧降下値の小さいものに大きな電流 が流れるため、均等に電流が分配されません。 並列つなぎにする時は、必ず抵抗を一本ずつ入れて、個別に電流を制限して下 さい。

8-3. 実験

実験 1: 三色 LED による色のコントロール

三色 LED をマイコンにつなぎ、色を変化させなさい。

実験方法

三色 LED として、 Optical Supply 社の OSTA5131A を取り上げます。 これはカソードコモンなので、取り扱いは 7 セグメント LED と同様、カソー ドを グランドにつなぎ、各赤、青、緑のポートを電流制限抵抗を介してマイ コンのポートに接続します。

データシートにより各色毎に電圧降下が異なることがわかります。 ここでは最大 20mA、最小 1mA として、抵抗の範囲を求めます。 すると、赤色の場合、 125Ω から 2.5 kΩ の間になります。 そこで、120 Ω の抵抗と 5kΩ の半固定抵抗を直列につなぎ、電 流を変化させることにします。

部品表

部品個数
ブレッドボード一式
三色LED OSTA5131A一個
120Ω抵抗3本
5kΩ半固定抵抗3個

回路図

白色LED

トレーニングボードの出力ピンの右から、 GND, 5V, A0, A1, A2, A3 となりますので、 GND をブレッドボードのGNDにつなぎ、A0, A1, A2 をそれぞれ半固定抵抗に接続します。 これのレジスタは PortCになります。

サンプルプログラム

  1. 三色を全点灯して白になるように抵抗値を決定するには、 全点灯させるテストプログラムを使用します。
  2. 次に、色を切替えるプログラムを以下のように作ります。
    
    ;**************
    ;*  三色LED用 *
    ;**************
    ; Created: 2018/11/8 13:00:00
    ; Author : sakamoto
    ;
    
    .cseg
    .org	0x0000
    		rjmp	reset
    .org	INT_VECTORS_SIZE
    reset:
    	ldi     r16,high(RAMEND)
    	out     SPH,r16 
    	ldi	r16,low(RAMEND)
    	out	SPL,r16
    .equ	onc	= 0b00001111
    	ldi	r16,onc
    	out	ddrc, r16
    
    .macro	clrport
    	in	r16,@0
    	andi	r16,~@1
    	out	@0,r16
    .endmacro
    .macro setport
    	in	r16,@0
    	andi	r16,~@1
    	ori	r16,@2
    	out	@0,r16
    .endmacro
    main:
            setport portc,onc,0b00000000
    	rcall	wait
            setport portc,onc,0b00000001
    	rcall	wait
    	setport portc,onc,0b00000010
    	rcall	wait
    	setport portc,onc,0b00000011
    	rcall	wait
            setport portc,onc,0b00000100
    	rcall	wait
            setport portc,onc,0b00000101
    	rcall	wait
            setport portc,onc,0b00000110
    	rcall	wait
    	setport portc,onc,0b00000111
    	rcall	wait
    	rjmp	main
    
    .equ	time = 10
    main:
    	sbi	portb,pb5
    	rcall	wait
    	cbi	portb,pb5
    	rcall	wait
    	rjmp	main
    
    .def	wreg0 = r20
    .def	wreg1 = r21
    .def	wreg2 = r22
    wait:
    	ldi	wreg0,time
    wait0:
    	ldi	wreg1,0
    wait1:
    	ldi	wreg2,0
    wait2:
    	nop
    	dec	wreg2
    	brne	wait2
    	dec	wreg1
    	brne	wait1
    	dec	wreg0
    	brne	wait0
    	ret
    .exit
    
    またはC言語では次のプログラムで
    
    const byte out[] = {A0, A1, A2, 0xff};    
    void setup(){
      for(byte i=0; out[i] != 0xff; i++){
        pinMode(out[i], OUTPUT);
      }
    }
    void writePattern(byte p){
      byte b=1;
      for(byte i = 0; out[i] != 0xff; i++){
        digitalWrite(out[i], (p&b) != 0);
        b<<=1;
      }
    }
    void loop(){
      for(byte j=0; j<=7; j++){
        writePattern(j);
        delay(1000);
      }
    }		     
    

実験 2: 別電源による LED のコントロール

9V の電池を使い、 LED を直列につないだ物をマイコンで ON, OFF させます。

実験方法

  1. 220Ωの抵抗とLED 一個を直列に 5V の電源につなぎ、LEDの電圧降下を調べます。
  2. それを 9V の電源にいくつ直列にできるか計算します。
  3. 次に定電流トランジスタ回路を作り、直列につないだ LED の ON, OFF をマイ コンでコントロールします。

部品表

部品個数
ブレッドボード一式
9V 電池と9V 電池用スナップ一式
LED 4 個
トランジスタ 2SC1815 1 石
220Ω抵抗1本
1kΩ抵抗1本

回路図

別電源

トレーニングボードのピンからGNDとA0を取り出します。 A0はPortC0 に対応します。

サンプルプログラム

3色LED用のプログラムを使用し、A0の点滅のみ利用します。

考察

  1. LED の直列の数を変えても明るさが変わらないことを確かめなさい。
  2. エミッタの帰還抵抗の電圧降下 VE を測りなさい。こ こに大きな電圧(ほぼ VB-VBE≒4.4[V]) がかかります。 したがって、実際は 9V 全て使えるわけではありません。
  3. そこで、VE を下げることを考えます。 そのため、マイコンからの基準電圧をじかにつながず、ダイオード(LED も可)を通 すことを考えます。 すると、VB が下がるため、 VE=VB-VBE より、VE も下がります。 したがって、LED を光らせる数が増えます。 但し、VB-VBE が小さくなる とREの電圧降下が小さくなることになるので、抵抗値 やダイオードの電圧降下の値のバラツキが電流に大きな影響を与えるようにな ります。そのため、抵抗値の決定は慎重に行う必要があります。

実験 3: D/A コンバータによる調光

ラダー型D/A コンバータを実装し、 LED を流れる電流を制御します。

実験方法

  1. 実験 2 と同様の定電流回路を作ります。 但し、ベース側に D/A コンバータを作成します。 D/A コンバータの抵抗値は次のように決定します。 まず、コレクタに流す電流は高々 20mA なので、ベース電流は負荷が適切で あれば 0.1mA 程度しか流れません。 そこで、この分圧回路自体に、これの数十倍程度の電流が流すことにすれば 0.1mA 程度の影響は無視できます。 そこで、D/A コンバータを流れる電流を考えます。 もともとひとつの bit だけ On の時の D/A コンバータの合成抵抗は 3R です。 したがって、かける電圧を V とすると入力から流れる電流は 13 VR になります。 全てが Off 以外でもっとも少く流れるのは最下位 bit のみが On の場合です。 その場合、 D/A コンバータが n bit の時、出力に流れる電流は 13 1 2n-1 VR となります。 ビット数 n=3、 抵抗を R=330[Ω]、電圧 V=5[V]とすると I=1.3[mA] と なり一応 10 倍を越えます。
  2. なお、この場合、基準電圧を下げることはできないので、 LED の電源は 9V を使います。

部品表

部品個数
ブレッドボード一式
9V 電池と9V 電池用スナップ一式
LED 1 個
トランジスタ 2SC1815 1 石
330 Ω 抵抗13本

回路図

D/Aコンバータによる調光

R=330Ω とし、 2R は抵抗を二本直列に繋ぎます。

サンプルプログラム

実験 1 と同じプログラムを使用します。

実験 4: スイッチング回路による多数の LED のコントロール

5V の電源で多数の LED の点灯をコントロールします。

実験方法

  1. Arduinoから GND, 5V, A0 のポートをブレッドボードに引きます (ショートさせたりすると Arduino が壊れる恐れがあるので十分に注意すること)。
  2. 複数の LED を用意します。 アノードは電流制限抵抗を介して 5V に接続します。 一方カソードはそれぞれ接続し、スイッチング回路のトランジスタのコレクタ に繋ぎます。
  3. トランジスタでスイッチング回路を組みます。 トランジスタのエミッタは直接設置し、 ベースは保護抵抗を介してマイコンに接続します。 ベースから接地するための抵抗を 1kΩ とします。するとトランジスタ が On の場合 0.6mA 程電流が流れます。 また、保護抵抗の電圧降下は 4.4 V 程度を見込みます。 2SC1815 のコレクタ電流の定格は 150mA なので、 hFE が 最低 70 として、ベース電流は 4mA 程度にな ります。 つまり保護抵抗の抵抗値はも 1kΩ 程度になっていれば良いです。

部品表

部品個数
ブレッドボード一式
LED 7 個
トランジスタ 2SC1815 1 石
330 Ω 抵抗7本
1kΩ 抵抗2本

回路図

多数の LED

サンプルプログラム

実験1のプログラムを使用します。


坂本直志 <sakamoto@c.dendai.ac.jp>
東京電機大学工学部情報通信工学科