この記事では、前回のM5StickCと冷却ファンを使った回転速度制御のおまけとして、冷却ファンの回転数を取得する方法について紹介します。
前回のM5StickCで冷却ファンを使った回転速度制御の方法については、次の記事で紹介しています。 本記事を読まれる前に確認してみてください!
この記事では、M5StickCと冷却ファンを使って回転速度制御をしていきます。 M5StickCから冷却ファンの回転を制御できれば、扇風機のように、自由に風量を変えることができます! 今回の冷却ファンは次のものを使います。パソコン用[…]
今回の冷却ファンは次のものを使います。 パソコン用の120㎜冷却ファンでLED搭載なので光らせることができます。 LEDを光らせる方法については次回の記事で掲載予定です。
Cooler Master MasterFan MF120 Halo
前回、冷却ファンの回転制御で使用した電子回路を使って、ファンの回転数を取得するための回路を追加します。
冷却ファンの回転数を取得するには?
今回使っているパソコンの冷却ファンなどでは、写真のような4ピンのコネクタがついています。
コネクタ部は以下のような仕様になっています。
今回は、回転センサーのコネクタピンから冷却ファンが回転した際に発生するパルス信号を取得し、パルス信号の周期から回転数を計算するという方法を考えてみます。
パルスセンサーの仕組みとは?
パルスセンサーは,ファン1回転につき,2周期の矩形波(パルス波形)を出力するセンサーで,回転速度を検出するのに,最適なセンサーです。
出力される波形は、次のようなイメージです。
1回転で2周期ということは、波が2回来るということなので、波が下がるタイミングから次の波が下がるタイミングまでが1周期ということになります。
今回は、パルスセンサーの信号をM5StickCのGPIOで受信し、波が高い状態(HIGH)から低い状態(LOW)に下がるタイミングで外部割込みを発生させ、Intervalを求める処理を実行します。
外部割込みには、attachInterruptというArduinoの機能を使います。
関数 | |
attachInterrupt( interrupt, function, mode) |
外部割込みを発生させます。 |
modeで指定する値は、次のとおりで、今回はFALLINGを使います。
LOW :ピンがLOWのとき発生
CHANGE: ピンの状態が変化したときに発生
RISING :ピンの状態がLOWからHIGHに変わったときに発生
FALLING :ピンの状態がHIGHからLOWに変わったときに発生
これでプログラムから回転パルスを読み取る仕組みができました。
回路の「浮き」を解消するプルアップ抵抗とは?
回転パルスセンサーのコネクタピンは、「オープンコレクト」になっていて、次の図のようにM5StickCと直接つなぐだけではセンサーが1を出力しても1の電位になりません。
電源がつながっていない(浮いた状態である)からです。
こういった場合は、プルアップをする必要があります。
今回の冷却ファンの回転センサーにはだいたい5V10mAの電流が流れるようにしたいため、プルアップをする際には次の図のように5V電源とセンサーの間に抵抗を入れて調節します。
これを「プルアップ抵抗」といいます。
今回は5Vの電源を追加して、1kΩの抵抗を入れました。
(計算上は0.5Ωでよいかと思いましたが手元にあるもので代用しました。)
また、M5StickCの電源も同じ5Vの電源からM5StickCの5V入力ピンに入れるようにしました。
これでパソコンに接続することなく冷却ファンの回転速度制御と回転数の測定ができます。
実際の回路はこうなる!
実際にブレッドボードに配線をする際には次の図のようなイメージになります。
前回、冷却ファンの回転速度制御で使用したものに以下の部品を追加しています。
抵抗 | 1KΩの抵抗(1つ) |
レッドボード上の5VとM5StickCの5V入力の結線 | ジャンパ線(1本) |
ファンコネクターの回転センサーとM5StickCの接続 |
ジャンパ線(1本) |
ブレッドボード |
5V電源作成用に1枚(追加) |
DC電源アダプター |
5V1.5Aのセンタープラス 外径5.5㎜、内径2.1㎜のもの |
ブレッドボード用DCジャック |
ブレッドボード用DCジャックDIP化キット(完成版) |
ブレッドボード①への5V電源接続用 |
ジャンパ線(2本) |
今回追加した部品(ジャンパ線をのぞく)
抵抗
・カーボン抵抗(炭素皮膜抵抗)
1W1kΩ (100本入) CFS100J1KB
・カーボン抵抗(炭素皮膜抵抗)
1/2W1kΩ (100本入) CFS50J1KB
秋月電子さんの通販サイトURLはこちらです。
ブレッドボード
コスパ最強のブレッドボード。両端に「+」と「ー」のラインがあります。よく3枚で〇〇〇円というのはありますが、1枚から買えて価格も抑えてあるのでよいと思います。価格も良心的です。Amazonで確認
電源アダプター
5V1.5A出力の電源アダプターです。PSEマーク認証がとられているものを選定しています。この商品はセンタープラスの電源アダプタです。
外径5.5㎜、内径2.1㎜のアダプター付きのものです。
Amazonで確認
ブレッドボード用DCジャックDIP化キット(完成版)
型番:AE-DC-POWER-JACK-DIP
秋月電子さんの通販サイトURLはこちらです。
パルスセンサーを使ってM5StickCで回転数を計算する
それでは回転パルスセンサーの信号を使用してM5StickC上で冷却ファンの回転数を計算してみましょう。
計算するだけでは、おもしろくないのでまたM5StickCのディスプレイ上に表示してみます。
今回は、後での使いまわしを考慮して、ファンの回転パルスセンサーから周期を取得するための関数Fan_Rotate_Sence()を作っています。
また、回転速度を変えるために、PWMの設定を次の通りとしています。
- 起動時は、デューティ比は0%に設定
- M5StickCのディスプレイ横にあるボタンを押すとデューティ比が
0%→25%→50%→75%→100%という形で変化 - 周波数は25KHz、分解能は8ビット
今回使う冷却ファンの製品仕様を見ると回転速度は、650-1800 rpm ± 10%なので、デューティ比と回転数の関係は次の表のようになると想定できます。
デューティ比(%) | 回転数(rpm) |
0% | 650rpm |
25% | 937rpm |
50% |
1225rpm |
75% | 1512rpm |
100% | 1800rpm |
M5StickCの画面にデューティ比(%)と回転数(rpm)をディスプレイ上に表示しますので、実際の値を後で確認しますね!
冷却ファン回転速度制御プログラム
Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。
Arduino IDE スケッチ例
M5Stack/M5StickCへの書き込み
- 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
- 「ツール」メニューから「ボード」情報を確認し、M5StickCであるか確認します。
この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。 - 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
- 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。
プログラム実行結果
M5StickCのディスプレイのデューティ比の下にファンの回転数(rpm)が表示されれば成功です。
実際にボタンをおしてDuty比を変えるとファンの回転数も変化します。
事前に想定したデューティ比と回転数の組み合わせとだいたい同じ結果が得られました!
これで冷却ファンの回転速度をM5StickCを使って制御できました。
今回の記事は以上になります。
次回は、冷却ファンのLEDを光らせてみます。単色、複数色、アニメーションなど行ってみたいと思います!お楽しみに!
Cooler Master MasterFan MF120 Halo
これからはじめる方にお勧めの参考図書はこちら!