2012年8月3日金曜日

TLC5940 + Arduino



Arduinoでは、LEDを点灯するときPWM出力で簡単に輝度を制御することができます。PWM出力ピンはArduino UNOあたりだと6個ほどあるわけですが、ピン1本にLEDを1個ずつつけていたら、貴重なピンの無駄遣いです。

マイコンを使ってたくさんのLEDを点灯する回路ではマトリックス方式が有名ですが、制御回路とラッチを組み合わせて、一つひとつ輝度値を書き込んでいく、なんて方法もあります。

そんなことを考えながら千石電商を探していて見つけたのが、TLC5940というPWM制御IC。ArduinoのPWM Shieldに使われていたり、ARDUINO PLAYGROUNDに記事があったり、その界隈では名の知れたデバイスなんだなぁ、と思っていたら、ちゃんとライブラリがあるんですね。

というわけで実験。

(1) ライブラリのインストール

こちらからダウンロード。
解凍したフォルダをArduinoのインストールフォルダの下のlibrariesの下へ置く。

(2) 回路

接続は下図のような感じで。
またFritzing使って描きました。TLC5940のパーツは登録されてなかったので、ICをインスペクターによる編集で、ピン数追加とピン名付加を行いました。



4.7kΩの並列は2kΩの代わりです。
LEDは基板に並べられるだけ並べて12個です。

(3) プログラム

12個のLEDを端から順番に点灯させるようにします。点灯したLEDはすぐに消えずに、徐々に暗くして残像のような効果を残してみます。

OSTA71A1DのようなフルカラーLEDと組み合わせても面白そうです。注意すべき点は、アノードコモンを選ぶ必要がある点です。
デイジーチェーン接続もできてチャンネルたくさん増やせるし、PWM制御自体、LED点灯に用途を限るものではありません。夢が広がります。