AIと電子工作系ブログ

趣味でやっている電子工作とtennsorflow等を使った何かを書いていきます。

WS2812C-2020(マイコン内臓RGBLED)の解説

秋月電子に売られているWS2812C-2020の解説をしていきます。
akizukidenshi.com


WS2812C-2020にはマイコンが内蔵されており、
信号を送ることで複数のLEDを制御することができます。
色は緑、赤、青のLEDがチップ上にあり各色0~255の256段階で制御することができ、
端子にはDO、GND、DI、VDD4つの端子がついています。

LEDカラー


VDDには+3.7V~5.3Vを供給します。

WS2812C-2020動作電圧

DIはデータを入力する部分になり、ここに自前で用意したマイコン等から信号を入れることになります。
DOはデータの出力となりますが、このDOの先につなぐのは次のLEDのDIになります。
下図のように繋ぐことで複数のLEDを制御していきます。

LED接続図


WS2812C-2020との通信線は1本しかなく、データを送るだけの一方通行の通信となります。通信の1と0の信号を送るための違いはHighとLowで1bit分の信号となり、Highの時間を220nS~380nSの間で立ち上げると0判定になり、580nS~1μSの間で立ち上げると1と判定されます。Lowの時間は580~1μSの時間固定となります。

HighとLowの時間


データは1つのLEDに対して24bitで構成されています。
24bitの内訳は緑8bit、赤8bit、青8bitです。

データ構成


複数のLEDを制御する場合は24bitのデータを送った後、280μS以内に次の24bitデータを送ることで2つ目のLEDを制御することができます。280μSより間隔をあけてしまうとデータが区切られたと判断されてしまい、次にデータを送った時には1個目から制御が始まってしまいます。

データサイクル


データシートにSend data at speeds of 800Kbps.と通信速度は800kbpsと記載されていますが、1bitあたりHighの220ns~380nsとLowの580ns~1µsを足し合わせて大体1.25μSということで800kbpsと記載されているようです。マイコンのI/Oポートで出力しようとした場合、0のデータを送るためにHighを220ns~380nsを出力しないと認識されないため最低4MHz以上の速度がないと通信が成り立ちませんのでお気を付けください。


このWS2812C-2020は送る信号がある程度の速度以上ないと使用できませんが、信号の中身は単純なので制御は簡単です。