電光掲示板開発にて~トランジスタの使い方とAND回路~
今回はPICマイコンを用いた電光掲示板を作ります。今回作る電光掲示板とは、5×8に配列した40個のLEDのうち、好きなLEDを同時に光らせるものです。しかし、今回使用するPIC16F84はAポートが5ピン、Bポートが8ピンの計13ピンしかありません。よって1ピンにつき1個のLEDを光らせたのでは13個のLEDしか制御できません。ここでトランジスタのスイッチングの機能を用いて40個のLEDの制御に挑戦します。
マイコンを用いてLEDを一個光らせる方法
まず、1本のマイコンのピンで1個のLEDを光らせる方法を考えます。これはアナログ回路で電池をLEDに繋いで光らせる方法と同じです。図1のようにマイコンの任意のピンに電圧をhigh(16F84の場合は5V )の命令を行い、LEDのカソードをグラウンドへ繋げば電流が流れます。
しかし、マイコンを駆動する電流はあくまで論理回路にのみ使うものでLEDを光らせるといった仕事はマイコン内部の電流を不安定にする可能性があるで避けたいものです。そこで、トランジスタを用いて、マイコンから流れた電流を増幅しLEDを点灯させます。こうすることでマイコンの論理回路を安定に保ち、かつLEDに安定かつ大きな電流を流すことができます。図2のようにマイコンからの微弱電流①をきっかけとし、②の大電流を流すことができます。
トランジスタ(NPN型)の働き
ここでトランジスタ(※PNP型とNPN型があるがここではNPN型について説明)の仕組みを説明します。トランジスタは微弱電流をスイッチとし大電流を流すなど、電気回路の中のスイッチとして多く用いられます。トランジスタにはエミッタ、ベース、コレクタの3つの端子があります。ベース→エミッタに微弱電流が流れると、コレクタ→エミッタ間の抵抗が限りなく小さくなり、コレクタの電圧がエミッタのそれより大きい場合、コレクタ→エミッタ間に大電流が流れます。下図3参照。
※PNP型トランジスタは、製作に必要になったときにまた別の形でまとめたいと思います。
PICのピンを2本用いたLEDの制御
では、いよいよマイコンのN13本(A,Bポートそれぞれ5,8ピン)を用いて40個(5×8個)のLEDを制御する方法を考えます。まず大まかな考え方は図4のようになります。LEDのカソード側をAピン、アノード側をBピンを用いて制御することで5×8個のLEDを制御できることになります。例えば、A0ピンに電圧を5Vかけ、Bポートの各ピンにかける電圧を制御することで任意のLEDを光らせることができます。さらに、人間の光を感じる速度よりも速くLEDの点灯を切り替えA1,A2A3,A4ピンも一定時間毎にLEDを光らせます。
しかし、単純にAピンを5V,Bピンを0Vに命令をしても電流は流れません。なぜなら、マイコンの論理回路では5V, 0Vの命令自体は微弱電流で動いており、その電流をそのままハードウェアの駆動に使えばマイコン内の論理回路が崩れてしまいます。具体的には、A0ピン→LED→抵抗→B0ピンとつなぎ、A0ピンに5V,B0ピンに0Vとプログラミングをしても、実際はB0ピンには3V の電圧が掛かってしましLEDを光らせることはできません。
これは、いくらデジタル回路といえどマイコンも電気回路である以上、電気回路として矛盾を作ってしまうとマイコン内の電圧が狂い、プログラム通り動かないと考えられます。すなわち、デジタル回路はあくまで論理回路であり、ハードウェア(LEDやモータ、スピーカー)を駆動する場合は電流を増幅しないといけないことがわかります。
今行い事は、片方のPINの命令によりLEDのアノード(+極)にVcc(電源電圧5V)をかける,もう一方のPINの命令によりLEDのカソード(ー極)にGND(アース0V)を繋げることです。ここでトランジスタを用いることにしました。トランジスタは、B(ベース)からE(エミッタ)に微弱電流が掛かるとC(コレクタ)E(エミッタ)間の抵抗が極めて小さくなるという性質があります。そこで、片方のPINでは電圧をトランジスタのBにかけることでLEDのアノードとVcc間の抵抗を微小にします。さらに、もう片方のPINからトランジスタのBに電圧をかけることで、LEDのカソードをGNDにつながるようにします(図6参照)。これをAのPIN5本とBのピン8本を利用することでの40個のLEDの点滅を制御することが可能になります。
AND回路との比較
このように、デジタル電光掲示板作成のために試行錯誤を経て作った回路ですが、後日要素を整理すると論理回路におけるAND回路と同じだということがわかりました。AND回路とはすべての入力端子が1の場合にのみ出力が1になるという回路です。今回の電光掲示板もA1,B4ピンの両方がhighのときのみLEDに電流が流れるという点でAND回路となっていました。しかし、以前はトランジスタの原理やそれを論理回路に利用されていることは知識として知っていても、具体的にどのように応用するかがわかりませんでした。今回は、マイコンの誤作動をなくすための仮路作りを通してトランジスタの論理回路への応用方法を学ぶことができました。