(1)回路設計 - 電光掲示板制作ノート

記事一覧 https://developer.mbed.org/users/p4ken/notebook

目標

/media/uploads/p4ken/ss.png 電車内のLED案内装置を再現することを目指します。大きさは相鉄8000系車両などと同じ1行11文字です。木枠も制作するつもりで、枠の大きさによって1行6文字タイプなども再現できるようにします。

回路図

Warning

下記は当初の回路図です。このあとノイズ対策などのため変更が生じています。

/media/uploads/p4ken/led1c.png

水魚堂の回路図エディタBSch3Vで描きました。回路図ファイルはこちら

詳細

LEDマトリクス

/media/uploads/p4ken/lt-5016m1.jpg

LEDは秋月電子通商の2色16x16ドットマトリクス(LT-5016M1)を使用します。LT5016M1自体のデータシートは見つかりませんが、LT5016EDで検索するといくつか出てきます。1600ミリ秒周期(1行あたり100ミリ秒)でダイナミック点灯するとき最大定格電流が1ドットあたり80mAです。

スイッチング電源

/media/uploads/p4ken/rsw300b-5.jpg

LEDマトリクスを全点灯した場合、仮に定格いっぱいに電流を流すと 80mA x 16ドット x 2色 x 11文字 = 28.16A というかなり大きな電流を消費します。この電流を賄うため、TDKラムダのスイッチング電源(RWS300B-5)を使用します。新品を買うと8000円程度してしまいますが、今回はヤフオクで1000円で入手できました。家庭の100Vコンセントを5Vに変換して50Aまで出力してくれます。

アノード側の制御

LEDはアノードコモンですので16行ぶんの16ピンがLEDマトリクスから生えています。ピン番号は1~16で、ダイナミック点灯の行選択に使います。すなわち常にピン1~16のどれか一つだけをONにすることになります。例えばピン1がONならLEDの1行目が点灯します。それぞれのLEDパネルのアノードピンは互いに接続し、一番左側のアノードピンをmbedにつなぎます。Nucleo-F446REの場合はピン数が多いため16本のアノードピンをすべてつないでしまっても構いませんが、もともとArduinoでの制御を検討していたこともあり、今回はシフトレジスタ(74HC164)を使用してmbedからは2ピンだけで制御できるようにしました。ところで各アノードピンには全点灯時に合計28.16Aが流れます。これを直接mbedやシフトレジスタに接続すれば過電流でmbedなどを破壊してしまいます。そこで間にパワーMOS FET(IRF9204NPBF)をはさんでいます。FETの3つの足に入力・出力・電源を接続し、適宜抵抗も加えることでmbedやシフトレジスタからの微弱な入力電流で出力を電源に接続(=ON)したり電源から遮断(OFF)したりといったスイッチング動作をさせることができます。ただし入力がONのとき出力はOFF、というように論理が反転しますので注意が必要です。

カソード側の制御

カソード側のピン17~48によって16ドットx2色の表示パターンを制御します。たとえば「A」という文字を高さいっぱいに表示するならアノードによる行選択が1行目のときは「1111111011111111」、16行目のときは「1011111111111101」のようなパターンになることが想像できます(カソードですから0で点灯、1で消灯となります)。ピン数は合計で16ドット x 2色 x 11文字 = 352ピンですが、シフトレジスタ(74HC595)を間に挟むことで4ピンだけでmbedに接続できます。ただし74HC595の各出力ピンに80mAを流すことは定格オーバーのため、トランジスタアレイ(TBD62083APG)を介しています。このトランジスタアレイも入力がONのとき出力がOFFというように反転しますから注意が必要です。もちろんLEDに80mA以上流さないための抵抗も必要です。抵抗値はこちら http://diy.tommy-bright.com/ で計算しました。シフトレジスタとトランジスタアレイは1個8ピンなのでそれぞれ44台必要となります。ある行が点灯している100ミリ秒の間に確実に次の行の表示パターンをシフトレジスタに流し込まなければならないため、SPI通信という高速な方法でmbedからデータを送信します。アノード側と違い74HC595というシフトレジスタを選んだ理由として、出力のホールド機能と出力ディセーブル機能があることが挙げられます。出力のホールド機能はある行を表示しながらその裏で次の行のデータを流し込んでおくために必要です。アノード側を一行進めるのと同時に74HC595のRCKを立ち上げることであらかじめ流し込んでおいたデータを瞬時に出力(LED表示に反映)させることができます。出力ディセーブル機能はOEまたはGと呼ばれるピンをHIGHにすると出力がOFFになる(厳密には違うらしい)ものです。先ほど「アノードを一行進めるのと"同時に"」と述べましたが、実際にはプログラムの書き方によってアノードを一行進めるのと74HC595のホールドデータを出力するのとはどちらかが先、どちらかは後になってしまいます。どちらかを先にして想像してみると、一瞬ではありますが1行ずれて表示がなされてしまう時間があります。すなわち表示がにじんでしまう原因になります。これを避けるためにこの2つの処理を行う一瞬は出力ディセーブル機能を使って表示をオフにします。

mbed

Warning

このあとF446REが故障した際、値上げされていたことからF303K8に買い替えました。

/media/uploads/p4ken/f446re.jpg

安価なNucleoシリーズのなかでスペックが最も高いF446REを選びました。秋月電子通商で1600円でした。電源は初期設定でUSBから給電されるようになっていますが、LED側のスイッチング電源系統と2系統になってしまうと保護回路を入れるなど面倒なことになります。そこでリセットボタンの下のJP5と書かれた端子を引き抜きE5V側に差し込んで、出力ピン群のうち左上のE5VピンとGNDピンをLED回路のVcc・GNDにそれぞれ接続することでNucleoもスイッチング電源から給電されるようにしました。ただしこちら http://denshikousakusenka.blog.fc2.com/blog-entry-32.html に書かれた通り、必ずスイッチング電源をONにしてからUSBをPCに接続するよう順番を気を付ける必要があります。

-

記事一覧 https://developer.mbed.org/users/p4ken/notebook

次回 https://developer.mbed.org/users/p4ken/notebook/LED2


Please log in to post comments.