「ものづくり:make」を楽しみながら学ぶ人へ向けた独習サポートサイト。

PICマイコン Lab.

PICマイコンLab.では、PICマイコンに関する情報やPICマイコンを使った電子工作を紹介しています。

27個のLEDを12本の信号線で制御する秘密
4-7

LEDの制御を考える

2018-06-212018-06-21

PICA Tower(ピカタワー)では、搭載しているPIC16F1827を使って、27個のLEDを制御しています。この記事では、27個のLEDを12本の信号線で制御する秘密について探ります。

4-7-1.LEDの点灯

まず、LEDを点灯させる簡単な回路を使って、その仕組みを知りましょう。

LEDの点灯

図4-7-1-1は、乾電池でLEDを点灯させる最も簡単な回路です。LEDを点灯させるには、LEDのアノード(A)からカソード(K)に向かって電気が流れるように電圧を加えます。この時、LEDの点灯に必要な電圧値を「順方向電圧」といいます。また、LEDに流すことができる電流は、最大値が決まっており、その値を制限電流と言います。赤色LEDの場合、順方向電圧が2V前後、制限電流が20mA程度となっています。

図4-7-1-1.LEDを点灯させる回路
図4-7-1-1.LEDを点灯させる回路

図4-7-1-1の回路図の場合、乾電池の電圧が3V、赤色LEDの順方向電圧が2Vなので、分圧によって赤色LEDに2V、抵抗器に1Vの電圧がかかります。抵抗器の値が100Ωなので、回路に流れる電流値は1V÷100Ω=10mAで求められます。10mAは、赤色LEDの制限電流20mAより小さな値なので、LEDを安全に点灯することができます。

LEDの詳しい情報は「電子工作[超]入門 Lab.」の「2-4.LED【発光ダイオード】」「3-1.LEDを光らせる【Lピカ】」で紹介しています。

4-7-2.PICA Tower(ピカタワー)のLED

では、PICA Tower(ピカタワー)のLEDを見てみましょう。ここでは、わかりやすいように1個のLEDを抜粋して、プログラムで点灯と消灯を制御する方法を考えます。

プログラムによるLEDの制御

図4-7-2-1は、「4-6.PICA Tower(ピカタワー)の回路図」から、1段目の2番LEDのみを抜粋した回路図です。先ほどの「乾電池でLEDを点灯させる最も簡単な回路(図4-7-1-1)」と比較してみると、乾電池に相当する部分が、PIC16F1827に置き換わっていることがわかります。ということは、2番LEDのアノードからカソード(赤い矢印の方向)へ電気が流れるように、PIC16F1827で電圧を加えることができれば、LEDが光りそうです。

図4-7-2-1.PICA Tower(ピカタワー)の回路図(1個のLED)
図4-7-2-1.PICA Tower(ピカタワー)の回路図(1個のLED)

ところで、LEDが繋がっているPIC16F1827のRB0・RA0という端子には、どのような機能があるのでしょうか。もう一度「4-3.データシートを読む(デバイスを知る)」を見ると、RB0・RA0といった名称から、入出力端子(I/O)として機能が割り当てられていることがわかります。

入出力端子(I/O)は、そのひとつずつをあらかじめ入力用、または出力用に設定して使用します。出力用に設定された端子は、「電圧がある状態」または「電圧がない状態」を作り出すことができます。「電圧がある状態」とは、PIC16F1827の電源電圧を同じ電位(5V)にすること、「電圧がない状態」とは、グランドと同じ電位(0V)にすることです。

入出力端子(I/O)を、入出力用に設定したり、「電圧がある状態」や「電圧がない状態」を作り出すのは、すべてプログラムによって行います。また、「電圧がある状態」を「H(ハイ)」、または「1」と表します。「電圧がない状態」を「L(ロー)」、または「0」と表します。

つまり、RB0・RA0の端子をいずれも出力用に設定した後、RB0を「H」、RA0を「L」にすることで、RB0が5V、RA0が0Vとなります。これによって、2番LEDのアノードからカソード(赤い矢印の方向)へ電気が流れるように電圧が加わり(電位差が生じて)、LEDが点灯します。

では、LEDを消灯するにはどうすればいいのでしょうか。消灯には、次の3つの方法があります。

  1. RB0・RA0のいずれも「H」にする
  2. RB0・RA0のいずれも「L」にする
  3. RB0を「L」、RA0を「H」にする

