Groveで広がるArduinoの世界-Senser Kit-⑥ Grove Red LED
Arduino の端子には'~'と書かれているディジタル端子があります。analogWrite関数を使って出力すると、アナログではなくPWM信号が出力されます。3、5、6、9、10、11番がPWM出力できますが、5、6番ポートは約980Hzが、残りのピンは約490Hzと少し仕様が異なります。
周波数は一定ですが、デューティ比を変化させて平均電力を制御できるので、アナログの出力レベルを変化させたように見せかけられます。
もちろん、digitalWrite関数では、HIGHもしくはLOWの出力が出せます。
●Grove Red LEDボードの回路
ボードは、ディジタル端子6番ポートにつないで使います。
端子がLOW(0V)のときR4=1kには電流は流れず、R5=100kはベース電位をGNDに引っ張っているだけですから、トランジスタのベースに電流は流れません。したがって、コレクタ電流も流れないので、LEDは点灯しません。
端子がHIGH(5V)のとき、エミッタよりベースの電位が高いので、R4=1kを通してベース電流が流れます。ベース電流は次のように計算できます。
(5.0[V] - 0.6[V]) / 1[kΩ] = 4.4[mA]
R5=100kは、ポートを出力ではなく入力に設定してしまったときにハイ・インピーダンスになり、ベースにノイズなどで高い電圧がかかって過剰な電流が流れないようにするために入れてあります。
トランジスタの電流増幅率hFEが50とすれば、4.4*50=220mAのコレクタ電流が流れようとします。つまり、トランジスタはスイッチとしてON状態になります。通常、トランジスタのhFEは100以上ありますが、Vceの低い飽和領域だと半分以下に低下するので、50で計算しました。
R1=1kとR2(VR)=0~1kの合成抵抗は並列なので、0~500Ωです。R3=220Ωが直列に入っているので、220~770Ωの変化になります。
LED(D1)の順方向電圧Vf=2.0Vと想定すると、トランジスタをスイッチとみなし、ONしたときにコレクタはエミッタと同電位の0Vと仮定すると、抵抗には5-2=3Vの電圧がかかります。電流は、13.6~3.9mAの範囲で流れます。
実際に測ってみましょう。
Vcc=5.000V VRを回して、明るさが最低になる位置にします。LEDの電流は4.34mA、アノード(=コレクタ)の電圧は1.27Vでした。明るさが最高になる位置にします。LEDの電流は12.78mA、アノードの電圧は2.06Vでした。 SIG=何もつながない状態、ベースの電圧は3mVでした。 SIG=5Vの状態、ベースの電圧は0.772V。したがって、ベース電流は(5-0.772)/1000=4.2mAです。 |
(測定器)電圧;Keithley 2000、電圧;Keysight 34461A、電流;岩通 VOAC7602、電源;菊水PAB32-2
Seeedのこちらのページに掲載されている回路図と目視した抵抗定数が異なるようです(?のところ)。
●プログラム
THE LEDのページに掲載されているスケッチです。動きません。
#define LED void setup() { // put your setup code here, to run once: pinMode(LED,OUTPUT); //Sets the pinMode to Output } void loop() { // put your main code here, to run repeatedly: digitalWrite(LED, HIGH); //Sets the voltage to high delay(1000); //Waits for 1000 milliseconds digitalWrite(LED, LOW); //Sets the voltage to low delay(1000); //Waits for 1000 milliseconds }
最初の行、#define LED に6を定義します。1秒ごとに点滅します。
2か所あるdigitalWriteをanalogWriteに変更して実行します。暗くなりますが、点滅します。本来analogWriteは二つの引数を取ります。二つ目の引数は、0~255のデューティ比です。
analogWrite(LED, HIGH);
を、
analogWrite(LED, 50);
のように、HIGHの代わりに数値を入れて、明るさを見ましょう。変化しますね。数値が小さいほど暗くなりますが、1でも目視できるぐらい光っています。
このボードは、半固定抵抗を使ってアナログ的に明るさを変更できるように作られていますが、analogWrite関数のデューティ比を変更しても明るさを変えることもできることを確認しました。