「Charlieplexing」と呼ばれるLEDの多重制御方式に注目が集まっている。この方式を利用すれば、N本のI/O端子で、N×(N−1)個のLEDを制御することができる*1)〜*5)。表1は、Charlieplexing方式によって制御可能なLEDの数と、各条件でLEDがオンになるデューティ比を示したものである。一見してわかるように、同方式は、I/O端子の本数を増やすと、デューティ比が極端に小さくなってしまうという欠点を持つ。このことは、一定の明るさを保つためには、LEDを流れる電流を比例的に増大させなければならないということを意味する。とはいえ、10本のI/O端子によって90個のLEDを制御できるので、同方式が便利なものであることに間違いはない。
本稿では、このCharlieplexing方式をさらに改善するものとして、制御可能なLEDの数を同方式に比べて2倍にする方式を紹介する。筆者らはこの方式を「GuGaplexing」と名付けた。GuGaplexing方式では、N本のI/O端子と少数の追加部品により、2×N×(N−1)個のLEDを制御できる。
図1に示すCharlieplexing方式では、2本のI/O端子により2個のLEDを制御できる。すなわち、D1のLEDを点灯させるには、P1が論理レベルのハイ(1)に、P2がロー(0)になるよう設定する。D2を点灯させるには、P1を0に、P2を1にセットすることになる。
一方、GuGaplexing方式は、図2に示す回路構成で実現する。これにより、2本のI/O端子で4個のLEDを制御可能である。この方式の基本的な考え方は、各I/O端子が1、0、Z(ハイインピーダンス)の3つの状態にセットできることを利用するというもので、2本のI/O端子によって9個の状態を作り出すことができる。表2は、2本のI/O端子P1、P2の各状態に対応するトランジスタペアQ1、Q2の出力(ノードPR1の電圧レベル)を示したものである。この例では、Q1、Q2として、それぞれ「BC557」と「BC547」を使用しているが、使用するトランジスタは特性がマッチしたペア品であることが望ましい。必要なトランジスタペアの数はN本のI/O端子に対して(N−1)組だ。
4個のLEDの制御には、表2に示した9つの状態のうち、5つの状態「00」、「01」、「10」、「11」、「ZZ」を使用する。表3に、4個のLEDを制御する場合について、P1およびP2の状態と点灯するLEDの関係を示した。
この回路が正常に動作するには、電源電圧VCCの1/2がLEDの点灯電圧より十分低いという条件が必要である。例えば、点灯電圧が約1.8Vの赤色LEDを使用する場合、電源電圧は2.4V程度であることが望ましい。同様に、点灯電圧が約3.5Vの青色LEDや白色LEDには5Vの電源電圧が適している。マイクロコントローラとしては、最近の製品であれば、1.8V〜5.5Vといった広い電源電圧に対応するので、米Atmel社の「AVRシリーズ」をはじめ広い選択肢の中から選ぶことができる。後で示す例では、マイクロコントローラとして同社の「ATTiny13V」を使用している。
図3に示すノードPR1の電圧と電源電圧の関係は、図2の回路においてトランジスタペアの入力ラインをオープンにしたときのSPICEシミュレーションの結果である。この図から入力ラインがオープンのときには、電源電圧VCCに対し、ノードPR1の電圧が広い範囲でVCC/2になることがわかる。
この方式によって24個のLEDを使用したバーグラフディスプレイを構成し、その動作を検証した。図4の回路で構成される同ディスプレイはプログラマブルであり、マイクロコントローラIC1(ATTiny13V)の入力アナログ電圧VINの値に比例する形でグラフを表示する(IC1で、VINの値を24ステップにA-D変換する)。この24個のLEDの制御に必要なI/O端子数は4本、トランジスタペアの数は3組である。使用したLEDは5mm透明パッケージの白色タイプ、電源は5Vとした。
ATTiny13の制御プログラムは、http://a330.g.akamai.net/7/330/2540/20081008171905/www.edn.com/contents/images/4274%20listing.zipからダウンロードできる。ソースコードはC言語で記述しており、コンパイルにはフリーのコンパイラ「AVR-GCC」を使用した。入力電圧範囲が0V〜5Vの範囲であれば、ソースコードの改変により表示電圧範囲を変更することができる。例えば、入力電圧1V〜3Vの範囲で線形表示する、あるいは入力電圧2V〜3Vの範囲で対数表示するといったことが可能である。
※1…Lancaster, Don, Tech Musings, August 2001. http://www.tinaja.com/glib/muse152.pdf
※2…"Charlieplexing: Reduced Pin-Count LED Display Multiplexing," Application Note 1880, Maxim, Feb 10, 2003
※3…Chugh, Anurag, and Dhananjay V Gadre, "Eight-Pin Microcontroller Handles Two-Digit Display With Multiple LEDs," Electronic Design, May 24, 2007
※4…Gadre, Dhananjay V, and Anurag Chugh, "Microcontroller drives logarithmic/linear dot/bar 20-LED display," EDN, Jan 18, 2007, p.83
※5…Benabadji, Noureddine, "PIC microprocessor drives 20-LED dot- or bar-graph display," EDN, Sept 1, 2006, p.71
Copyright © ITmedia, Inc. All Rights Reserved.