DCモータ速度制御回路 回路説明 |
制御電圧入力回路 モータの回転数を検出して制御電圧をPICに入力する回路です。PICへの入力はA/D変換されてCCPのPWM機能によるモータ駆動制御情報に使われます。今回の回路ではモータの回転数を検出するために小型のモータを本体のモータで回転させ、発電機として使っています。モータの回転数の増減によりPICへの入力電圧(制御電圧)は変化します。モータの回転数を検出するのに他の方法を使用してもかまいません。要は、モータの回転数に比例して制御電圧が変化することが条件です。PICでは制御電圧が規定値になるようにモータの駆動電流を制御します。モータの回転数が下がった場合、すなわち、制御電圧が下がった場合、モータの駆動電流を増やし、回転数を上げます。制御電圧が規定値に達すると、その時点の駆動電流を維持します。逆に、モータの回転数が高い場合、すなわち、制御電圧が高い場合にはモータの駆動電流を減らし、回転数を下げます。制御電圧が規定値に達すると、その時点の駆動電流を維持します。 DB1はモータの極性を意識しなくて良いように付けています。接続を間違えることが無ければ付ける必要はありません。速度検出用モータの電圧が小さい場合には付けないほうがよいです。 D1は検出用モータの回転が高くなってPICの許容電圧(5V)を越えないようにするための5V用ツェナーダイオードです。C1は検出用のモータの雑音をバイパスさせるためです。VR1は本体モータの回転数を設定するための可変抵抗器です。VR1を1側に回すとPICの入力電圧が低くなり、PICはモータの駆動電流を増加させます。すなわち、モータの回転数は上がります。VR1を3側に回すとPICの入力電圧は高くなり、PICはモータの駆動電流を減らします。すなわち、モータの回転数は下がります。 CCPの詳細は「PIC16F873のCCP機能」を参照して下さい。 モータ駆動回路 モータを駆動するための電流制御にはPICのPWM(Pulse Width Modulation)機能を使います。PWMではCCP1に出力するパルスのデューティをデータにより変更することができます。CCP1のパルスのHレベルになっている時間が短いとTR2がON(Lレベル)になっている時間が長くなります。すなわち、モータの駆動電流が多い状態になります。逆にCCP1のパルスのHレベル時間が長いとTR2のON時間が短くなり、モータの駆動電流は少なくなります。 CCP1のパルスのデューティは制御電圧入力回路で取り込んだ電圧(制御電圧)により制御します。制御電圧が規定値より高い場合にはCCP1パルスのHレベル時間を長くし、モータの回転数を下げます。制御電圧が規定値より低い場合にはCCP1のHレベル時間を短くし、モータの回転数を上げます。 モータの駆動にはNチャネルMOS FETを使用しました。PチャネルMOS FETを使用することもできますが、その場合にはCCP1パルスのデューティ制御は逆になります。パルスのHレベルが短いと低速、長いと高速になります。モータとFETの接続箇所も逆になります。この場合、FETドライブ用のトランジスタ電源はP-FETのソース側に接続する必要があります。 MOS FETの詳細は「MOS FET」を参照して下さい。 CCPの詳細は「PIC16F873のCCP機能」を参照して下さい。 発振器 10MHzのレゾネータを使用しています。 モータの回転数には直接関係はしませんが、制御電圧の取り込み周期、モータ駆動パルスの周期に関係します。 LED表示回路 モータの駆動状況をモニタするためにLEDを点灯させています。LEDの点灯にはPWMの制御データの上位3ビットを使用し駆動状況表示にしています。駆動していない状態では全LEDが消灯し、駆動電流が増えるにつれてLED1から順番に点灯数を増やします。最大駆動状態では全LEDが点灯状態になります。 今回の装置ではLEDにバータイプを使用し、駆動レベルを表すようにしています。回路では8つのLEDを制御できるようにしていますが、使用したLEDに都合で、LED1は使用せず、LED2からLED8までの7つのLEDを使用しています。RBxがHレベルでLEDが点灯します。 電源回路 PICの動作電圧を作るために3端子レギュレータを使用しています。 100mAタイプでもぎりぎり大丈夫かもしれませんが、LEDを同時に7つ点灯させるとそれだけで約70mAの電流になるので、安全のために1Aタイプのレギュレータを使用しました。 |