カラーLEDというと、R(赤)・G(緑)・B(青)3つのLEDが単に1つのパッケージになったものを思い浮かべると思います。それを使ってもいろいろな色を表現できますが、数多くのLEDをそれぞれ別の色になるよう制御するとしたら、ハード的にもソフト的にも非常に難しいことでしょう。
今回使用したカラーLEDは、RGB3つのLEDが1つになっているだけでなく、少ない配線で外部から個々の発光色を指示できる、マイコン内蔵タイプのカラーLEDです。
左の写真が、使用したマイコン内蔵カラーLED(Worldsemi製WS2813)です。5mm角で6本の足がある、表面実装用のパッケージになっています。
今回使用したカラーLEDは、RGB3つのLEDが1つになっているだけでなく、少ない配線で外部から個々の発光色を指示できる、マイコン内蔵タイプのカラーLEDです。
左の写真が、使用したマイコン内蔵カラーLED(Worldsemi製WS2813)です。5mm角で6本の足がある、表面実装用のパッケージになっています。
8.WS2813の使い方
カラーLED WS2813には明るさの違いによりA~Dのタイプがあり、使用したのは2番目に明るいWS2813Bというものです。
WS2813には、下図の①にあるようにデータ入力端子DI(またはDIN)とデータ出力端子DOがあります。DIには、図にあるような24ビットの色指定データをマイコンから与えます。
このデータはRGB形式(送信順はGRB)になっていて、RGBはそれぞれ8ビットです。つまり、256×256×256色の最大16,777,216色(=トゥルーカラー,フルカラー)を表現できます。
データの各ビットは、単にHかLで'1'/'0'を表現するわけではなく、Hのパルス幅で'1'か'0'を表現する方式なのが少々厄介なところです。でも、このHパルスがクロックを兼ねるため、他に同期信号が不要で配線が少なく済むという利点があります。
図の②は、データ各ビットの'1'/'0'を表現する仕組みです。図のような条件で、パルス幅がH<Lのとき'0'を、H>Lのときに'1'を表します。H+Lの時間(=1ビットの時間)は1250nS以上で、通信速度にすると800Kbps以下ということになります。ただ、図にあるようにパルス幅には制限があるので、最低でも505Kbpsということになります。
WS2813は複数個使用することが通常ですが、その場合は図の③にあるようにDI,DOを使って数珠繋ぎ(カスケード接続という)にします。その時の各接続点のデータは④のようになります。 つまり、各LEDはDIに入ってきたデータの先頭24ビットを自分宛てのデータと認識し、それを除いた後ろの部分をDOから出力します。従って、特定のLEDにのみデータで指示を送ることはできず、目的のLEDまでにある全てのLEDに対してデータを送信することになります。ちなみに、製作したデジタル時計では常に全LED分のデータを送信しています。
しかし、このように数珠繋ぎにしていると、どれか1つ壊れたときに以降のLEDは点灯できないことになります。そのようなときのために、WS2813にはBI(またはBIN)という端子があり、BIを1つ前のLEDのDIに接続することで、データが途切れた状態に対応します。下図は、BIも使用した実際の接続回路です。
LEDの電源は、この図にあるようにLED自体の電源VDDとマイコンの電源VCCに分かれています。抵抗とコンデンサーは、VDDのノイズを低減してVCCに使うためのフィルタになっています。
各LEDが自分宛てのデータを得るためには、データの先頭ということを認識させる必要があります。前の図の④にあるリセット期間は、そのために必要です。
なお、受信したデータは各LED内のマイコンが記憶するので、同じデータであれば送り続ける必要はありません。
9.マイコンRX220
RX220は、ルネサスエレクトロニクスの32ビットマイコンであるRXファミリのひとつですが、周辺機能を絞ってあり小規模な機器向けのマイコンです。動作クロックも最大32MHzと、RXマイコンとしては速い方ではありません。システムクロックや周辺機能の設定が少しややこしいということはありますが、RXファミリの高性能マイコンです。詳細については こちら またはルネサスエレクトロニクスのホームページを参照してください。
この製作で使用したのは、秋月電子通商で販売している「RX220マイコンボード」で、64ピンパッケージのRX220が載っているものです(次の写真)。40×29mmの小型DIP変換基板になっているので、趣味の工作には良いと思います。
これを使った理由は、小型しかも安価で入手しやすかった以外に、後ほど説明するシリアル通信機能やDMA機能が使用できることもあります。