こんにちは。Yukiです。
今回は、3色LED方向幕を作ったことを書いていこうかなと思います。
3色LED方向幕とは
電車とかの横についている、行き先だったり種別だったりを表示してくれるもののことです。

なぜかこんな画像しかなかったのですが、内部に赤色と緑色のLEDが入っていて、単色で光らせると、赤と緑。どっちも光らせるとオレンジ色にすることができます。
(実際には、緑LEDはすこし波長が外れていて、黄緑に近い色です。ちなみに、原色同士を混ぜると黄色っぽい色になります)
(個人的には、3色LEDっていうとRGBの3色 つまりフルカラーを思い浮かべるのですが、ここでは違うみたいです)

ちなみに、ブレブレですが、最近はフルカラータイプのLED方向幕が一般的になってきています。
(今思ったんですけど、E353系の方向幕って赤・緑・青のLEDが入っていて、各色調光していない方式なんですかね?ここに写っている色だと全部調光いらない気がする。次は〇〇も黄色で、赤と緑混ぜればいいはずだし)
なんでこんなの作ろうと思ったのか
急な思いつきです。駅で電車見て、つくってみてぇな~。作るかって感じでした。
また、今回はPCBWay様の援助を受けて作っています。(絶対に作れないとまずかった)
理論というか仕組み

今回使ったものではないですが、だいたいどのドットマトリクスLEDも次のような構造になっています。どのように光らせるのか。そう、順番に光らせます。

こんな感じで縦で5V(今回の場合)と0Vで分けると、一番上の段だけ光り、あとは光らないということがわかるかと思います。(LEDは電流が流れると光るので、5Vがかかっている段以外は光りません)
たとえば上の画像の状態で、COL(横側)のピンを制御してみましょう。

ROW側の5VとCOL側の0Vで電位差が発生して、電流が流れることがわかると思います。ということで、上のように光ります。
次に、ROWの次の列を光らせてみましょう。

ROWの5Vをかける場所が一段下になり、COLも少し変わりました。これにより、電位差の生まれる場所が変わり、先ほどと別の場所が光っているかと思います。

更にもう1ステップ進めてみました。
こんな感じのことを一番下の桁まで高速に繰り返します。
すると、なぜか光っているように見えるんですね。(人間って不思議)
なんでチカチカして見えないの?って言われると、人間の応答速度的なことらしいです。まあ確かに蛍光灯とかも50Hzか60Hzで光っていますが、チカチカ見えないですよね。
ちなみに、高速にやらないと、チカチカしているように見えます。(これをフリッカといいます)
余談ですが、電車のLED方向幕の写真を撮ると、一部分が欠けたりしませんか?それは上のように切り替えながら光らせているので、実は一列ずつしか光っていないんですね。カメラのシャッタースピードによって下まで書き換えられておらず、欠けるという現象が発生します。
ここで疑問に思った人がいるかも知れませんが、COL側は別に5Vをかける必要はないのでは?実はそうなんです。なので、一般的にはオープンドレイン(オープンコレクタ)と呼ばれる方式のトランジスタアレイを使用します。(プッシュプルを使用しても良いが、値段的にはうーんといった感じ。あと5Vを超えると、LEDの逆方向電圧を超えて壊れてしまう可能性も…)
早速回路を作る
まず目指したこととして、
できるだけ安く!!!!!!!
を目標に作りました。

(初めてA0サイズなんて使いました)
ここからは、簡単に各箇所について書いていきます。
ハイサイドスイッチ

まず、ハイサイドスイッチ部分です。いわゆる上の理論で書いた縦側の部分に当たります。こちらも別に0Vにする意味はないので、ハイサイドスイッチと呼ばれる回路で十分だったりします。
(本当はハイサイドスイッチICを使おうと思っていたのですが、応答速度だったり値段だったりでこの形になりました)
今回作るLED方向幕は128×32ドットで、実際にはLEDが1ドットに2つはいっているので、1列で256個のLEDを制御しなければいけない計算です。LED1つあたり10mAとしても、すべてONにしたら2.56Aになり、現実的にそんなハイサイドスイッチはなかったので、ディスクリートで作りました。
電源部分

