LED キューブ

\(10\times10\times10\) LEDキューブ

本体

はじめに

Aliexpressで緑色LEDが1000個143円で販売されていたので購入。ありがたいことにレンズが乳白色なのでやすりがけしなくても光が拡散してくれる。 半年後のまちかね祭での展示を目標に、\(10\times10\times10\) のLEDキューブ制作が始まった。

構成

部品名 個数
RasberryPi Pico 1 type-C端子
LED 1000 乳白色
74HC595 13 シフトレジスタ
2.7k 100 カーボン抵抗
TBD62083 1 トランジスタアレイ(ソースタイプ)

構成は基本的に\(4\times4\times4\) のLEDキューブと変わらない。

変更点として今回はラズパイPicoで制御を行う。理由はGPIOがたくさんあること、割り込み処理可能なピンが多いことである。(割り込み処理は結局うまく使えなかった...)

平面(10×10)の点灯パターンを8bitシフトレジスタ13個で生成し、レイヤー指定をトランジスタアレイで行う。シフトレジスタはカスケード接続し、マイコンからは3+10の13本の信号線で1000個のLEDを制御する。

LEDmatrix

LEDの配線は図のようになっている。アノード側に平面のパターンを入力し、カソード側でレイヤー指定をしている。つまりアノードが5VかつカソードがGNDになった個所だけLEDが点灯する。アノード側にはシフトレジスタの出力が、カソードにはトランジスタがある。

シフトレジスタ

595

ピン番号 役割 ピン番号 役割
1 QB 16 Vcc
2 QC 15 QA
3 QD 14 SER
4 QE 13 OE
5 QF 12 RCLK
6 QG 11 SRCLK
7 QH 10 SRCLR
8 GND 9 QH'

8bitシフトレジスタ74HC595を使用する。マイコンからSER(データ)、RCLK(ラッチ)、SRCLK(クロック)の3つの信号を送信し、AからHまでの8つの出力を使うことができる。 QH'ピンを次のシフトレジスタのSERピンにつないでカスケード接続をすることで8つづつ出力の数を増やせる。秋月電子で一個40円、たくさん用意しておこう。

レベルシフト

levelshift

シフトレジスタへの信号入力 SER,RCLK,SRCLKは3.3Vから5Vへのレベルシフトを行っている。

わざわざレベルシフトする理由は、

要するにLEDを明るくしたいだけである。シフトレジスタが5Vで動作にするので、入力信号も3.3でなく5にしたい。(3.3Vだと閾値がたぶんギリギリ)ただし、信号のHIGH/LOWが反転することに注意する。

トランジスタアレイ

transistorarray

シンクタイプのトランジスタアレイTBD62083を使用。1~8番ピンが入力、11~18番ピンが出力である。入力がONになると出力がGNDに落ち、LEDのカソードがGNDにつながる。チャンネルごとに0.5Aまでの電流を流せるのでLED一つ当たり0.5A/100=5mA未満に電流制限をしなければならない。今回は(5-2)/2.7k=1.1mAくらいになるよう抵抗値を設定している。高輝度LEDなのでこれで十分明るい。

制作日記

キューブ部分の作成

matrix まず、MDFで作った治具にLEDを並べ、\(10\times10\) のマトリクスを作成する。今回は画像の横方向にアノード、縦方向にカソードをつないでいる。これを10セット作成する。

\(10\times10\) のマトリクス制作に約2か月かかった...

cube 作成したマトリクスをアノードが下、カソードが横になる向きで基板に垂直に差し込む。今回は取り外せるようにピンソケットに差し込むようにしている。 カソードはレイヤーでひとまとめにする。

制御回路の作成

resistor キューブができたらシフトレジスタの出力に抵抗を半田付けした。これも100個あるのでなかなか時間がかかる。

LEDtest 完成まで長いので、こまめに点灯確認を行いながらシフトレジスタをひとつづつ増やしていく。

制作過程で起きたトラブル

未解決課題

  1. データが途中で壊れる。おそらくノイズが入るからだと思われるが、シフトレジスタの9番ピン(QH')から次のシフトレジスタの14番ピン(SER)へカスケード接続する部分で異常が起こる。今回は一斉点灯しているためごまかせたが実はうまくいっていない。