Trinketと外部電源
Windowsからの書込みと、簡単なGPIOのデジタル出力はできるようになったので、この辺でTrinketの端子を確認してみます。
Trinketは、Trinketの学習サイトに紹介してあるように、mini-USBからのバス電源供給だけでなく、外部からも電源を供給できるようになっています。では早速、外部からDC5Vを供給してみます。
使ったのは、コーセルさんのDC5V/12V出力のもので、5Vの場合、電流が0.8A流せるものです。
単純に外部電源につないだだけですので、問題なく動作しています。
外部電源ならUSBのバス供給より電力が少し多めにとれますので、これでいろいろとやっていきましょう。
まず最初に、前回のLEDを光らせるテストで、デジタル出力のパルス幅を変えて光らせた時に、On時のパルス幅が小さくなるとLEDがチカチカしていたので、これを滑らかに(輝度を低くするような感じに)できないかと思います。前回の出力波形はこんな感じでした。(実際には、On/Offのデューティーが少しずつ変わるようにプログラミングしました)On/Offの立ち上がりと立ち下がりがシャープです。ちなみに、1周期は50msecで、On/Off時間を1msecずつ増減させるプログラムでした。
単純には、GPIOの出力とGNDの間にコンデンサを入れれば、立ち上がりと立ち下がりが滑らかになる(俗に”なまる”と言いますね)と思いますので、まずはいつものとおり、深く考えずに手持ちの適当なコンデンサを入れてみます。ちょうど手持ちで47uF 16Vという電解コンデンサがありましたので、これを入れてみた波形が以下の通りです。
確かになまってますが、思ったほどではないみたい。もっと大きなコンデンサの方がいいのかな。というわけで、470uF 16V電解コンデンサに取り替えてみます。
元の波形との差がわかりにくくなったので、同じ信号をGPIO#2にも出して比較してみました。On時間の小さい順に波形をとってみました。
47uFの時に比べても、だいぶ「なまって」ますねぇ。でも、まだ滑らかって感じじゃないですね。さてどうしたものか、、、。
そう言えば、コンデンサに電力が溜まる時間ってどれくらいなんだろ。流れる電流の量によりますよね。だとしたら、流れる電流が少ないと溜まるまでに時間がかかるはず。それか、溜まったらすぐに放電してやる(Offにする)といいのかも。ふむふむ。
じゃあ、今のプログラムは50msec周期だから、これを半分にしてみよう。というわけで、先程から使っていたプログラムを以下のように変更してみます。
/* increasing and decreasing pulse Test */ // give it a name: int out1 = 1; int out2 = 2; int time = 0; int period = 1;
// the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(out1, OUTPUT); pinMode(out2, OUTPUT); }
// the loop routine runs over and over again forever: void loop() { if (time >=25) if (time <= 0) { period = 1; } time = time + period; digitalWrite(out2, HIGH); delay(time); // wait for a second digitalWrite(out1, LOW); // turn the LED off by making the voltage LOW digitalWrite(out2, LOW); delay(25 - time); // wait for a second } |
すると、、、。
オシロの波形はまだ多少ガタガタしてますが、LED自体は見事にゆっくり明滅(緩やかに明るくなったり暗くなったり)することができました!
今日の感想: チカチカしないっていいね。