コスト削減で、DCジャックを使用。また、3.3V生成には三端子レギュレータを使用しました。
LEDは適当です。
マイコン部分


マイコンにはCH32V203K8T6を採用しました。上のマイコン(U2)は、文字の生成などのメイン処理を行うマイコンです。
下のU63・U68は、縦列のハイサイドスイッチのON/OFFに使用しています。(どうせ1ピンしかONにしないので、ENピンを付けたとしても、6ピンでできます)
本当は別の専用ICを使っても良かったのですが、240円ならいいかな~ということでこんな設計に、複数ピンのONはできませんが、1ピンのみのON/OFFであれば、6ピンだけで18ピンも増やせます。今回は32ピン制御しなければならないので、マイコンを2つ使用しているだけです。
(ちなみにですが、COL32_DATAは良くわからないですが使っていません。熱で壊れたのかしらないですが、なぜか入力できないです)
通信・SDカード

通信には初の試みとして、RS-422相当の差動通信を使用しています。また、ワンタッチで配線ができるように、RJ45(LANケーブル)を採用してみました。
(中に流れているデータはUARTと同様です)
サンプルプログラムでは使用していません。使用できるかは未保証です。

SDカードはデータが大きくなったときに使う用途でつけました。ただ、CH32V203マイコンのROMが64kBもあり、方向幕1個で使うメモリが1kB(サンプルプログラムの場合は4kB)なので、10個くらいしか表示する気がなければいらないかと思います。
またサンプルプログラムにはSDカードは使用していません。(使えるかも未保証)
シフトレジスタ

当たり前ですが、256ピンもマイコンで制御できないので、シフトレジスタと呼ばれるICを使います。上の簡単に説明すると、SERにデータを流して、SRCLKで進める感じです。
例えば0b 10111010 のデータをQA – QHに出力したい場合は、
- まず一番下のデータのビットをSERにセットします。今回だと0ですね。
- SRCLKは立ち上がりで進むので、SERにセットしたあと、SRCLKを立ち上げます
- 少し待って、SRCLKを下げます。
- 次のデータのビットをSERにセットします。
- 2.の繰り返し
そうすると、QA’ – QH’ (内部の回路)にそれぞれのビットがいきます。
次に、RCLKを立ち上げます。すると、Latch回路(出力の回路)にデータがいきます。
最後にOE端子をLOWにします。そうするとデータが出てきます。やったね。
詳しい説明は別のサイトを参考にしたほうがいいと思います。(絶対にわかりにくい)
ローサイドスイッチ
今度は横側のON/OFFの制御です。
シフトレジスタから出てきた信号を元に、ローサイドスイッチを制御します。

といっても、内部にトランジスタ(またはMOSFET)が入っていて、それをONにするだけです。
今回は吐き出しではなく吸い込み(つまりシンク)なので、ULN2003を使用します。
(ULN2003じゃなくてもシンクタイプなら大丈夫です。こいつが一番安かったので)
ドットマトリクスLED部分

説明できる箇所がねぇ。ということでスキップ。
使用した部品(選定理由とかも)
- CH32V203K8T6 (マイコン)
- 安い(2025/05/31現在 秋月電子で120円)
- 144MHz駆動で速い
- よく使っているので、開発が簡単(これが一番の理由かも)
- STANLEY MD1516C2-RG-4P (ドットマトリクスLED)
- 共立エレショップでやすかった(4個で800円)
- 今思うと、秋月アウトレット品のヤツのほうが安かったのでは?
- 16×16なのではんだ付け箇所を減らせる&比較的コンパクト
- 共立エレショップでやすかった(4個で800円)
- Pch MOSFET XR30P02
- 安い(LCSCで0.0577ドル)
- 20V30Aという大電流
- ON抵抗が15mΩと低い
もし秋月とかで売っているものだとしたらTJ8S06M3Lとかがいいと思います。(高いですけど)
- S8050 (トランジスタ)
- なんか分からんけど、LCSCで安売りしてた
- Yタイプを使用。hFEも申し分なし
代替品は2SC1815とかでも大丈夫だと思います。
- 74HC595 (シフトレジスタ)
- シフトレジスタはこれ一択
- 今回はLCSCで手配
- ULN2003 (トランジスタアレイ)
- 50mAまでだが、そこそこ十分な性能
- LCSCで安かった
この部品に関しては、本当は8ポートタイプを使いたかったのですが、秋月にしか取り扱いがなかったので断念しました。(LCSCにもあったら… あったけど高かった気がする)
今回は、部品代全部で6000円くらいだと思います。
基板
今回、基板はPCBWay様に提供をいただき、製作いたしました。本当にありがとうございました。