(1)と(2)の方法は、RB0とRA0の電位が同じとなるため、電気が流れず、LEDは消灯したままとなります。(3)の方法は、RA0のほうが電位が高くなるため、赤い矢印とは反対の方向へ電気が流れようとします。しかし、LEDが逆向きの電流に対して、流れを阻止し、点灯しないという特性があるため、消灯したままとなります。

27個のLEDを12本の信号線で制御する秘密

PICA Tower(ピカタワー)に搭載されているLEDは27個ですが「4-6.PICA Tower(ピカタワー)の回路図」を見ると、LEDを制御する信号線は12本(RB0~RB7、RA7、RA0~RA2)しかありません。どのように制御しているのでしょうか。

図4-7-2-2は、各段の2番LEDのみを抜粋した回路図です。この回路図を見ると、各LEDのカソード側は別々のRA0・RA1・RA2へ繋がっていますが、アノード側はすべてRB0へ繋がっていることがわかります。では、このように接続した場合、LEDの点灯・消灯はどのように制御するのでしょうか。

図4-7-2-2.各段の2番LEDを制御する
図4-7-2-2.各段の2番LEDを制御する

まず、すべての端子(RB0、RA0~RA2)が「L」の場合を考えてみます。すべてのLEDの両端が「L」であるため、電位差が生じず、すべてのLEDが消灯したままです。

次に、RB0を「H」にします。すると、すべてのLEDの両端が「H」と「L」になるため、電位差が生じ、すべてのLEDが点灯します。

続けて、RA0を「H」にします。すると、1段目の2番LEDの両端が「H」となるため、電位差がなくなり、1段目の2番LEDのみが消灯します。同様に、RA1・RA2を「H」にすると、2段目の2番LED・3段目の2番LEDが消灯します。

このように、4つの端子の状態を「H」と「L」で組み合わせることによって、3つのLEDを制御することができます。でも、4つの端子(4つの信号線)で、3つのLEDを制御するのでは、あまりメリットは感じられません。むしろ損をしていますね。

では、端子(信号線)を一つ増やしてみましょう。図4-7-2-3は、RB1を増やした回路図です。このように、増やした端子をLEDのアノード側へ接続することで、3つのLEDを追加することができます。もちろん、合計6つのLEDを制御(ひとつずつ点灯と消灯)することができます。

図4-7-2-3.各段の2番LED・3番LEDを制御する
図4-7-2-3.各段の2番LED・3番LEDを制御する

このような方法で接続すると、アノード側の端子を9つ用意することで、合計27個のLEDを制御することができます。これが、アノード側の端子9つ、カソード側の端子3つ、合計12つの端子(12本の制御線)で27個のLEDを制御することができる秘密です。

すべてのLEDが、プログラムによって、個別に点灯・消灯を制御できることがわかりました。もう一度、図4-7-2-4に全LEDの回路図を掲載するので、他のLEDについてもゆっくり考えてみてください。

図4-7-2-4.PICA Tower(ピカタワー)の回路図(すべてのLED)
図4-7-2-4.PICA Tower(ピカタワー)の回路図(すべてのLED)

PICマイコン関連のおすすめ品

PIC16F1827を使用した、赤・緑・青・黄のLED27個を円柱状に光らせる3Dイルミネーションキットです。PIC16F1827のプログラムは書き換えが可能で、C言語によるプログラミングが学習できます。詳しいマニュアルは株式会社イーケイジャパンよりダウンロードできます。

エレキット ピカ・タワー AW-864

エレキットのアートする電子工作シリーズ。 LED(発光ダイオード)を使用した3Dイルミネーションキットです。LEDは赤・緑・青・黄の4色、全部で27個使用して、円柱状に配置したLEDを光らせます。

PICマイコンのプログラミング(C言語)について、最新の開発環境を使って解説した役立つ一冊です。

C言語による PICプログラミング大全

著 者
後閑哲也
出版社
技術評論社
発売日
2018/04/14

PIC16F1ファミリのアーキテクチャ、新しい開発環境であるMPLAB IDE Xの使い方、C言語によるPICのファームウェア開発方法、内蔵モジュールの使い方と具体的な製作例などについて詳細に解説しています。

電子工作のための PIC16F1ファミリ活用ガイドブック

著 者
後閑哲也
出版社
技術評論社
発売日
2013/04/11
この記事を読んだ人は、こんな記事にも興味があります。
スポンサーリンク
TOPへ移動
目次へ移動