「TLC5940」問題.
フリッカーする.ちゃんと更新されない,等々.ネットでも色々議論になっているが,解決策がまた一つ分かったので報告.
"Additional Clock" の作用
Additional Clock をサイクルの後に入れることで,SOUTの波形が以下のようにSCLKの半周期分だけ前にずれる.それぞれ,一番上から,1. Arduino の出力 2. 一つ目のTLC5940のSOUT(1kΩををはさんでいる) 3. 二番目のTLC5940 の出力,4.SCLK. わかりやすいように 101010101010 (2750) を入力している.SOUT の遅延
僕の環境で見る限り,ちゃんと Additional Clock は入っているし,タイミングはこれで間違いない.とすると,SOUT に遅延を入れればいいことになる.上図の二番目のグラフが抵抗を入れたもの.1kΩだけでは不十分なことがわかる.遅延のあるところもあれば,そうでないところもある.多分ちゃんとキャパシタも入れたほうがいいのだろう.
仕方ないので,適当に150pFのキャパシタを持ってきて挟んでやる.運良くとなりのパターンがGNDだったので,半田付けするだけで済んだ.
キャパシタは左に小さく見える.0805 サイズ. |
ロジアナとオシロで確認する.
ちゃんとどのタイミングでも少なくとも 500nsec程度は遅れるようになった.ロジアナでもはっきり確認できる.
どのくらい遅延したらいいかは,SPIの速度による.今考えているアプリケーションは,分周比が1/64 = 256kHz もあれば十分.よってこのくらいの遅延時間なら正しく動く.
まだフリッカーが起こる
この問題がしつこすぎる.おとなしくバッファの入った WS2801 とか,ほかのICも試してみたいが,もう後戻りはできない.
波形を見ていると,信号全体に変な歪みがあるのを発見した.
これは明らかにIC全体の電圧が下がっている.調べたところ,使っていた5Vのレギュレータが安定でないようだ.コンデンサは104しかつけていなかったので,適当に1uFもつけてみるが,改善しない.47uF で窪みはなくなった.
TLC5940 は,出力をオープンにしておくとIC自体に大量の電流が流れる.なので,何らかピンをプルアップしておくか,適当な負荷をかけておくと消費電流が少なくなってだんだんノイズが少なくなる.
これで問題がすべて解決するといいが.
10個で実験
10個つないで実験したところ,ほぼフリッカーなくサーボ,LED共に運用出来た.5分に1回ぐらいのタイミングでフリッカーが起こることがあるが,もうこれ以上やっても時間がかかるのでこのあたりで切り上げる.波形を見ても反射は起こっていないし,5分に1回起こるフリッカーの波形を捉えるのはとても難しい.
一つは電源.ATX電源が不安定になっている.もしくは,DC/DCモジュールが正しく電圧を供給できていない.しかし,ICの電圧をトリガーにしてフリッカーを待ってみても,電圧は正しく保持されている.
一応24Vの電源もあるので,それでためしてみる.
No comments:
Post a Comment