本記事は、Cerevoスタッフが業務や趣味について思うままに書き綴るアドベントカレンダー企画「Cerevo アドベントTechBlog 2017」の第21日目です。
Cerevo アドベントTechBlog 2017
http://tech-blog.cerevo.com/archives/category/adventcalendar/2017/
皆さんこんにちは、普段は組み込みソフトを開発している杉本と申します。電子工作の定番と言えば、Lチカですが、大量のLEDを光らせたい願望は誰しもが持っているでしょう。
今回はaitendoに売ってるLEDドライバIC MBI5024を使って、大量のLEDを光らせてみます。
MBI5024とは
Googleで検索してみると、台湾の企業Macroblock社が製造しているLEDディスプレー用のICのようです。1つのドライバICで16チャネル分のLEDアレイを制御でき、1チャンネル辺り90mAまでは流せます。メーカーのHPにはもう型番が載っていなく、MBI5025という後継ICのデーターシートのみ載せられています。
aliexpress,alibabaなどでは取扱業者が沢山見つかり、100個以上まとめて購入すると0.1~0.2ドル/個程度で購入可能です。
aitendoだと90円/個です。
使い方
データシートによると、SPIの通信をデイジーチェーン接続できるようにSDO端子が用意されています。以下のように接続することで1つのSPIのみで沢山のドライバICを接続できます。今回は例として2つ接続してみます。
MBI5024の中身は単純な16bitのシフトレジスタなので、最下位ビットから順に記憶していき、16チャネル分覚えるとそれ以降はSDO端子からデータを流すことになります。
今回の例では2つ接続して、32チャンネル分なので32ビットのデータを流すと、0~15ビット目までは上流側のドライバへの命令、16~31bit目までは下流側のドライバへの命令となります。
以下の波形が実際に上流側のMBI5024のSDIに対して32ビットのデータを送った例になります。SDOからは16ビットシフトされたデータが出力されています。
例えば、SPIで0x00000001を送信すると上流側のチャネル0(ピンではOUT0)に電流が流れてLEDが点灯します(SPIのビットの送出順によります)
SPIで0x00010000を送信すると下流側のチャネル0に電流が流れます
こんな感じでSPIで通信させてLEDの点灯を制御します。
作成例
以下の動画がMBI5024を用いてLEDを光らせた作成例になります。
SPIを送信するマイコンはESP32を使っています。動作させたソフトウェアはgithubに置いておきます。ひと昔前のパチンコ屋の電飾のようになってしまいました。私のセンスではこれが限界のようです。
まとめ
やはりLEDを光らすのは楽しいものです。半田が雑なのは見逃してください。