Aliexpressで電子工作-12 RGB-LED(WS2812B)をマイコンなしで点灯してみる
別にフルカラーRGB-LEDが欲しいわけじゃなかった。
こういうのが欲しかったんです。しかもコンデジ用。https://www.amazon.co.jp/dp/B00IDVTXA6/でも高いですね。
例によってAliexpressをのぞいているとリング状の基板にRGB-LEDが並べられたものがあったのです。RGBでなく白色LEDでいいんだけど…と思いつつ探してみてもRGB-LEDばかりです。
白色LEDよりRGB-LEDのほうが安い感じさえします。
さて、とりあえず全点灯だけでいいのですが、マイコンを使わないといけないのでしょうか?
WS2812Bのデータシートを見てみると数100ns程度の結構高速なパルスが必要です。”0″と”1″のパルス幅の差は600ns程度です。
以前に作ったファンクションジェネレータを思い出しました。これはぎりぎり1MHzの矩形波が出せるものです。(矩形波はオープンコレクタ出力で電源電圧レベルなので電源に12VのACアダプタを接続していると12Vの矩形波が出てしまいます。1kΩでプルアップされているようなので800Ωくらいの負荷をつなぐとだいたい5Vの矩形波になりました)
で、LEDに電源(5V)を接続してIN端子に800kHz(約600ns”H”、約600ns”L”)くらいのパルスを入れてみました。点かない?
パルスを入力し続けたのでは点灯しません。データシートにある50μs以上の”L”(Reset期間)を設けないといけません。パルスを入力した後、パルスを停止したら点灯しました。おそらくこのReset期間にシリアルデータを内部にラッチしPWM回路に送ってLEDを駆動しているのでしょう。600ns程度のパルスを(LED数分なのでここでは24bit x 12 = 288bit以上)入力したあとパルスを停止すると点灯するということですね。
次に消灯させてみました。だいたい350ns程度以下の短いパルスで消灯するようです。
これならArduinoなどのマイコンを使わなくてもTLC555などのタイマーICでとりあえず全点灯、全消灯はできそうです。
できました。ブレッドボードで実験したときになぜかかなり低い周波数になったのでタイミング用のコンデンサは330pFにしてみましたが1000pFくらいでもいいと思います。
この回路の波形を見てみたら結構めちゃくちゃでした。
最初のほうはまあまあいいんですが、全体だとこんな感じで、2ms以降に変な波形が見られます。その辺を拡大してみるとこんなパルスが出ていました。まあこのパルスでは誤動作していないようですがこの回路はあくまで簡易的なものということですね。
おそらく555のReset端子にアナログ電圧をかけているせいでしょう…