2019年6月17日月曜日

Arduino+74HC595+8×8nマトリクスLED(6.5)

「行側制御にシフトレジスタ使うのもったいなくね?」問題の第五回です。

手持ちのICで行側制御(スキャン側)ロジック(仮)を作成して動作させてみたところ、ラッチクロックを拾ってスキャン対象自動進段するという主要な機能は実現できていましたが、クリア時の挙動に問題があることが発覚しました。


2019年6月16日日曜日

Arduino+74HC595+8×8nマトリクスLED(6.4)

「行側制御にシフトレジスタ使うのもったいなくね?」問題の第四回です。


前回はデコーダとシンクドライバの間にNORゲートを挟む方向で実装しようかな、というところまででした。

それはそうと、きちんとロジックおよびIC間の連携をチェックしていないので、簡単にシフトレジスタ+カウンタ+デコーダを接続し、シフトレジスタとデコーダの出力にLEDバーをつないで出力の様子をチェックすることにしました。


2019年6月15日土曜日

Arduino+74HC595+8×8nマトリクスLED(6.3)

「行側制御にシフトレジスタ使うのもったいなくね?」問題の第三回です。

前回(6.2)の末尾【今後の展開】に書いた、負論理出力でシンクドライバIC的な増幅ってどうやるの?の調査をしてみました。

手っ取り早くGoogle先生に質問するのが定番ですので「74HC138 LEDマトリクス」とベタに尋ねたところ、色々と答えてくれました。

何かしらのマイコンと74HC138を使ってLEDマトリクスを駆動する場合、74HC138をスキャン側に使い、マイコンのIOピンでパターンを指定することになります。
74HC138は3to8デコーダで、8つある出力ピンのうち入力された3bitに対応するピンを選択するという機能になりますので、当然パターン選択はできませんからスキャン側にしか使えません。

主に画像を見ながら興味を引いたものについて実際にリンク先の記事など読んでみる、という手法で色々と探って以下の解決策が有望な感じ。できれば手持ちのシンクドライバ(TBD60283)を使えたらいいな~。


【解決策その1:74HC138の代わりに74HC238を使用する】

74HC238というロジックICがありまして、機能的には74HC138と同じ3to8ラインデコーダなのですが、出力が反転・つまり正論理になっています。これを使えばシンクドライバのTBD60283を駆動できます。なんだか一番手っ取り早そうな解決策です。

【解決策その2:74HC138の出力にNORゲートを接続する】

74HC138は負論理出力ですので、GNDとのNotORをとれば74HC138の出力がLOWの時にHIGHにすることができます。ということはNORゲート(74HC02)を接続して出力をシンクドライバに接続すれば、その1と同じことができます。

【解決策その3:74HC138の出力にMOSFETを接続する】

そもそもMOSFETが何者なのかよくわからないのですが、トランジスタと同じような増幅作用を持つ代物のようです。※自分の知識不足ですので、この解決策は採用しないことにします。

【解決策その4:74HC138の出力にトランジスタを接続する】

まず検討すべき方策がこれで、適合するトランジスタはいくつかあるようです。しかしながらハンダ付け箇所がIC利用の場合よりも8か所余分に増えるので面倒くさい、という理由で採用しません(笑)

手持ちの74HC138を使うとすれば、その2:NORゲートを使うの一択ですね。
来月は74HC02を調達することにしよう。


【参考】

32x16 LED Matrix Panel and Arduino 4953って多分MOSFETだよね?


【いろいろとヤバそうなモノ】

16×128 LED dot matrix screen 74HC138に全部直結しちゃって大丈夫なの?
Drawing on 8x32 LED matrix with 74HC154 74HC154は4to16デコーダですのでこれ動かねーわ(笑)


2019年6月13日木曜日

Arduino+74HC595+8×8nマトリクスLED(7)

ケーブルの量が多くなりLEDマトリクスを整列させることが難しくなってきました。
そこでLEDマトリクスを基板に固定してしまうことにしました。

