はじめに

Tiny2313のI2Cスレーブモジュール作成で参考にさせていただいたChunkさんのページにて、CharlieplexingというLEDを駆動する回路を知りました。調べてみると、LEDはダイオードであるという性質を利用して電流の流れる方向でLEDの点灯を制御する回路であった。その後ネットで、ikkeiさんの”Charlieplexingについての考察“という論文を発見した。Charlieplexing回路をさらにスマートにする考察だった。

当方はikkeiさん改良によるCharlieplexing 7SEG LED by ikkeiモジュールとドライブモジュールを作成したので紹介する。

Charlieplexing回路

基本

ここではCharlieplexing回路の簡単な原理を説明する。

Charlieplexingの基本回路

Charlieplexingの基本回路

これが基本的な回路である。LEDが点灯する電流の方向も決まっており、しかもダイオードであるので特定の方向の電流しか流れない。基本回路のようにLEDを組むと、pin1・pin2端子のプラス・マイナスでどちらのLEDの点灯させるか決定できる。

3ピンのCharlieplexing回路例

3ピンのCharlieplexing回路例

3端子のCharlieplexing回路である。6個のLEDを駆動できる。文献によると、端子数をNとすればN*(N-1)個のLEDを制御できるらしい。

ikkei版Charlieplexing

ikkeiさんの”Charlieplexingについての考察“によると、LEDの接続をマトリックスで考え、さらに多くのLEDを制御できるように工夫されている。

設計した回路とボード図

Charlieplexing 7SEG LED by ikkeiモジュール回路とボード図

Charlieplexing 7SEG LED by ikkeiモジュールの回路図

Charlieplexing 7SEG LED by ikkeiモジュールの回路図

Charlieplexing 7SEG LED by ikkeiモジュールのボード図

Charlieplexing 7SEG LED by ikkeiモジュールのボード図

回路は論文の通りです。トランジスタの使い方が興味深く、2C1815をエミッタフォロアで使いスイッチとともに電流制御のダイオードとして利用している。

ドライブボードの回路とボード図

ドライブボードの回路図

ドライブボードの回路図

ドライブボードのボード図

ドライブボードのボード図

シリアルとI2CでCharlieplexing 7SEG LED by ikkeiモジュールを制御するボードである。

そして完成品

出来上がった基板(表)

出来上がった基板(表)

出来上がった基板(裏)

出来上がった基板(裏)

関連ファイル一式の公開

Eagleファイル、ファームを含むファイル一式を公開する。Eagleユーザでなくても基板作成できるようにPDFファイルを同封した。

Charlieplexing 7SEG LED by ikkeiモジュールとドライブモジュール一式"Charlieplexing 7SEG LED by ikkeiモジュールとドライブモジュール一式"をダウンロード

補足説明

動作モードの確認

電源投入時に、ジャンパの設定により[I]または[S]が表示される。
意味は以下の通り
[I] ・・・ I2Cモード
[S] ・・・ シリアルモード

シリアル時の通信パラメータ

シリアル時の通信パラメータは以下の通り。
9,600ボー、パリティー無し、データ・ビット 8、ストップビット 1

I2Cのアドレス

I2C時のアドレスは0x33である。

制御コマンド

制御コマンドは以下の通り。

I2C/UART コマンドの説明

■特殊コマンド

ESC’L’…. xの位置にの文字を書く
ESC’C’ …. 表示クリア
ESC’ ESC’>’ …. 画面右移動(空白で埋める)
ESC'[‘ …. 画面左移動(文字をローテート)
ESC’]’ …. 画面右移動(文字をローテート)

■文字表示

0~9 a~z(A~Z) を送信することにより表示、ただし.をつけるとひとつ前の文字に.がつく。

レジスタアドレスを振って機能を実装したほうがI2Cぽっくて良いのかもしれませんが、PCからRS232Cで制御するのならESCシーケンスで制御するのが簡単なので、このような仕様になっている。

あとがき

Charlieplexing 7SEG LED by ikkeiモジュールの駆動はドライブボードのファームを見るとわかると思うが、7セグLEDをひとつの単位として表示させてるダイナミック表示方法とは違い、7セグLEDのLEDひとつひとつを直接表示さるため、CPUピンの入力・出力を高速に入れ替えている。ソフト的に興味深いところである。

ハードウェアに関して取り立てて目新しいこともないが、Charlieplexing 7SEG LED by ikkeiモジュールは片面基板であることに加え7セグLEDの接続が込み入ってるので製作には難度が高い。
特別な部品を利用してないが、7セグLEDは秋月の10個150円のバーゲン品を利用した。

謝辞

ikkeiさんCharlieplexingの貴重な考察ありがとうございました。追試によってCharlieplexing的なLEDの駆動の有効性を確認できました。

参考先

補足[2011/9/17]

新規作成

補足[2012/2/24]

Tiny2313のヒューズビットの設定

以下の設定で、8Mhセラロックで駆動するように設定してください。

Lo:0xCF Hi:0xDF Ex:0xFF(01)