ArduinoUNO
電子工作においてPWMは切っても切れない深い関係?にあります。
※PWM(Pulse Width Modulation)とは、一定電圧から、オンとオフの一定周期を作り、オンの時間幅を変化させる事です。
この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.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本です。
デューティー比100%は255、50%は127、0%は0の様に256段階で命令できます。
2.1.3 PWMのプログラムはこれだけ!
PWMのプログラムは図3の通り数行で書けます。さすがArduino簡単!
void setup() { pinMode(9,OUTPUT); } void loop() { analogWrite(9,255); }
図3:PWMのプログラム コンパイル終了!
3.まとめ
PWMは色んな所に使われており、今思いついただけでこんなことが出来ます。
○LEDの明るさ制御
○サーボモーターの角度制御
○DCモーターの速度制御
○ゲームボーイアドバンス等、各種ゲーム音源
他にもアイディアの数だけ応用出来るのも電子工作ならではです。
簡単な技術ほど応用幅が広くて色々できそうですね。
励みになりますのでよければクリック下さい(^o^)/