koheiのおもちゃ修理記録

宇部おもちゃ病院 毎月第2土曜日 13:00~16:00
宇部新天町の西の端、市民活動センターで開院してます。

11/5 8×8×8 LED-Cube作りました

2017-11-04 | PIC・電子工作
ここのブログは、いつも修理したおもちゃの記録のみを書いてるのですが、ちょっと更新滞ってるので、去年作った「8×8×8 LED-Cube」の紹介(自慢?)を書いてみます。
(修理件数が多くて、何をやったか把握できなくなってきて…。ちょっと受付簿かカルテを確認してから記事を書こうかと。)


とりあえず、「動画はこちら」から。

完成したのは、ちょうど1年ぐらい前なのですが、明日の宇部まつり出張開院時にディスプレイとして展示するのにプログラムをちょこっと追加したついでに、記事にしてみます。
ほぼ「初めてのデジタル作品」で、いろいろと苦労しました…。

コントローラには、下記の様な理由で、PICやArduinoではなく、ルネサス製のがじぇっと「GR-SAKURA」を使用しました。
・初めてのLEDダイナミック点灯、しかも数が多い。どのぐらいの処理速度が必要かよく分からないのに対し、SAKURAはクロックが90MHzもあり、PICやArduinoよりも高速。
・どのぐらいの容量のプログラムになるか、想像がつかないのに対し、メモリ容量が大きい。
・三角関数等を使うのに、高級言語が使いたい。速度も欲しい。
・SAKURA基板がかわいくって、単に使いたい…。

製作記:
①LED-CUBE体作成
8×8の穴を開けた台を作って、1段ずつ作っていきます。

LEDは、1個3円の格安な5mm青色LEDを使い、600個購入して、使用分は点灯チェックをして使いましたが、格安のせいか後で苦労する事に…。

1段作ったら台から外して、次の段を作成。
8段作ったら、今度は一番上の段を再度台に差し込んで、2段目以降を重ねて、段を連結していきます。
1段を作るのに1時間×8、8段を連結するのにさらに8時間、ぐらいの時間が掛かったかな~?

②回路検討
512個のLEDを制御するのに、ラッチシフトレジスタの74HC595を使う事にしました。
回路図はこんな感じ。

その後、トラブルで若干手を加えますが、後述の「苦労話」の所で。

データ構造は下記。

SAKURAの豊富なI/Oを使って、データは1BYTE一括で送信、8個の74HC595に一括でシフトを入力、8個データ送り終わったら、やはり8個の74HC595に一括でラッチを送信で、1段64個のLEDを同時に制御します。

層の切り替え(点灯)は、1段当たり64個のLEDを点けないといけないので、Trダーリントン接続にしました。

③基板作成
基板おもては、こんな感じ。(トラブル発生・修正後の状態。)

なかなかきれいに配置できたのではないかと思っています。
(基板ウラは…、あんまり見せたくない状況なので、ヒミツ…)

LEDへのケーブルと、SAKURAとの接続をすると、こんな感じ。


④プログラム
GR-SAKURAは、多分ほぼArduino準拠。という事は、多分ほぼC(C++)。
プログラミング自体は楽勝でした。(もしこれをアセンブルですると思うと、ぞっとします…。)
Arduinoはプログラムの汎用性を重視するので、「1ポートまとめての制御」の情報があまりなく、その辺ではちょっと苦労しました。(ネットでだいぶ探した。)

「どんな表示をさせるか」→「それをプログラムと式でどう実現するか」なので、何を表示させるかが重要。技術はそれなりにあってもセンスがなくって…。

苦労話:
①LEDの不良
最初にCUBEと基板とが出来て、試しに斜め1列にLEDを点灯させるだけのプログラムを走らせてみると…、指定してない箇所のLEDが点灯する…。
何故かしら…? 散々ソフトを悩んで、ハードを悩んで…。調べていくと、2段目のLEDに常に電流が流れてしまって、他の段で点灯を指定したのと同じ位置の2段目のLEDが点灯してしまう状態。どこか配線のショートかと、1個ずつ動作を確認していくと、2段目の端っこのLED一個の逆方向に導通があって、それを経由して、HC595のLOW出力のシンクに電流がながれて2段目のLEDが点灯してしまうみたいでした。
逆方向に導通があるLEDを取り替えたら、ちゃんと指定したLEDだけ光る様になりました。
1個目はCUBEの端っこだったので、取り替えは簡単でしたが、そのうち、6段目のど真ん中のLEDも1個不良になり、取り替えるのに相当苦労しました…。
(さらに、全部完成後にも、下の方のど真ん中らへんのLEDが2個いかれて、大変でした。)

点灯しないならすぐ分かるのですが、点灯するのに、逆電流が流れてしまうという、困った不良…。やはり、格安LEDのせいかしら…。

②74HC595が壊れた~
「さて出来た!」と、点灯させてたら、いつのまにか縦2列:74HC595の2個分、点灯しなくなってる…。
どうにも、HC595が壊れたとしか思えない…。
気になるのは、SAKURAにプログラム書き込み中に、CUBEのLEDのあちこちがチラチラ点灯する事。
「プログラム書き込み中のSAKURAのポート出力はどうなってるのだろう…?」と、困ってルネサスのサポートページに質問。
「プログラム書き込み中は、ポートはデフォルトの『入力状態』で、つまり『ハイ・インピーダンス』の状態。」との事。
サポートページのベテランの皆さんの指摘によると、「層の点灯制御がダーリントン接続。増幅率が非常に高いので、微小なノイズでTrがONしてしまい、全層が一遍にONしてしまう可能性があり、そうなるとHC595がもたない。SAKURAのポートがハイ・インピーダンスだと、Trの入力が宙ぶらりんなので、誤作動防止のためには、プルダウンが必要」との助言。
HC595の入力にも、プルアップかプルダウンが必要、との助言でした。

で結局、層切り替えのTrの入力は5kΩでプルダウン、HC595のデータ・ラッチ・シフトの各入力は
10kΩでプルダウンして、プログラム書き込み時のLEDチラチラはなくなりました。

③SAKURA暴走?
上記プルダウン改造前ですが、4時間ぐらい順調に動いていた後、急に表示が乱れて、SAKURA基板のリセットも効かない状態に~。
続けてルネサスのサポートページに相談を出すと、「これだけの大電流を高速でON-OFFさせると、電源は相当に不安定。CPU動作不安定の一因になる。消費端のできるだけ近くに大容量のコンデンサ、SAKURAへの電源供給の近くにもコンデンサを追加。基板の電源ラインとGNDラインは、できるだけ短く太く」といった助言を頂きました。

結局、電源ラインの引き直し・太線化、電源ラインに470μFの電解コンデンサ追加、SAKURA電源供給ラインに47μFの電解コンデンサ追加、の処置を取りました。

そんなこんなで、デジタル回路初心者がいきなり大作にチャレンジして、いろいろと苦労しましたが、なんとか完成にこぎつけました。
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 10/8 おもちゃ修理(2件) | トップ | 10/14 宇部定期開院 »

コメントを投稿