Soraken’s Style

つれづれ

Trinketと外部電源

Windowsからの書込みと、簡単なGPIOのデジタル出力はできるようになったので、この辺でTrinketの端子を確認してみます。

Trinketは、Trinketの学習サイトに紹介してあるように、mini-USBからのバス電源供給だけでなく、外部からも電源を供給できるようになっています。では早速、外部からDC5Vを供給してみます。

使ったのは、コーセルさんのDC5V/12V出力のもので、5Vの場合、電流が0.8A流せるものです。

f:id:soraken:20141009220419p:plain

単純に外部電源につないだだけですので、問題なく動作しています。

 

外部電源ならUSBのバス供給より電力が少し多めにとれますので、これでいろいろとやっていきましょう。

 

まず最初に、前回のLEDを光らせるテストで、デジタル出力のパルス幅を変えて光らせた時に、On時のパルス幅が小さくなるとLEDがチカチカしていたので、これを滑らかに(輝度を低くするような感じに)できないかと思います。前回の出力波形はこんな感じでした。(実際には、On/Offのデューティーが少しずつ変わるようにプログラミングしました)On/Offの立ち上がりと立ち下がりがシャープです。ちなみに、1周期は50msecで、On/Off時間を1msecずつ増減させるプログラムでした。

f:id:soraken:20141009225948p:plain

単純には、GPIOの出力とGNDの間にコンデンサを入れれば、立ち上がりと立ち下がりが滑らかになる(俗に”なまる”と言いますね)と思いますので、まずはいつものとおり、深く考えずに手持ちの適当なコンデンサを入れてみます。ちょうど手持ちで47uF 16Vという電解コンデンサがありましたので、これを入れてみた波形が以下の通りです。

f:id:soraken:20141009230250p:plain

確かになまってますが、思ったほどではないみたい。もっと大きなコンデンサの方がいいのかな。というわけで、470uF 16V電解コンデンサに取り替えてみます。

元の波形との差がわかりにくくなったので、同じ信号をGPIO#2にも出して比較してみました。On時間の小さい順に波形をとってみました。

f:id:soraken:20141009233134p:plain

f:id:soraken:20141009233217p:plain

f:id:soraken:20141009233228p:plain

f:id:soraken:20141009233239p:plain

47uFの時に比べても、だいぶ「なまって」ますねぇ。でも、まだ滑らかって感じじゃないですね。さてどうしたものか、、、。

 

そう言えば、コンデンサに電力が溜まる時間ってどれくらいなんだろ。流れる電流の量によりますよね。だとしたら、流れる電流が少ないと溜まるまでに時間がかかるはず。それか、溜まったらすぐに放電してやる(Offにする)といいのかも。ふむふむ。

 

じゃあ、今のプログラムは50msec周期だから、これを半分にしてみよう。というわけで、先程から使っていたプログラムを以下のように変更してみます。

/*

increasing and decreasing pulse Test

*/

// Pin 1 has an LED connected on most Arduino boards.

// 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)
  {
    period = -1;
  }

  if (time <= 0)

  {

    period = 1;

  }

  time = time + period;

  digitalWrite(out1, HIGH);         // turn the LED on (HIGH is the voltage level)

  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自体は見事にゆっくり明滅(緩やかに明るくなったり暗くなったり)することができました!

 

今日の感想: チカチカしないっていいね。