2019年6月12日水曜日

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

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

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




【行スキャン制御(仮)の作成と動作確認】

まずはArduinoをクロックジェネレータとして使い、これを行スキャン制御(仮)の入力とします。

前回の記事でカウント判定はロジックICを使うのだろうなと考えていましたが、今回は安直に1段目の74HC4040のQ6~Q8辺りを二段目のCKに入力します。マトリクス制御部のシフトクロックを一段目の入力とした場合には、列パターン8×4=32ドット=5bitですので、Q6を入力とすれば動作検証っぽいことができそうです。実際のスクロール処理の時などは高速で動作しているので、LEDの点滅で確認しきれるかというのは疑問ですが。

今回LEDバーというものを使ってみました。これはどちらかというとLEDアレイといったほうが正確な印象で、横にLEDが複数個並んで一つのパッケージになっている、というものです。7セグのコモン端子に当たるものはなく、単純にLEDが並んでいて各LEDのアノード・カソードが全て端子として出ています。

動作確認用のLEDを省いたブレッドボードの配線図はこんな感じです。特に難しいところはないと思います。



非常に間抜けなことに、動作確認のために74HC4040の各出力ピンにLEDを入れていたのですが、電圧降下によって74HC138の入力に対してHIGHとなる電圧を確保できず、入力側にはきちんと信号が来ているのに動かないなぁ、と頭をひねってました(^^;;

電圧降下が原因だということに気が付かず、とりあえずここまでで来たよ的な動画をどうぞ。なおLEDバーは外してあります(笑)




左から74HC4040(一段目)、同(二段目)、74HC138となっていまして、74HC138の入力側に入れたLEDを観察すると3bitの信号が到達していることがわかりますね。


その後LEDをLEDバー以外全部抜いて動作確認したところ、あっさりLEDバーの遷移を確認できました。やれやれ。ど素人っぽい失敗をやらかしてしまいました。

【行スキャン制御部(仮)をLEDマトリクス制御部と一緒に動かしてみる】

行スキャン制御(仮)はどうやらそれっぽく動いているようですので、ArduinoとLEDマトリクス制御部の間に挟んで動作確認してみることにしました。
ただし、LEDマトリクスの行スキャン制御(シフトレジスタ版)に関しては現状のままいじらないことにして、シフトクロックを一旦行スキャン制御(仮)のブレッドボードに入れて、これを分岐してそのまま行制御部(シフトレジスタ版)に入力しています。行制御部(仮)はまだ実際に行スキャン制御には使わず、動作確認するだけということですね。
そういった条件ですので、行スキャン制御用の8bit送信がスケッチにあります。実際にある行を表示するために必要なデータはマトリックス分の8×4+行スキャン分の8=40カウントですので、32カウントを掴まえる想定の行スキャンとの同期がやや怪しいのですが、まぁそこは処理イメージ確認ということで今回は気にしないことにします。
実際に動かしてみるとこうなりました。



最初の全LEDチェック処理では行スキャン制御(仮)のLEDバーが順送りになっていることが確認できますね。行スキャンに使えそうなロジック回路を構成できました(^^)
確認の観点からは、スクロール処理に入ってしまうと確認できない速度で順送りになっていて、もはや単なるちらつきとしか認識できません(^^;;

【今後の展開】

行スキャンに使えそうな論理回路を構成できたのは収穫ですが、一つ問題が。
74HC138の出力は負論理ですので、カソードコモンLEDマトリクスの駆動には好都合かなぁと思ったのですが、LED32個分の電流が押し寄せてくるので直接駆動には不安があります。シンクドライバ(TBD62083APG)はNOT回路とみなせるので正論理には都合がよいのですが、負論理でシンクドライバ的な電流増幅をするにはどうしたら良いのかがわかりません。74HC138とシンクドライバの間にNOTなロジックICをはさむのかしら?
わかったことは増えたのですが、わからないことがまた一つ追加されました(^^;;

※全体の制御ロジックは、列パターン全部送信→行スキャンデータ送信→ラッチクロック送信という流れで一行表示しているので、ラッチクロックを掴まえてカウントすれば一段目のカウンタは要らないことに気が付きました。というわけで、後日実験したいと思います。

どんどん沼にはまっていますね。もう素直に専用ドライバ使えよ、って感じもしますが頑固にこだわっていきます…

0 件のコメント:

コメントを投稿

ESP32 Devkit C での疑問点

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