このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。
ダイオードは基本的に一方向にしか電流が流れないものですが、電圧—電流特 性は次のような指数関数的な関係になります。
流れる電流が増えると発熱し、温度が上がりますので、完全な指数関数よりは やや増加が鈍りますが、基本的には指数関数的だと思って下さい。 すると、ある電圧を越えると急激に電流が流れ、発熱が始まります。 そして、発熱が激し過ぎると壊れます。 ダイオードの種類にも依りますが、基本的にはダイオードには 20mA を越える 電流は流さないようにするのが常識です。 また、電流が流れ始める時の電圧と、20mA 流れる時の電圧は大して変わらな いので、通常は同一と見なします。 これは、電圧によって電流のコントロールができないことを意味します。 つまり、近似的なダイオードは 20mA しか流せず、また流れ始めるのに一定の 電圧降下があると解釈して下さい。 そのため、かける電圧を調整する以外の方法で電流を制限しなければなりません。
LED を点灯させる時、流れる電流を制御する必要があります。 電流を制御する方法にはいくつかありますので、それを紹介します。
定電流ダイオードとは、ある程度の電圧をかけると一定の電流しか流さなくな る特殊なダイオードです。 100V でも耐えるものもあります。 15mA など、 LED に適した規格もあるため、もっとも単純で確実な電流制御方 法です。 十分な電圧(1V 程度)があれば、定電流ダイオード一本と、必要な本数の LED を直列に繋げば LED に必要な電流を供給できます。 但し、一本 50 円から 100 円程度するので、複数の制御を行う場合や、並列 に繋ぐ場合などは比較的回路が高額になります。
LED と直列に抵抗を繋ぎ、電流を制限します。 電源電圧を V、LED の電圧降下を Vf、電流を I、抵抗値を R とすると次の式になります。
これにより抵抗値を決定します。 誤差により電流が流れ過ぎると、抵抗の電圧降下が大きくなるため、 Vf に多少誤差があっても、流れる電流の誤差もおなじ割合になり ます。
抵抗は一本 1 円以下なので、もっとも安価に電流を制御できます。
トランジスタのエミッタ接地回路は、ベース—エミッタ間電流でコレクタ— エミッタ間電流を制御できます。 ここで、帰還抵抗 R のみの回路を考えます。 ベース電流 IB の hFE 倍だ けコレクタ電流 IC が流れ、 ベース—エミッタ間電圧をVBEとすると、 ベース電圧 V とコレクタ電流 IC に関して次の式が成り立ちます。
つまり、コレクタに十分な負荷と十分な電圧をかけると IC の値が一定に保たれることになります。 但し、負荷が無い時、つまり IC が流れなかった時、 IB が IC と同じくらい多く 流れてしまいます。 そのため、そのような場合でもトランジスタを壊さないようにベース側に保護 用の抵抗を繋ぐこともあります。 なお、トランジスタ 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 | なし |
PIC 16F628A の電流特性はデータシート 17.0 (p.135)にあるように、一つのポー トで最大 25mA 、全体で 200mA まで取り出せます。 また、 17.4(p. 140)によると出力電圧は VDD-0.7 V となります。 例えば、 LED に 10mA 流すとすると 20本光らすことができます。 但し、LED を繋げるときは必ず電流を制限するための抵抗を接続します。 なお、電流を取り出すことのできる I/O ポートは RA0〜3 と RA6,7 と RB0〜 7 の合計 14 ポートになります。
トランジスタをスイッチとして使い、 LED を ON, OFF させることを考えます。 単なるスイッチとして働くため、マイコンの電源電圧や出力電流にとらわれな い回路を作ることができます。
基本的にはエミッタ接地回路です。 電源から LED を通し、電源制限抵抗などを介し、コレクタに繋ぎます。 ベースはトランジスタ保護用の抵抗 R1を介してマイコンに繋ぎま す。 エミッタは接地します。 2SC1815O の場合、コレクタ電流の最大値は 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 倍程度を流します。 2SC1815O の場合、最小の 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 などにする必要があり ます。
なお、 PIC の RA4 はこのオープンコレクタの FET 版であるオープンドレイ ンになっています。これには 200mA まで流せます。
前述した定電圧トランジスタ回路のベースに PIC をつなぐとポートの On, Off により電流をコントロールできます。 なお、流す電流が 25 mA より大きくなる場合、 PIC を保護するためにベース に電流制限抵抗を入れる必要があります。 また、基準電圧を 0V にする場合、スイッチング回路と同様にベースを抵抗に より接地する必要があります。
定電流トランジスタ回路はベース電圧に応じた電流が流れます。 したがって、ベース電圧をマイコンでコントロールできれば、電流の量をマイ コンでコントロールできるようになります。 そこで、ラダー型 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 ごとにバラツキがあります。
LED は個体毎にばらつきがありますので、ダイレクトに電源に並列につながな いで下さい。 わずかなバラツキにより並列つなぎでは電圧降下値の小さいものに大きな電流 が流れるため、均等に電流が分配されません。 並列つなぎにする時は、必ず抵抗を一本ずつ入れて、個別に電流を制限して下 さい。
PIC は 3V から 5.5V の間で動作します。 従って、他の高い電圧で LED を動作させる際、その電圧から 5V などを作れ れば電源は一つで済みます。 そのため、三端子レギュレータ 78L05 などを使用することができます。
三色 LED をマイコンにつなぎ、色を変化させなさい。
三色 LED として、 Optical Supply 社の OSTA5131A を取り上げます。 これはカソードコモンなので、取り扱いは 7 セグメント LED と同様、カソー ドを グランドにつなぎ、各赤、青、緑のポートを電流制限抵抗を介して PIC のポートに接続します。
データシートにより各色毎に電圧降下が異なることがわかります。 ここでは最大 20mA、最小 1mA として、抵抗の範囲を求めます。 すると、赤色の場合、 125Ω から 2.5 kΩ の間になります。 そこで、120 Ω の抵抗と 5kΩ の半固定抵抗を直列につなぎ、電 流を変化させることにします。
部品 | 個数 |
---|---|
ブレッドボード | 一式 |
電池と電池ボックス(4.5V) | 一式 |
18pin 以上のゼロプレッシャー IC ソケット | 一個 |
三色LED OSTA5131A | 一個 |
120Ω抵抗 | 3本 |
5kΩ半固定抵抗 | 3個 |
現状のブレッドボード上の回路への影響を最小限にするために、 RA0, RA1, RA2 を使います。
counterp_prg macro limit,port
inccounter
incf counter,1
movlw limit
subwf counter,0
btfsc STATUS,Z
clrf counter
dispcounter
movf counter,0
call getpat
movwf port
return
endm
そして以下のようにパターンを LED に送ります。
;************
;* 実験 1 *
;************
#include "gs2.inc"
org 0x0000
goto start
org 0x0008
start
enable_PAPB
bwait_init d'3'
counter_init
main
call bwait
call inccounter
goto main
counterp_prg enddata-startdata,PORTA
getpat
addwf PCL,1
startdata
retlw b'00000001'
retlw b'00000010'
retlw b'00000100'
retlw b'00000011'
retlw b'00000110'
retlw b'00000101'
retlw b'00000111'
enddata
bwait_prg
end
9V の電池を使い、 LED を直列につないだ物を PIC で ON, OFF させます。
部品 | 個数 |
---|---|
ブレッドボード | 一式 |
電池と電池ボックス(4.5V) | 一式 |
9V 電池と9V 電池用スナップ | 一式 |
18pin 以上のゼロプレッシャー IC ソケット | 一個 |
LED | 5 個 |
トランジスタ 2SC1815 | 1 石 |
220Ω抵抗(330 Ω でも可) | 1本 |
1kΩ抵抗 | 1本 |
現状のブレッドボード上の回路への影響を最小限にするために、 RA0 を使い ます。
sw.asm または flash.asm を使用します。
ラダー型D/A コンバータを実装し、 LED を流れる電流を制御します。
部品 | 個数 |
---|---|
ブレッドボード | 一式 |
電池と電池ボックス(4.5V) | 一式 |
9V 電池と9V 電池用スナップ | 一式 |
18pin 以上のゼロプレッシャー IC ソケット | 一個 |
LED | 1 個 |
トランジスタ 2SC1815 | 1 石 |
330 Ω 抵抗 | 13本 |
R=330Ω とし、 2R は抵抗を二本直列に繋ぎます。
実験 1 と同じプログラムを使用します。
5V の電源で多数の LED の点灯をコントロールします。
部品 | 個数 |
---|---|
ブレッドボード | 一式 |
電池と電池ボックス(4.5V) | 一式 |
18pin 以上のゼロプレッシャー IC ソケット | 一個 |
LED | 7 個 |
トランジスタ 2SC1815 | 1 石 |
330 Ω 抵抗 | 7本 |
1kΩ 抵抗 | 2本 |
sw.asm または flash.asm を使用します。
部品 | 個数 |
---|---|
9V 電池と9V 電池用スナップ | 一式 |
三色LED OSTA5131A | 一個 |
LED 用キャップ | 一個 |
トランジスタ 2SC1815 | 1 石 |
LED | 5 個 |
120Ω抵抗 | 3本 |
330 Ω 抵抗 | 13本 |
1kΩ抵抗 | 2本 |
5kΩ半固定抵抗 | 3個 |