オーソドックスなヘッダピンを使ってコネクタを作ることにしたのですが、作業中に無理そうなことが発覚して、急遽手持ちにあったL字のヘッダピンを使ってマトリクス側にコネクタを作ることになりました。この辺は電子工作の経験不足がモロに露呈した形になりました(^^;;


裏側でマトリクスのピンを曲げたうえ、ヘッダピンとマトリクスのピンの隙間は半田ブリッジでつなげるという力業でねじ伏せました。動かせれば勝ち(^^;;



それから在庫していたL字のヘッダピンがちょうどマトリクス3個分だったため、1個分未実装となっています。しかし今月の予算は使い切ったので、筐体ともども来月持越しです。


全体を接続してみたのですが、ケーブル長をもっと余裕持たせたほうがよかったかな、と今更思いました。きちんと検討してから作れよ、という指摘があるでしょうが、まったくごもっとも。



まぁ、この通り動作はします。マトリクスとその制御、とっても楽しいですね。専用ドライバをググるより先にシフトレジスタとかデコーダが掛かってしまったので、ずいぶん面倒くさい展開になりましたが、こちらのほうが断然面白いんじゃなかろうか。制御方式もまだまだ向上の余地があるので骨の髄までしゃぶれそうなプロジェクトになりつつあります。


【問題点】
全体のボリュームが予想よりずっと大きいので、筐体を大げさなものにしないと収まりません。たかだか2.5cm角のマトリクス4個に、ATX電源くらいの筐体を用意する必要がありそう。自分で言うのもなんですがアホっぽい(笑)

もう一点。
この基板の行スキャン制御側は、制御基板の方で一つのシンクドライバに接続されています。ということは、この基板で行側の端子をそれぞれまとめてしまえば、行スキャン制御部との接続ケーブルは一つで済んでしまいます。なんというポカをやらかしてしまったのでしょう(^^;;

まぁまだまだど素人ですから、この辺は知識と経験則でカバーできないのです。しょうがないしょうがない。

2019年6月12日水曜日

Arduino+74HC595+8×8nマトリクスLED(6.2)

「行側制御にシフトレジスタ使うのもったいなくね?」問題の第二回です。

前回(6.1)は74HC4040の動作確認でしたが、今回は74HC4040を二段接続して、その後ろに74HC138をつないで行スキャンっぽい動作が可能かどうか実験していきます。


2019年6月10日月曜日

Arduino+74HC595+8×8nマトリクスLED(6.1)

今回はメインテーマであるなんちゃって電光掲示板プロジェクトから少し脱線して、サブテーマ的な「行側制御にシフトレジスタ使うのもったいなくね?」問題について検討します。

【問題点の確認】

今回のなんちゃって掲示板プロジェクトは行側カソードのカソードコモンLEDマトリクスを使用していますので、ダイナミック制御時のスキャンは行側で実施しています。スキャンそのものは対象行(1行)を順次切り替えるだけですので、わざわざ8bitのパターン表現を送るのは大げさなのではないか、と考えました。
なにかしらのカウンタがあれば、そこにパルスを送るだけで代替できるはず。そうすれば制御用の8bitデータ送出を丸々削ることができます。将来的にマトリクスを追加した場合にも、マトリクスの駆動限界ごとに制御用8bitの送出を挟む必要がある、というプログラミング上の問題も解消します。


Arduino+74HC595+8×8nマトリクスLED(6)

列側制御基板が二枚完成しましたので、行側制御基板に手を付けることにしました。

こちらは回路そのものは単純なので割とさっくり作業が完了しました。
というわけで、接続ケーブルをこしらえてArduinoと各制御基板を接続しました。


ケーブルのわさっと感が凄い(^^;;
ケーブルを作る時に気が回らなかったのですが結構捻じれていて、せっかく足をつけたのにケーブルのねじれに負けて基板が浮いてしまっています…
電気的に接続できていればノープロブレム(笑)ですので、動作確認をしてみました。
例によってマトリクス裏にカッターナイフの替え刃ケースを突っ込んで、無理やり整列させています。




※動画では右から2つ目のマトリクスの最下段が光っていませんが、単にコネクタの接触不良でした。

各基板の機能には問題がないようですね。ハンダ付けの量も配線量も電子工作初心者にはキツい規模でしたが、これで一段落ということでホッとしました。

ここで、製作途中でふと思った「行側制御にシフトレジスタ使うのもったいなくね?」問題を解決するいい機会だと思いまして、少し検討をしてみることにしました。

切りがいいので続きは次回に。


2019年6月6日木曜日

Arduino+74HC595+8×8nマトリクスLED(5)

列パターン送出用基板が一枚完成しましたので、同じ結線で出来る列パターン送出用基板の二枚目を作成することにしました。

一気に作り上げるのではなく、数回に分けてチマチマと作ってみました。
このほうが作業の集中力が続くようで、割とすんなり作成できました。
二枚目なので作業のやり方がある程度わかっていることも大きいですね。



完成したところでテスター当てて導通チェックした後、前回作っておいた接続ケーブルでその他の機能部と接続して動作確認。まぁ当然さくっと動きましたとさ(^^)

とりあえず行側スキャン用基板の製作が残っていますね。完成が見えてきたので頑張ろうっと。


2019年6月1日土曜日

Arduino+74HC595+8×8nマトリクスLED(4)

現時点では二枚目の列パターン送出用基板を作成している最中でまだ3割くらいの進捗であります。

それはそれとして。
列パターン送出用基板の一枚目を適当にチェックして、一応すべてのデータ送出ピンが機能していることは確認したのですが、すべてをつないだ状態でのテストをしていません。

どことなく不安になりましたので、各制御部とマトリクスをつなぐ接続用ケーブルを作成することにしました。

今回は2.54㎜ピッチのヘッダピンとのコネクタになりますので、QIコネクタ(2550コネクタ)を使います。使用した部品は以下の通り
・QIコネクタ-メス 100本入り ×1    →秋月:C-12327
・コネクタ用ハウジング-8P ×8    →秋月:C-12157
・AWG24相当ビニールより線 1m×10色入り ×1    →秋月:P-10672

コネクタをビニール線に圧着してハウジングに収めればいいのですが、なにぶん数が多いので圧着工具を買っておきました。
ENGINEER:PA-20

コネクタと圧着作業についてはデジットというショップさんのブログに良記事がありましたので、そちらを参照してください。
【Tips】電子工作でよく使う『QIコネクタ』の圧着方法
※個人的にはめんどくさかったので被覆との圧着も1.6でやりました。

出来上がったケーブルはこんな感じ。

マトリクス刻印側(上左)、マトリクス無印側(上右)、列制御基板側(下右)、行制御基板側(下左)へそれぞれ接続します。
※コネクタに収める際の混乱を避けるため列側をカラフルにして、行側は赤黒2色としました。


同じものをもう一つ作って全体をつないでみました。ただし、行制御基板はまだ作成していないのでそれ相当の回路をブレッドボードに組んであります。
なにかしら箱に収める段になったらマトリクスは一旦基板に取り付けた後、基板と箱を固定する形にしたほうが構造的に良いような気がするのですが、現時点では箱がないのでそのままピンとコネクタを接続しました。


各制御部とマトリクスのフリーダムなピンアサインを接続ケーブルで吸収してあるのでそのまま接続できるのは大きなメリットですね。それでも配線がかなりカオスになっていますが(^^;;


動作の方はこの通り問題なし。

さっさと残りを作っていかないといけませんね。はぁ…


ESP32 Devkit C での疑問点

 前回の投稿から放置状態にあった当ブログですが、再び何かしら作ろうということで、スマートコンセントもどきに取り組んでいます。 回路なども一応動作するものができたのですが、ブレッドボードから移行するために基板に用意しておいたピンソケットにESP32を取り付けたところ、なぜか動作しま...