「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



昨日に続き、LEDドライバーの調光まわりを探る。


CL6807って言うこのICは、PWMでも電圧でも調光出来る
らしいので、データシートとか読み込んでみる。

データシートによると、
「アナログ電圧の場合は0.5V~2.5Vの間で制御できるよ、
 PWMだと、500Hz以下なら1%~100%で調光できるけど、
 10Khz以上だと25%~100%の範囲だよ。PWMの場合は
 オープンコレクタかオープンドレイン使ってね」
と読み取れる。


本当かどうかちょっと自信なかったので、もうちょっと
調べてみると、
http://akizukidenshi.com/catalog/g/gK-06300/
このキットも同じIC使ってるようで、キット組み立て
説明書を読んでみると、やっぱり同じ内容で書かれてる。
あってるみたい。


で、使用目的は、ブツ撮りするときの光源なので、500Hz
くらいで瞬かれると困る。まぁ、ICのチョッパ動作自体は
500Hzでホントに瞬くのか、それともIC内部の発振回路の
周波数で瞬くのか、その辺がよく判らないので、実験
してみたくなる。

サクッと、GNDとAJD端子を引っ張り出してみた。
(この右下の緑の2本線)



ちなみに、1W出力ならこの程度の放熱板で、充分用が足りる
みたい。触ってみても、ほんのり、ちょっとだけ温かいかも
しれない…って程度に放熱できてる。
(放熱板つけてないと、それなりにあったかくなる)


arduino(5V)のPWM出力を、10kΩ+10kΩで分圧してピークを
2.5Vにして、それをさらに10kΩと0.1uFで160HzのLPFを組んで、
AJD端子に入れてみる。

その際、アナログ入力の値は0.5V~2.5Vで変化するように、
以下のようなスケッチで動かしてみた。

/* power led fading */

#define low_vol 0.5
#define high_vol 2.5
#define pwm_range 256.0
#define input_vol 5.0
#define divide_num 0.5

int ledPin = 9;    // LED connected to digital pin 9

float vol_unit;
int high_num;
int low_num;


void setup()  {
  vol_unit = input_vol / pwm_range;
  high_num = int( ceil(high_vol / vol_unit / divide_num) );
  low_num = int( (low_vol / vol_unit / divide_num) );
  
  high_num = min(high_num, 255);
} 


void loop()  {
  for(int i = low_num ; i analogWrite(ledPin, i);
    delay(20);
  }
  delay(2000);

  for(int i = high_num ; i > low_num; i--) {
    analogWrite(ledPin, i);
    delay(20);
  }
  delay(2000);
}


ちなみにdivide_numって定数は、抵抗で分圧した時の
分圧の割合の意味。


動かしてみると、確かに明るさは変化するし、最大輝度
側はちゃんと出てるみたいなんだけど、暗いほうは
消灯しないし、なんか明るい。

define文の一番上「low_vol」をもっと小さくしていって
みると、0.23とか0.22とかを指定すると、最小値に至った
時に消灯はできた。スレショルド値が少し幅があるみたい。
(ちなみにこのときのAJD端子の入力電圧は、テスターで
計って0.26V)


うーーーん。なんか釈然としないんだけど。もうちょっと
低い明るさにできないの?


というわけで、LPFを通さずに、PWM出力を半分に分圧した
ところを、オープンコレクタにせず、そのままAJDに繋いで
みる。


…うん。とりあえず動く。かなり暗いところまで表現できてる。


ただし、このLEDの光量、arduinoのアナログ出力の490Hz
でフリッカ出てないのかな?目で見ても490Hzはさすがに
判らんからな…。

テスターじゃなく、オシロを引っ張り出して、LEDの
両端電圧を測れば判るんだけどな。困ったな。もしかして
オープンコレクタにしてないからかなぁ?

まぁ、この辺はまた今度にしよう。



ちなみに、PWMだと、出力値を0にしても、ものすごく暗く
点ってしまうんだな。もしかして、arduinoのアナログ
出力で既知の問題になってる、一部の端子は出力を完全に
ゼロには絞れませんっていうアレかと思って調べてみた。

http://arduino.cc/en/Reference/analogWrite
どうやら5番と6番だけみたい。9番だから、ちゃんと
絞れるんだな。ってことは、PWMのせいじゃないな。



490Hzでフリッカ出ちゃってるとしたら、カメラ用照明として
使えるのは、せいぜい1/60とかかなぁ。1/125より速いと、
コマによって輝度ムラが目立ちそうな気がするな。

フリッカが出てなければ別にいいんだけどな。できれば、
数Khzで発振できればなぁ。1/125は使いたいし、1/250が
使えればなおよしなんだけどな。LEDドライバ内部の
降圧チョッパ自体は最大1MHzとかみたいなんだけどな。




それにしても、秋月は、0.1Ωのカーボン抵抗袋、売ってる
んだなぁ。知らなかった。これ買っておこうかな。
http://akizukidenshi.com/catalog/g/gR-07949/




http://www.kohgakusha.co.jp/books/detail/4286
I/O届いたので眺める。
Spineって、へぇ。こういうことできるのか。面白い。
今回の説明読んでわかった。
http://ja.esotericsoftware.com/

こういう風に、ストーリーにしたがって自分で2次元空間
に何か配置して、映像化していくようなソフトを、昔
作りたいと思ってたんだよな。で、Video For Windowsの
開発キット買って投げたという…。


CloudBitも載ってた。





コメント ( 2 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする