NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

PWMとデューティー比

 
イメージ 4
ArduinoUNO
 
 電子工作においてPWMは切っても切れない深い関係?にあります。
PWM(Pulse Width Modulation)とは、一定電圧から、オンとオフの一定周期を作り、オンの時間幅を変化させる事です。
 Arduino UNO等の一般的なマイコンは、出力電圧を変化させる事が出来ない(Arduino M0proは出来るみたい)ので電圧を時間で刻んで電圧が下がったと見せかけます
 このPWMを利用することで、今まで0(0V)か1(5V)かしか表現できなかったデジタル出力の情報量を圧倒的に増やすことが出来るという寸法です。
 例えばArduino UNOでLEDに電気を流す1/5の時間ON、4/5の時間OFFと言う動作を、人の目に点滅が見えない程高速で行ったとすると、流しっぱなしの状態に比べLEDの明るさは1/5になります。
 LEDで蛍の光を再現!で作成したプログラムの様に1/1000単位でLEDの明るさを変化させる事もまたはそれ以上も可能です。
 因みに5V電圧を任意の電圧に降圧するのはなかなか大変です。

1.PWMとデューティー

 PWMとは呼び名であり、中身は図1,2の通り周期に対する5V出力時間(パルス幅)の割合(ディーティー比)を変化させているだけです。
 
 
イメージ 2
図1:デューティー比はパルス幅(τ:タウと読む)と周期(T)で決まる
 
イメージ 1
図2:デューティー比別PWM信号(矩形波)
 

2.Arduino UNOで簡単にPWMは作れる

 ソフトウェア的にPWMを作る際は、細かく制御は出来ますがマイコンPWMを作るのに必死で他の事が出来なくなるのが難点です。その点Arduino UNOはハードウェアでPWMを作る機能が備わっていますのでPWMを出したままマイコンに他の仕事をしてもらうことが出来ます(^o^)。

2.1 超簡単!Arduino UNOでPWM出力 
 命令文は超簡単「analogWrite(△,□);」だけです。

2.1.1 ハードウェアPWMが出力出来るピン
 2.1の命令文中の「△」にはPWMを出力するピン番号を書きます。PWMが出力できるピンはArduino UNO本体(図3)にシルク印刷で「~○」と書かれている「3,5,6,9,10,11番ピン」の計6本です。
 
補足:PWMの周波数はArduino UNO内部に有る3つのタイマーから作られており、
 1つ目:5, 6番ピンから977Hzで出力
 2つ目:9,10番ピンから490Hzで出力
 3つ目:3,11番ピンから490Hzで出力
です。
 
2.1.2 デューティー比の設定
 2.1の命令文中の「□」にはPWMを出力する際のデューティー比を書きます。
デューティー比100%は255、50%は127、0%は0の様に256段階で命令できます。

2.1.3 PWMのプログラムはこれだけ!
 PWMのプログラムは図3の通り数行で書けます。さすがArduino簡単!
void setup() {
  pinMode(9,OUTPUT);
}

void loop() {
  analogWrite(9,255);
}

イメージ 1
図3:PWMのプログラム コンパイル終了!

3.まとめ

PWMは色んな所に使われており、今思いついただけでこんなことが出来ます。
 ○LEDの明るさ制御
 ○サーボモーターの角度制御
 ○DCモーターの速度制御
 ○直流電圧の昇圧降圧
 ○ゲームボーイアドバンス等、各種ゲーム音源
他にもアイディアの数だけ応用出来るのも電子工作ならではです。
簡単な技術ほど応用幅が広くて色々できそうですね。
 
イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【NOBのArduino日記!】目次に戻る