サーボLEDユニット用回路の制作

概要

    • TLC5940 を使ってサーボと LED をコントロールする。

    • TLC5940 は 16 ピン、つまり、一つで RGB LED、サーボを4セット動かせる。

    • TLC5940 の PWM は 4096 段階で調節可能、つまりサーボモータも(精度は落ちるが)動かせる。

    • 問題は電源。RGB LED がひとつ 150mA, サーボが 200mA で、100個つなげると 35A になる。

電源

    • 回路は 3-5.5V, LED は 3.3-5.5V, サーボは 6V で駆動したい。

    • サーボの電圧が高いのは、できるだけトルクを出すため。表現力のために重要なファクター。

    • LED のアノード電圧は適当でも、定電流回路が何とかしてくれる。つまり、サーボと同じでよい。

    • 電源はTLC5940 一つごとに、パラレルに配線する。

    • サーボに一気に電源が入らないように、ATX 電源はいくつか用意したい。

    • スイッチはできればトランジスタを使って、PC からコントロールして電源をいれるようにしたい。(コントロール用の Arduino の余ってるピンを使うか、もう一つ Arduino を用意。)

    • サーボ、LED用電源と, TLC5940 用電源は分ける。

    • ATX の 5V 用電源は一般的に容量が少なく、いい電源でも20A程度しかない。ATXのジャンクなんかいっぱいあるので、単純に沢山用意すればいいのだが、、12V の電圧を下げられるならば、一気に 100A ほどとれることになる。電源の安定のためにも、ユニットごとに電圧変換ボードをかませればいいだろう。

    • 電圧変換は、LM2596 を使ったものが $1 で買える。

Alternatives

Sparkfun が 5940 でサーボを動かすための breakout ボードを作っているが、1枚10ドルする。また、電圧部分に(安物の)レギュレーターが入っていて、沢山の電流を流すことができない。

LED だけ 5940 で動かし、サーボはサーボで動かすという手もある。回路も別々にできて、電源関係も分離するのでメリットはある。

サーボの32chコントローラは非常に小さくコンパクトで、USB につなぐだけで制御できるし、分解能も12bit どころではなく、0.01 度ぐらいの精度で制御が可能。だが、LED を 50mA で動かすならば、どちらにしろドライバを使わなければいけない。しかも、16 は 4 で割り切れる( RGB LED + servo ) ので、ピンを無駄なく使うことができる。

以上を考えて、自作ボードを作ることにした。

Schematic

5940 の 0utput pin は Sink である。つまり Output には LED のカソードをつなぎ、アノードは適当に電圧を加える。サーボは知ってのとおり3本。なので、LED 用に 4pin, サーボ用に 3pin を 4 セットつなげればよい。

Sparkfun の breakout board はすべてサーボをつなげられる前提で作ってあるので、出力ピンは 3*16 = 48 本設計してあるが、今回は 28 本だけでよいので少し単純化できる。

とりあえずこんな風になる。

できるだけ片面でつくりたいんだけど・・・できるだろうか

これをもとに、配線をする。適当にラフだけ書いてみた。LED がアノードコモンとOutput につながる4本、サーボはフタバの3pin である。

上下に同じ形で pin があるが、これが input と output で、シリアルに同じボードをつなぐことができる。Sparkfun の Schematic を変更して作っているのであたりまえ。

オートルータは使わず、まず VCC と GND に着目してピンを配置、それから 0-15 の OUTPUT PIN に着目してピンを調整する。

ジャンパーピンを10本ほど使うが、実装自体は簡単にできるだろう。スルーホールを作る手間に比べたらこれぐらいどうってことない。

サイズも、50x75mm で、小さく収まった。これに電圧変換のボードをつけてやり、左下のソケットに入力すれば完成。

これをさらに、DXF にして削れるようにする。まず .ncd にする。

移動長が 3500mm ぐらいなので、300m/s で削れば10数分で終わる。

これだけでもいいが、さらに切削パスの長さを単純化したりする場合は、dxf に変換して CAD にて修正する。

たとえば、全部 φ1 のエンドミルで仕上げたい、という場合はこの図面では無理だが、丁寧に調整してやれば、すこしの変更でエンドミルの変更なしにボードがどんどん作れる。

プロトタイプが終わったらそうするつもり。

5940 の Operating Mode と Dot Correction

TLC5940 はプログラムできるようになっており、主に Dot Correction を書き換えることができる。以下データシートから。

The TLC5940 has operating modes depending on the signals DCPRG and VPRG. Table 4 shows the available

operating modes. The TPS5940 GS operating mode (see Figure 11) and shift register values are not defined

after power up. One solution to solve this is to set dot correction data after TLS5940 power-up and switch back

to GS PWM mode. The other solution is to overflow the input shift register with 193 bits of dummy data and latch

it while TLS540 is in GS PWM mode. The values in the input shift register, DC register and GS register are

unknown just after power on. The DC and GS register values should be properly stored through the serial

interface before starting the operation.

つまり、VPRG を 20-24V, DCPRG を LOW にしてやって、ドットコレクションのデータを EEPROM に書くか、起動後に VPRG を LOW, DCPRG を 5V にしてやって、DC レジスタにデータを入れる。ライブラリには、後者の方法があるようだ。

後でカメラ画像から出力を見て自動で色を調整したり、Kinect を使ってサーボモータの位置を自動で調節する、キャリブレーションソフトをあとで書くつもり。このキャリブレーション結果はPCに保存されるので、EEPROM に書く必要はないだろう。

というわけで少し変更。

スペースの所にLM2596 のボードを入れる。もう少し広くしないと入らないが。

GNDが沢山あるので、ノイズが心配だが、やってから考えよう。

参考:http://www.motoi.ws/lang/ja/2011/11/tlc5940-dot-correction

作戦

とりあえず、電圧変換ユニットなし、5940 のみの回路をつくって、どれくらいいけるか見てみよう。