第6回 PWM制御(5) 〜チャレンジ課題〜

今回はPWM制御に関するチャレンジ課題です。

PWM制御プログラム2通り

PWMの最後はチャレンジ課題で締めくくりたいと思います。

前回までに、LEDを2通りの方法でPWM制御しました。PWMの原理自体はとても簡単だったと思いますが、周期やデューティーサイクルの算出が難しかったと思います。

そこで、ちょっと地味ですが、PWMのチャレンジ課題は周期とデューティーサイクルの計算に慣れていただく内容にしました。

※※※ 注意 ※※※
LEDの点滅周期(PWMの周期)を長くすると (つまりゆっくり点滅すると)
「光過敏性発作」を誘発する可能性があります。
点滅は1秒間に30回以下にしないよう注意してください。

 

プログラム制御のPWM

PWMをプログラムで制御する場合、LEDを点灯、デューティーサイクルの時間分__delay_us()関数などで時間待ち、LEDを消灯、時間待ち、という処理の繰り返しでした。

説明の時に作成したプログラムは、この点滅が認識できないように1秒間に200回点灯させました。目視した場合、どの程度の周期で点滅しているように見えてしまうのか、確認するプログラムを作成してみましょう。

動作内容としては、PWMのデューティー比は50%として、以下の動作をするようにします。

  1. 最初に1秒間に200回の点滅を5秒間続ける
  2. LEDを1秒間消灯する
  3. 次に1秒間に180回の点滅を5秒間続ける
  4. (2)と(3)の動作を繰り返す。点滅回数は、20回ずつ減らし、1秒間に40回の点滅まで続ける

 

PWMモジュール制御のPWM

上の動作をPWM機能を利用してプログラムを作成してみてください。

周期の設定はPR2レジスタ、デューティーサイクルの設定はCCPR1LレジスタとCCP1CON/DC1Bレジスタです。

 

PWMの次のステップ

今回はLEDをPWM制御を行いました。今回は明るさの調整のみでしたが、フルカラーLEDという部品を使用すると様々な色の表示が可能になります。

フルカラーLEDは以下のようなものです。

5mmフルカラーLED(秋月電子通商)

フルカラーLEDは、単に赤色、緑色、青色の3つのLEDが1つのパッケーシに収められている部品です。赤、緑、青は光の三原色ですから、赤、緑、青のそれぞれをPWM制御して明るさを変えれば様々な色の表示が可能になります。

また、サーボモーターというモーターがあります。

サーボモーター(秋月電子通商)

通常のモーターは電圧を加えるとモーターの軸がぐるぐる回転しますが、このサーボモーターは0度〜180度の角度の範囲内で回転します。用途としてはロボットアームなど、稼働角度が限られている場合などです。

サーボモーターを制御するにはPWM信号を与えます。上のサーボモーターの仕様を見ると、

と書かれています。つまり、PWMの周期は20ms、デューティーサイクルを0.5msから2.4msまで変化させることにより、0度〜180度まで回転制御ができる、というわけです。

サーボモーターの制御信号は、PICマイコンの出力ピンを直接接続できますので、比較的簡単な回路で制御回路が実現できます。

いずれも、結局はPWMの周期とデューティーサイクルの制御を行うものです。今までの知識とアイデアがあれば、色々なものが作れるようになりますので、ぜひPWMをマスターしてみてください。

次回からA/Dコンバータの説明になります。

 

更新履歴

日付 内容
2017.1.22 新規投稿
2018.12.1 点滅周波数の注意点追加