冷却ファンの回転数を検出し、PID制御する回路を作ります。
前回は、じっさいに CPU冷却ファンを回転させ、回転数センサからの出力を Arduino NANO で検出、7セグメントLED で回転数を表示できるようにしました。
今回は、ファンを PWM制御するための信号を Arduino から出力し、回転数センサからの信号をフィードバックできるように回路を変更しましょう。
Arduino から制御信号を出力する
現在は、ボリュームで 0 ~ 3.5V の電圧を出力し、コンパレータへ比較電圧として与えています。この電圧を Arduino から出力するようにしたい。でも、Arduino NANO ではアナログ出力はできません。 アナログという名の PWM信号を出力できるだけです。
この PWM信号を、0 ~ 3.5V のアナログ電圧信号に変換しましょう。
PWM出力をアナログ電圧に変換する回路
Arduino の PWM出力を、アナログ電圧に変換する回路です。
難しいことはしません (^_^;)
5番ピンの PWM出力 (980Hz) をローパスフィルタ (リプルフィルタ) に通して直流電圧にするだけです。
PWM信号の電圧は 5Vp-p。抵抗 R1、R2 で分圧して 3.5Vp-p に落とします。そこへコンデンサ C1 を入れて平滑すれば、0 ~ 3.5V の直流電圧にできます。
C1 の値は、オシロスコープで観察し、リプルがなくなる値。大きすぎると応答が悪くなります。
R1、R2 を並列抵抗とみなすと、合成抵抗は 11.4KΩ。C1 を 4.7μF としたとき、時定数は 54ms、カットオフ周波数 3Hz。良いか悪いかわかりませんが、ファンの応答速度からみれば充分じゃないかと。
ボリューム VR1 の電圧を Arduino に入力し 5番ピンへ PWM出力すると、デューティ比 0 ~ 255 で、出力電圧は 0 ~ 3.8V となりました。
回路図
では、回路図をまとめておきましょう。基本的にこれまでと同じですが、少し修正しているところもあるかと思います。
ファンモータ PWM駆動部
ファンモータを 25KHz の PWM信号で回転数制御する駆動回路です。
PWM Reference に 0 ~ 3.5V の電圧を与えることで、回転数を制御することができます。
RPM-Sensor に、ファンの回転数パルスが出力されます。回転数パルスは、1回転あたり 2パルスです。
Arduino 制御部
図1 の再掲です。
Arduino NANO で、ファンモータの回転数パルスを検出し、回転数を制御します。
VR1 は、回転数の目標値を設定します。
STB、CLK、DIO は、7セグメントLED ドライバ TM1630 のコントロールをおこないます。
ダイオード D1 は、Arduino 内部の 5V が 12V ラインへ逆流するのを防止しています。
7セグメントLED 表示部
7セグメントLED 表示器へ、ファンの回転数を表示させます。
ドライバは TM1630、制御は Arduino でおこないます。
小数点を利用しなければ、SEG14 の接続はなくてもよいです。
輝度調整はつけていません。ボリュームやスイッチでコマンド設定値を変更するようにすれば可能です。
電源部
AC アダプタから DC12V を入力し、制御回路用に DC5V を出力します。
ファンと Arduino へは 12V を供給します。
5V には三端子レギュレータ 7805 を使っています。7セグメントLED へも供給していますので、Arduino の 5V 出力の使用は避けたほうがよいと思います。
次回は PID制御してみましょう
図6 は、動作テスト中のブレッドボードです。
ファンは 1498rpm で回転中。オシロスコープに表示されている回転数パルスは、周期 20ms になっています。いい感じです (^_^;)
回路がすべてできましたので、次回は Arduino のスケッチを書いて、PID制御でファンの回転数をコントロールしてみましょう。