このような形で、プチプチに包まれて届きました。

シルク印刷も非常にきれいです。

今回、ビアインパッド(ビアをパッドの中に打つ手法。ビアが外に出ないので、ノイズ面で有利だったりする)を使用させていただきましたが、非常に綺麗だなと思いました。

今回、基板の番号の場所を指定せず発注しましたが、部品の下に隠れる場所につけていただきました。(たまたまかもしれませんが)

基板の端も非常に綺麗でした。(某PCB製作業者みたいにデコボコしていません)
本当にありがとうございました。
製作の様子

まずは抵抗を付けます。(これが一番たいへんだったりする)

トランジスタ&抵抗を付けて…

MOSFETも実装して

ICも実装して…

完成!(なお完成までに丸3日かかっています)
端っこにある赤いジャンパ線ですが、ランドがメリッてしまったからです。(秋月でレギュレーターを買い忘れて、無理やりTO-220パッケージつけて、落としたら、ランドがメリッた)
プログラム
プログラムはMounRiver Studioで作成しました。

基本的に電光掲示板の表示データはdata1とdata2にいれることにしました。

使い方は非常に簡単で、0が消灯 1が赤 2が緑 3がオレンジで表示されます。
おそらくですが、これのほうが直感的にドット打ちできるのかなと思い、この方式を採用しました。(ただし、この方式だと2bitしか使わないデータですが8bit使っているので、データ効率は悪いです)
ちなみに、なぜdata1とdata2があるかですが、電車とかの電光掲示板って線路名→行き先みたいな感じで3秒事に変化しています。それらを再現するために2つデータをいれるところがあります。
(具体的にはですが、data1が3秒表示されたあと、data2が3秒表示される感じ)
実際の画像
今回のドット打ちで参考にさせていただいたサイトです。(利用許可をいただきました)
今回ご提供いただきました、タマ様 ありがとうございました。

E231系 – 中央・総武緩行線


中央・総武緩行線ではあまり見られない中央特快 – 高尾行きです。
普段は三鷹より先にはいかないですが、ROMには用意されているようです。(代走を考慮していると考えられる)
実際に運用されたことがあるかは知らないです。
中央快速線 – 209系

なかなかお目に見られないであろう団体表示です。(てかこの前中央線の209系が廃車回送で長野に送られたとかなんとか)

同様にあまり見ることがない試運転です。ちなみに、私は生で見たことはないです。
E257系 – 特急あずさ


今では定期運用がなくなったE257系のあずさです。ちなみにですが、非貫通型タイプです。
ちなみにですが、まだROMにはデータが残されているらしく、表示できるみたいです。
E127系

見たことすら聞いたことすらないですが、とってもレアそうなので…。
ホリデー快速 北アルプスです。対照表43番にあるらしいです。
プログラム&基板データの配布
使う人がいるのは謎ですが、一応ファイル自体はここにおいておきます。
また基板の製造は、ぜひPCBWayをご利用ください。

感想
方向幕って思ったより簡単に作れるんだなという印象を受けました。今後、RGBタイプのドットマトリクスがやすければ、フルカラータイプのものの製作をしてみても面白いのかなと思いました。
あと、LEDにつける電流制限用の抵抗はもっと小さくすればよかったと後悔しています。(5Vだと暗すぎて、9Vだと熱くなるので、もっと小さい抵抗値で5Vでも明るく光るようにすればよかった)
謝辞
今回はPCBWay様に、基板の提供をしていただき、このプロジェクトを完遂できました。本当にありがとうございました。

コメント