2025年5月31日土曜日

2色 8×8 マトリクスLEDを使う(その3)

 フリーのAsciiフォントを入手した事で文字列を表示できるようになった。8x8のフォントだが当初想定したより見易い。

誤っていた基板の配線も修正したバージョンを作成し、完成した基板5桁分を繋げてみた。3色の表示が可能だ。



ハード的には出来上がったが、まだ固定した形式でしか文字列を表示できないので、後はソフトにどういう機能を入れるか、だ。

(続く) 


 

 

 

2025年5月18日日曜日

2色 8×8 マトリクスLEDを使う(その2)

 ソフトを組むうえで改めて構成を考えてみた。色々数値を試算してみて、CPUクロック(Fosc)を4MHz(インストラクションサイクル(Fosc/4)は1MHz)、SPIクロックを500KHzとした(その後、場合によっては処理が間に合わない事が分かったのでCPUクロックを4倍の16MHzにした。以下のトレースはCPUクロックが4MHzの時点の写真である)。

LEDは8行(row)で構成されるが、各行を同じ明るさで表示するため、タイマーを使って行毎の表示時間を一定にする。タイマーの割込み間隔を2msにすると1秒間の表示回数は約62回(=1/(0.002*8))となる。行データは1桁に3バイトなのでLEDを5桁並べると15バイト、つまり120ビットである。これを500Kbpsで転送すると240μsかかり2msより充分短いのでソフトのオーバーヘッドを考慮しても問題ないだろう。次トレースは上が行ラッチのストローブ(2ms周期)、下がSPIクロックである。

これを拡大すると15個のSPIクロックの塊が見え1行15バイトのデータを(240μsではなく)800μsかかって転送していることが分かる。この処理を割り込み処理ルーチンの中で実行しているのでその間割込み禁止となっており、残り1200μsの中でアプリケーションを動かす事になる。
これをさらに拡大すると次の様に2μs周期(500KHz)のSPIクロックが見える。

ホストとの通信レートは9600bpsとするので最短でも1ms/バイト程度であり十分表示の合間に処理できるだろう。

ソフトもテストパターンを出せる所まで作った。


行表示タイマーの割込み間隔を色々設定できるようにしているが、2msより大きくするとチラつきが目立つようになる。さらに200ms程度に大きくするとスキャンの動作が見えてデバッグに役立った(配線の誤りを発見できた)。

その後CPUクロックを16MHzに上げた。その状態を表す次のトレースで上が2ms毎のラッチ信号、下がHで割込み処理中を表しており、割込み(表示)に500μsかかり、その他の処理に1.5msの余裕が出来たことがわかる。



 マトリクスに表示させる文字パターンはAscii文字を対象にし、著作権フリーのフォントデータを使い、そのほか任意のパターンを設定できるようにする予定である。

その前に誤っていたPCBのパターンを修正する必要がある(コネクタを裏面に取り付けた事でピン番号の偶奇が逆になっていた。今はソフト的にビットを入れ替える事で修正している)。

 (続く)

 

2025年5月10日土曜日

チャラン・ポ・ランタンは面白いぞ

 チャラン・ポ・ランタンの動画がYouTubeのお勧めに出た。全く知らないユニットだったが大道芸の動画らしく面白そうだったんで見てみた。女性二人組でボーカルとアコーディオンという組み合わせだ。きっと売れない芸人か本職の大道芸人がやっているんだろうと思って見たが、なかなか面白い。

何本か動画を見て、どんな人物がやっているのか興味が湧き検索してみた。二人は姉妹でアコーディオンを弾いている姉の小春はアコーディオンを531個売った実績があるとか・・・楽器店員かな?妹のももがボーカルで5歳年下らしい。

さらに調べると過去にTVドラマ「逃げ恥」の曲を担当した事があるらしい。へー、そうなんだ。 ももは2024年の紅白に椎名林檎と出場したとか・・・バックコーラスかな?動画を検索してみると、何と一曲丸ごと椎名林檎とデュエットしてる・・・知らなかった、実力派じゃないか。小春の弾くアコーディオンは右手側がピアノみたいな鍵盤式ではなくボタン式で珍しい。しかも目視できないボタンを物凄いスピードで弾き、しかも出てきたメロディに力みがなく美しい;神業だ。しかも活動を始めた頃からこのレベルに達していたようだ。

という事でここ数日 チャラン・ポ・ランタンの動画に嵌っている。もう15年以上活動していて今でも大道芸もやって投げ銭の量も半端ない。亀田誠治ともコラボした。ミスチルのをサポートしたり、海外のコンサートに出たりドイツでツアーをやった事もある。531個のアコーディオンは個人で会社を立ち上げて企画し、ネットで1日で販売したとか。Wikipedia を見ると色んな活動をしており多芸・多才なユニットだ。

もう古希も過ぎたが、まだまだ知らない事がいっぱいあるな~と思い知らされた一週間であった。

2025年5月5日月曜日

2色 8×8 マトリクスLEDを使う(その1)

 先日、秋月へ行ったら2色の8×8マトリクスLED15個入りのレールが300円で売っていたので思わず買ってしまった。家に帰って改めて調べるとLITE-ONのLTP-12188Mというモデルで大きさは32mm×32mm、1個140円で売っているものが20円で買えたので1/7の値段だ。

