応用回路設計のための第一歩 ―― I/O規格とLED表示,スイッチ入力,アナログ出力,RS-232通信のための回路の設計法
tag: 半導体 電子回路 ディジタル・デザイン
技術解説 2009年5月18日
2.LEDの使い方
LED(発光ダイオード)は,電気を流すと光る光半導体部品です.付属FPGA基板に実装されている単体のLEDのほか,7個のLEDを数字の8の字に配置にすることで,0~9までの任意の数字を表示させることができる7セグメントLEDもあります.7セグメントLEDは,小数点を示すドットを表すLEDと合わせて,合計8個のLEDによって構成されているのが一般的です(写真1).
写真1 単体のLEDと7セグメントLED
LEDを点灯させるためには,最低限の知識がいくつか必要です.それは順方向電圧と順方向電流(駆動電流)です.
● LEDを駆動する順方向電圧
電流を流すことで光るLEDは,動作するために数Vの電圧が必要です.
LEDは,ダイオードの一種です.ダイオードは,アノードからカソードに電流を流すときに,電圧降下が起こります(図5).この値を「順方向電圧」といいます(コラム「LEDは逆方向の電圧に弱い」を参照).
図5 LEDの順方向電圧
LEDは,電力用のダイオードの数倍もの電圧降下を生じます.おおむね2.0V~3.2V程度の範囲です.色によっても順方向電圧が大きく違います.一般的に,赤<黄<緑<青<白<昼白色の順で,順方向電圧が高くなります.
順方向電圧は,LEDを駆動するための電圧と同じ意味です.例えば順方向電圧が2.0Vの赤色LEDを駆動したい場合には,2.0V以上の電源で動かさなければいけないことになります.また,白色LEDは3.0V以上が必要なので,2.0Vでは光らせることはできません.
このように,順方向電圧はLEDを使う上で非常に重要なパラメータになります.使用するLEDのデータシートに記載されている値を,あらかじめ調査しておく必要があります.
● LEDの明るさを決める駆動電流と電流制限抵抗
LEDは,順方向電圧以上の電圧をかければ点灯します.ただし,このままだと電源から無制限に電流が流れ,最悪の場合には壊れてしまいます.
そこで,電源とLEDの間,またはLEDとグラウンドの間に適当な抵抗を入れて,LEDを流れる電流を制限します(図6).直列回路ですから,抵抗に流れる電流値とダイオードに流れる電流値は一致します.ここでLEDと電源の間に挿入した抵抗を「電流制限抵抗」といいます.
図6 電流制限抵抗の求め方
LEDは,ある程度の電流を流さなければ,所望の輝度(明るさ)を得ることはできません.この値はLEDの順方向電流としてデータシートに規定されています.電流を必要以上に制限してしまうと暗くなります.また,規定以上の電流を流すと明るくなりすぎ,その結果,熱をもって破壊してしまうこともあるので注意が必要です.
● 電流制限抵抗の決め方
実際にLEDを点灯する回路を作ってみます.LEDを点灯させるのに重要なパラメータは,順方向電圧と駆動電流です.
例えば,順方向電圧2.2VのLEDを駆動電流10mAで点灯させるものとします.電源電圧は3.3Vとします.
図6の回路から,抵抗とLEDで電源電圧を分圧することになります.順方向電圧が2.2V,
となります.
直列回路なので,LEDに流れる電流値と同じ電流が抵抗にも流れます.そのため,VR=1.1Vと抵抗を流れる電流10mAから,抵抗値が計算できます.
つまり,110Ωの抵抗値を3.3VとLEDの間に挿入することで,順方向電圧と駆動電流を所望の値にできます.
● FPGAからLEDを点灯させる方法
FPGAからLEDを点灯させる回路として,FPGAのピンに抵抗を介してLEDのカソード側を接続し,アノード側は電源に接続した回路をよく使います(図7).
図7 FPGAからLEDを点灯させる基本回路
FPGAがHレベルを出力すると,3.3Vに近い電圧がFPGAのピンに現れます.この場合,LEDが点灯するために必要な順方向電圧を満たすことはできません.つまり,消灯状態です.
FPGAがLレベルを出力すると,0Vに近い電圧がFPGAのピンに現れます.この場合,グラウンドにLEDのアノードが接地された状態とほぼ同じになります.順方向電圧を満たすことができるので,点灯します.
● 多数のLEDを駆動する場合はバッファが必要
図7の回路は非常にシンプルですが,FPGAに負担がかかるということに注意してください.
もともと,FPGAのI/Oピンは大きな電流を駆動する用途には向いていません.LatticeXP2の場合,3.3VのLVTTL/LVCMOSで最大で20mAを駆動できますが,これは1ピンだけ使用する場合の値です.すべてのI/Oを使用する場合は,チップ全体またはI/Oバンク単位の制限により,1ピン当たり平均8mA程度の駆動能力しかありません.従って,複数のLEDを接続する場合には注意が必要になります.
例えば7セグメントLEDは,通常8個のLEDが集積されています.十分な輝度を得るには1エレメント(1個のLED)当たり少なくとも10mA程度の電流を流す必要があります.1けた当たり80mA以上の電流を必要とします.4けたなら320mAにもなります.電流を多く流さないと輝度が十分に取れないLEDや多数のLEDの駆動は,FPGAのI/Oピンの駆動能力の観点から難しくなります.
このような場合,LEDとFPGAの間に,バス・バッファICを挿入することで解決できます.例えば米国Texas Instruments社のバス・バッファIC「74HC245」はH/Lレベルともに24mAの電流を流すことが可能です(図8).
図8 バス・バッファICを使ったLED回路
順方向電圧というものがあるなら,当然,逆方向の電圧も規定されています.この値は,絶対最大定格という「ほんの瞬間でもこの値を超えたら,デバイスの動作は保障しない(普通は破壊する)」の中で規定されている恐ろしい(!)値です.
実はLEDは,ほかのダイオード部品と違い,逆方向の電圧には非常に弱い特性を持ちます.LEDの種類にもよりますが,5V程度で壊れてしまうLEDもあります.
ありがちな話ですが,LEDの極性が分からないときが一番危険です.誤って,逆方向に電圧をかけただけで,LEDは簡単に壊れてしまい,チェックをする端からどんどんLEDを壊していたなんていうことも,笑い事ではありません.