LEDマトリクスによる表示機の自作
きっかけは,
#マゾ時計3プロト制作
のハッシュタグ.
こいつはすげぇぜ.
64x48=3072個のLEDを手半田するという無限地獄.
これに触発されて自作してみる.
ただ,同じものを作っても芸が無い.
別のマゾさを出してみる.
そうだ,2色LEDでやってみよう.
解像度の決定
スーパーひたちの前面ディスプレイ解像度は,
横64x縦80ドット=合計5120ドット
らしい.
また,京急C-ATSのLED表示機は,16x32の三段で48x32である
マゾ時計3は64x48である.
C-ATSの表示を模擬することを一つの目標として,48x32で検討.
ただ,C-ATSの表示機は,3段の段の間に隙間がある.
機械的に隙間を設けると,表示機としての汎用性が下がるので,LEDの未点灯で隙間を模擬する.
よって,縦のドット数は56とする
制御構成
コモンアノードのLEDを56行スキャン,32列駆動とする.
2色なのでその2倍の64列駆動となる.
部品選定
LED
Ifは40mAにする.Ifpulseの絶対最大定格が60mAなのでこれぐらいが限界.
行スキャントランジスタ
列ドライブトランジスタ
出力ポート拡張
制御IOとして,
行スキャン56bit
列スキャン32bitx2=64bit
合計120bit必要.
よって何らかの手段でポートの拡張が必要.
制御マイコン
RAMを見積もる.
4kbyteあれば間に合うだろう.
ROMは重要でない.フォントデータ等の重いデータは上位側で持つことにする.
上位システム
ソフトウエア
データ転送レートの見積もり
さて,ここでの問題は,AVRはDMAを持っていないということだ.
SPI 4MHzでデータが送られる場合,1バイト受信にかかるCPUクロックは,わずか40クロックである.
故に,受信の度に割り込みを起こすのは現実的ではない.
逆に,40クロック中にデータをRAMにストアできなければ,データを取りこぼす.
1バイト受信中に一回でも割り込みがかかったら,40クロックはスタック退避で経過するだろう.
→データ通信中は,割り込み禁止とし,処理に専念させる必要がある.
DMAがあればタイミング設計が楽.しかし,秋月で買える&DIPはんだ付け&それなりに小型&できれば5Vの条件を満たすものがない.
SH/Tinyのマイコンボードが合致するが,いまさらSHねえ...という感じ.
DMA無しAVRで頑張る方法を考える
フレームレートは30fpsが限界そう.
このとき,1sあたりのデータ数は46080Byteとなり,転送レートは460kbpsとなる.
1バイト受信あたりのCPUクロック数は,434クロックとなる.ぎりぎりいけそうだ.
ダイナミックスキャン制御
スキャンレートは200Hz(5ms)ぐらいか.ちらつかない範囲でなるべく遅くしたい.
30fpsだと33.3msなので,この6倍のレートでスキャンする.これでだいたい200Hzになる.
48列なので,1列あたりのON時間は5ms/48=104usである.
8個のシフトレジスタそれぞれに8bit分のデータを転送しなければならない.
Loop 8
RAMから1バイトリードし,ポートにライト 4クロック
SCK立ち上げ 1クロック
SCK下げ 1クロック
End Loop
ループ展開しても48クロックは必要そう.
PWM4階調を狙う.
となると,階調倍のレートでスキャンする必要がある.
一列あたり,104usなので,この1/4の25us(40kHz)で処理を起動する.
20MHzクロックだと,500クロックしかない.つらい.
何にせよ,TIM1で割り込み周期500カウントの周期動作を起動する.
スキャン中に,UARTで割り込まれることを考慮する.
つまり.処理時間がばらつく.これは輝度のチラツキとして現れるだろう.
そこで,LATをタイマのコンペアマッチで駆動し,ハードウエアでラッチタイミングを規定する.
上位とのやりとり
表示側は,FIFO化されたVRAMを表示し続けるだけにする.
VRAMを上位からシリアルで更新することで,表示を更新する.
てきとーにプロトコルを決めて情報をやりとりする.
Modbusか?
電源まわり
5V単電源動作なので,簡単である.
ただし,行スキャンの度に2.5Aが200Hzx56行分=11200Hzで流れこむ.
この電流を小さいループで回すため,電源ラインにはそれなりのコンデンサを入れる必要がある.
リプル0.2Vに抑えるコンデンサ容量を見積もる.(0.2Vという値に根拠は無い)
i/C=dV/dtであるから,
C=i dt/dvである.
i=2.5A,dt=1/11200=0.09ms,dv=0.2Vとすると,C=1160uFと求まった.
2.5Aというと,電解コンの許容リプル電流が心配になるレベルである.
選定した電解コンの許容リプルは460mAである.3パラなので1380mAである.
ピーク2.5A,デューティー10%で実効値を求めると0.8Armsとなる.ディレーティング58%である.(デューティー10%は感覚的なもの)
実際は電源からも電流が供給されるため,リプル電流は減ることが期待できる.
問題ないだろう.
1000uF3パラなので,突入電流の配慮が必要.調光用のドロッパでソフトスタートをかけることで,突入電流を抑制する.
詳細は以下.
調光機能
グローバル調光をLED電源電圧を可変することで実現する.
トランジスタバッファ付きボルテージフォロアとし,基準電圧をCPUからのPWMDACで可変し,電圧可変電源を構成する.
ドレイン損失は2W程度となり,放熱対策が必要.
ソフトスタートにより電解コンデンサの突入抑制を兼ねる.
逆接続保護:
しない.指定のACアダプタを使用すること
過電圧保護:
しない.指定のACアダプタを使用すること
機構周り
コネクタとか配線が面倒なので,LED部を分離するとかはしない.一枚の基板にラズパイ以外の要素を全て載せる.
ラズパイとはピンヘッダで接続する.
ちゃんとした外装を持たせることを考える.
基板設計
両面基板で設計.
1A/1mmルールに則る.
クリアランス0.15/最小パターン0.15
行ドライブラインは,2.5A流れるので2.5mm確保.
最終更新:2018年04月25日 13:20