内部は次のような結線で8×8×2色、アノード・コモンになっており足は24本ある。

さぁて、これをどう料理しようかと調べ始めた。

こういう場合は8行(ROW)を順にスキャンさせ、16列(COL)にデータを与える。出来ればドライバーを32mm×32mmに収め、水平方向にドッキングさせると横長に広がるようにしたいがどんな回路にしたら良いか。列に接続する電流制限のシリーズ抵抗だけで16本必要であり、8行(ROW)16列(COL)構成の駆動をするだけで8ビットのシフトレジスタが3個必要で、安易に作ると部品が基板からはみ出す。

ネットで色々調べると、74TC595AFという8ビットシフトレジスタ+ラッチと、TB62708BFという16ビットシフトレジスタ+ラッチ+定電流ドライバを使うと上手く行きそうな事が分かり、早速ドライブ部の設計を始めた。

これでロジック的には動きそうなのでPCB基板を考えた。
 
ちなみに、この回路のインターフェイスにはSPIを使い、3バイトで1行のデータを表示する。これを8回繰り返す事で8x8ドットを表示することが出来る。表示のリフレッシュレートを30回/秒とするとデータレートは最低5760bps(=3*8*30*8)必要となる。これを5個直列接続する場合は5倍の29Kbps必要である。実際にはソフトのオーバーヘッドを考慮してクロックを100Kbps以上にすれば良いだろう。1点注意が必要なのはTB62708BFのラッチが負論理のエッジトリガーなのに対し74TC595AFのラッチは正論理のエッジトリガーと逆になっている点である。間にインバータを1個入れれば問題ないが余計な部品を追加せずシンプルに済ませたい。そこで両者を同じトリガー信号で駆動する事とし、短いトリガーパルスを使うことで両者をほぼ同時にラッチさせる事とした。このトリガーパルスは負極性でも正極性でも問題なさそうであるが、実際には負極性だと上手く行かず消灯すべきLEDが暗く点灯する現象が発生した。
 

実装密度を上げ基板の面積を抑えるために表面実装部品(SMD)を積極的に使うようにした。PCBの設計で問題だったのはICチップのフットプリントである。ICの型番は分かって外形もSOP-16などと記述されているが実際の大きさが曖昧である。昔のDIPならソケットで規格化されていて簡単だがSOPには様々な大きさのパッケージがあり、どれを選べばよいか。幸い秋月では定規にあてたチップの写真を掲載してくれているので非常に助かった。あと、TB62708BFは足のピッチがインチ(1.27mm)ではなく1mmと変則的なので自分でフットプリントを作らざるを得なかった。

結局、出来上がった基板は32mm×32mmには収めきれなかった。

ここまで来て、改めて電流値を計算してみた。LEDの向きからTB62708BFを定電流シンクとして使う。1列の中で同時に光るLEDのは1個なのでドライブ能力は十分ある。一方74TC595AFを電流ソースとして使うことになるが1行最大16個のLEDを同時に駆動する必要がある。TTLの場合は電流ソースとしてのドライブ能力はとても低かったが今回のC-MOSでは改善され25mAある。しかし行ドライバーとして16個のLEDを同時駆動するには数百mAの電流が必要であり、全く足りない。この基板は未発注のままお蔵入りとなった。

やはり別途電流ドライバーが必要である。ここにNPNトランジスタのエミッタフォロワーが使えないか等と調べていたらTD62783という8チャネル500mAのソースドライバーを売っていたのでこれを使う事にし、次の回路を作った。

この回路は上の大きさの基板に収まりそうもないし、これ以上面積を大きくすると例え完成したとしても見栄えが悪すぎる。

 そこで基板を2枚に分けて直交させ、前面からはLEDのみが見え、不足する面積は奥行で解決する事とした。2枚の基板間はコネクタ接続としている。さらにPIC(16F18326)による制御部を追加して3枚の基板に仕上げた。

基板にVカットを入れた1枚の基板として発注したかったが規定以下のサイズと形状のため不可であり、そこでエッジカットを入れて1枚の基板として誤魔化して発注してみたが3枚とカウントされ追加料を支払うはめに・・・まあ、安いから良いけど。

 基板が届いて組み立てた。

背面の2段重ねの基板のうち上がPICを使った制御部で、下がLEDのドライバー部だ。制御部を外すとドライバー部はこうなる。

ドライバー部は横に連結して広げる事ができるようになってている。制御部1つで複数のドライバー部を制御する。何個連結できるかは主に電源容量とPICのドライブ能力に依存するが少ない数ではないだろう。

TB62708BFのR-EXT端子に接続する抵抗Rの値でLEDに流す電流を設定することが出来る。

とりあえずテストのために10KΩを入れた。 試しに330Ωを入れてみたが物凄く明るく直視できない。これでも発光時間は1/8だから平均電流に直したらLED1個当たり7mA程度の筈である。色々な場所で使えるようにするためにはENABLE端子をPWM信号で駆動して明るさを可変にするのが良いのかもしれない。

(続く)