アフィリエイト広告
アフィリエイト広告

冷却ファンの PID制御 (1) / ファンモータ PWM駆動回路

冷却ファンの回転数を検出し、PID制御する回路を作ります。

以前から何度か回してみている冷却ファン。こいつの PWM駆動はやりましたけど、回転数を検出するのは、これまでちゃんとやってなかったです。そこで、ファンの回転数を検出してフィードバック制御するための回路と、 Arduino での PID制御のスケッチを作ってみることにしました。

まず最初は、ファンを回して回転数センサから出力を取りだし、表示するための回路を作ります。

回転数を検出する方法

試してみるのは、ジャンク箱にある FHP-7543 という Core2 Duo の冷却フィンに付属してたファン。

仕様は、ほとんどわかりません (;´Д`)

電源が 12V、0.6A。コネクタは 4ピンなので、回転数制御は PWM で、回転数センサがついている、のだろう、と。回転数は 1500rpm ぐらいかな? 回転数センサは、1回転で 2パルス出力するんだとか、どこかのサイトで見たような気がしてます。とすると、毎秒 50パルス (pps) ぐらいで、周期は 20ms ってあたりでしょうか。
品番が違っても、CPU の冷却ファンだから似たり寄ったりな。

回転数を検出する方法は 2つ。ひとつは、一定期間のパルス数をカウントする方法。もうひとつは、パルスの周期を測定する方法。

パルス数をカウントする場合、サンプリング周期を 1秒間としても 50パルスしかないので、1パルス変化するだけで、1分間換算で 60パルスの変化になる。あまりに粗いので、うまくないです。
パルス周期を測定するには、Arduino の pulseIn() 関数が利用できる。こいつはマイクロ秒オーダーで検出できるので、10μs の変化で毎分 1.5パルス分。これなら解像度は充分じゃないでしょうか。

ということで、パルス周期から回転数を検出することにしましょう。

回路図

最終的な回路ではありません。とりあえず、回転数センサの出力を確認するための回路です。といっても、もちろん、最終的な形をイメージしながら。

ファンを PWM制御で駆動する回路

図1. ファンモータ PWM駆動回路図

ファンを回転させるのは、過去記事の回路を使います。過去記事で作った回路は図1 のとおりです。

このままでもよいのですが、周波数調整用の R1、VR1 部分は、6.8KΩ にしてしまいましょう。制御用の周波数は 25KHz ですが、かなりラフなので、ボリュームで調整する必要はないです。

トランジスタ Q1、Q2 は、コンデンサ C1 を充電するための定電流回路。C1 の電圧をコンパレータ U1 で比較、3.5V に達したら放電して、のこぎり波を発生させます。のこぎり波はコンパレータ U2 に入力し、速度調整用ボリューム VR2 による基準電圧と比較されて PWM制御信号になります。

PWM制御信号は、ツェナーダイオード ZD1 (3.3V) で電圧を落としていますが、このあたりの仕様はよくわかっていません。入力電圧は 3.3V、とどこかのサイトで見たのでそうしています。ただ、ツェナーダイオードに流している電流が少ないので、実測値では 2.6V ほどです。
開放時にテスターであたると 4V ぐらいを示すので、もっと高くてもいいのかも。ちなみに、5V かけると、3V あたりで波形に段ができます。これが気になるので、やっぱり 3.3V でいきます。

回転数センサの出力を検出する回路

図2. 回転数パルス 検出回路図

ファンの回転数センサの出力パルスを検出し、Arduino NANO に入力、pulseIn() 関数でパルス幅を取得します。

Sense はオープンコレクタらしいので、プルアップしてパルスが検出できます。R8 がプルアップ抵抗、C5 はノイズ除去用のコンデンサです。これらを追加しました。

出力されたパルスをオシロスコープで確認すると、周期約 26 ~ 14ms、デューティ比 50% ほどになっていました。パルス数に換算すると、約 38 ~ 71pps、最初の想定どおりです。

回転数を 7セグメントLED に表示させる回路

ファンの回転数を 7セグメントLED に表示させる回路です。

図3. 7セグメントLED 表示回路図

7セグメントLED のドライバは TM1630 です。このドライバは、Arduino のデジタル出力 3つで制御できるので、とっても便利です。
使い方の詳細は過去記事を参照ください。

回路図では 1桁タイプの 7セグメントLED 4個になっていますが、実際に使ったのは 4桁タイプです。ピン配置が違いますが、使い方は同じです。

電源回路

図4. 電源回路図

5V 電源回路です。

12V は ACアダプタ (3A) で供給しています。三端子レギュレータや Arduino のためには 9V程度が理想的なんですが、今回はファンのために 12V使ってます。ファンは 0.6A なんで、余裕をもってね。

あ、7セグメントLED ありますので、Arduino の 5V 出力は使わないほうが、吉です。

次回はじっさいにファンを動かしてみましょう

図5. 実験中のブレッドボード

実験中のブレッドボードです。

中央の変換基板に載っているのがコンパレータ BA10339です。LM339 と同等、らしいです。その左のトランジスタまわりが定電流回路など。奥にみえているのが、冷却ファン。右上部分は電源回路です。

ファンの下に 7セグメントLED のブレッドボードがあります。こいつ、よく使うので、ブレッドボードでモジュール化してます。

Arduino は NANO 互換機。
Vin に入っているダイオードは、USB 接続中に電源を落としたときの逆流防止用です。デジタルピンからの出力も外部回路に影響するので、基本的に電源を落とす前に USB は抜きましょう。
スケッチを書き込むときは? うーん (;´Д`)

回路ができましたので、次回は、じっさいにファンを回してセンサ出力を確認してみます。

タイトルとURLをコピーしました