モーター速度(回転数)制御V2

計測や制御の分野では、モーターを使用し、そのモーターの回転数を一定に保たなければならない場合が時々発生します。

<仕様>

  • 制御するモーターは、1.5V~3.0VのDCモーターとします。
  • 電源電圧は、12Vとします。
  • モーターの制御方式は、PWM方式(10ビット)を採用します。
  • 回転速度(RPM)は、プログラム固定(1500回転)とします。(必要に応じて変更してください)
  • 回転数を検出し、1500(±50)回転の範囲であれば、ロック状態、それ以外をアンロック状態とします。
  • ロック状態であれば、LEDを点灯、アンロック状態であれば、LEDを消灯します。

制御の基本的な仕組みについては、モーター速度(回転数)制御を参照してください。
モーターの回転を検出するセンサーには、シャープのフォトインタラプタ(GP1A53HRJ00F)を使用しました。
モーターの軸に検出用の羽を付けるので、1回転では2パルスが発生することになります。

<GP1A53HRJ00Fの概要と特長>
フォトダイオードやフォトトランジスタの出力をマイコンに入力するには、これらの受光素子に増幅回路や波形整形回路などの信号処理回路を付加する必要があるため、回路設計に伴う煩雑さや、実装面積の増加の問題がありました。
GP1A53HRJ00Fは、マイコンに直結できる受光素子として、フォトダイオードと信号処理回路を1チップ上に集積したOPIC受光素子(Optical IC)です。

  • 回路設計が容易
  • マイコンに直結可能
  • 電磁ノイズ、電源ラインのノイズの影響を受けにくい
  • 小型、高信頼性
  • 高機能、高性能化の実現

<GP1A53HRJ00Fの概観>

<GP1A53HRJ00Fのブロックダイアグラム>

<回転数を求める方法>
パルスの幅を測定し、そこから回転数を求めます。
検出用の羽の枚数が2枚の場合には、次式で回転数を求めることが出来ます。

  • 1秒間の回転数=1秒÷(パルスの幅×羽の枚数)
  • 回転数(RPM)=1秒間の回転数×60

<処理の流れ>

  1. 信号のHigh(1)レベルを検出します。
  2. 信号の立ち下がりを検出します。検出できたら、タイマーを開始します。
    内部クロック8MHz、TIMER1(1:1のプリスケール値)を使用します。
    従って、1カウントは、0.5usecになります。
    0.5usec=(1÷8MHz)×4
    TIMER1は16ビットなので、最大33msecまでのカウントが可能です。

33msec≒65536×0.5usec

  1. 信号の立ち上がりを検出します。
  2. 信号の立ち上がりを検出します。検出できたら、タイマーを停止します。(カウント値)
  3. 回転数(RPM)を求めます。
    回転数=(1秒÷(カウント値×0.5usec×2枚羽))×60秒
  4. 回転数が、目標設定値(1500回転)の±50回転の範囲であれば、ロック状態とみなしLEDを点灯、
    そうでなければLEDを消灯します。
  5. 回転数が、1450(1500-50)以下であれば、PWMのデューティ比をプラスし、速度を上げます。
  6. 回転数が、1550(1500+50)以上であれば、PWMのデューティ比をマイナスし、速度を下げます。
  7. 1.に戻ります。

使用したモータは、両軸ノーマルモーターです。(1.5V~3.0VのDCモーターであれば同様に使用できます)

回転数を検出するために、モーターの軸に銅板を半田付けしています。

左側=アンロック状態です。
右側=ロック状態です。(LED点灯)

ロックしたときの全体の消費電流は、約50mAでした。

如何でしょうか?
使用するモーターや電源電圧、検出用の羽の枚数、必要とする回転数などに応じて、少しプログラムを修正する必要がありますが、モータ制御の基本的なことを理解するには役立ったのではないでしょうか?

著作権表示 copyright notice

このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。詳細
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.Details
  • elechobby/picdic/pic12f683/28.txt
  • 最終更新: 2025/10/17 14:29
  • by 127.0.0.1