PC冷却ファン制御というものをやってみるか。
この記事では、M5Stackとパソコン用の冷却ファンを使って回転速度制御を行います。
M5Stackから冷却ファンの回転を制御できれば、扇風機のように、自由に風量を変えることができます!
今回ご紹介する仕組みを使えば、自作PC用や、その他用途の冷却ファンの事前ロードテスト(回転速度、騒音の測定)に利用できます。
今回の冷却ファンは、パソコン用の120㎜冷却ファン「Cooler Master MasterFan SF120M ARGB」を使います。
LED搭載なので光らせることができますよ!。
LEDを光らせる方法については別の記事で掲載予定です。
Cooler Master MasterFan SF120M ARGB
防振モーター、振動を抑えるダンピングフレームデザインなど、工業用グレードの素材を用いていて、高性能、安定性、耐久性を実現した、冷却ファン製品です。
ファン側で回転モードを3モード選択でき、高回転モードで、5.5-22 dBという静けさを実現しています。
風量も62 CFM (Max)とかなりいいです。このファンに交換することで、自作PCをさらに静かにできますよ!交換してみてはいかがでしょうか?
また今回使う「M5Stack」は、「M5Stack Core 2」を使います。 タッチパネル、マイク、6軸IMU搭載で、一台でいろいろ遊べるモデルになっています。
M5Stack Core2 開発キット
タッチスクリーン、マイク、IMUを使うことができ、従来のM5Stackよりも多機能なモデルです。 バッテリーも搭載しています。一台でいろいろと遊べる機器なのでおススメです!
また今回は、電子回路を作って動かしてみます。
といっても、はんだ付けはしません。「ブレッドボード」を使います。
使用する部品もはんだ付けしなくても利用できるものを使用しています。ブレッドボードや電子回路は、はじめて登場しますので、次の順で説明していきます。
- ブレッドボードってなに?
- 電源を準備する
- 電子回路をつくる
- ファンの回転を制御するための仕組みを知る(PWM制御)
- プログラムを作って実行してみる
完成した際のイメージはこんな感じです。 M5Stackのボタンを押すことで、ファンの回転速度を増減させることができます。
おまけに画面上にファンの回転速度を表示してみましょう!
ブレッドボードってなに?
電子回路を試作する際に便利なのがブレッドボードです。
表面にランド(穴)が開いていてある規則に沿ってそのランドが内部でつながっています。
このランドに抵抗やコンデンサ、センサーなどの電子部品を差し込むことで電子回路を作ることができるものです。
標準的なブレッドボードのランドのつながり方は、次の図のとおりです。
注意点として上下にある「+」と「ー」の内外が逆になっていることです。
意識してないと意図しない接続になって危険ですので必ず確認するようにしましょう!
また、ご紹介したブレッドボード以外にもランド間の接続が異なるものがありますので、ご準備されたブレッドボードの説明書をよく読んで使ってくださいね!
ブレッドボードのおすすめ
電源を準備する
冷却ファンを回転させるために必要な電源を準備します。
そのために今回使用する「Cooler Master MasterFan SF120M ARGB」の仕様を確認します。
冷却ファンの仕様を調べる
冷却ファンの仕様は次の通りです。
・ファン速度:650-2000 RPM ± 10% (RPM)
・寸法:120 x 120 x 25 mm
・ベアリング:ボールベアリング
・ファン電源コネクタ:4-Pin PWM
・ファン定格電圧:12 VDC
・ファン定格電流:0.12A
冷却ファン動作用の電源
この冷却ファンを回すためには12Vの電圧が必要です。
そのため、12Vの電源アダプターとDCジャックキットを使って電源を構成します。 次のものを使います。
ブレッドボード用DCジャックDIP化キット(完成版)
型番:AE-DC-POWER-JACK-DIP
回転センサーの仕様を調べる
実際にファンの回転数を制御した結果、きちんとファンの回転数が意図したものになっているかを確認するため、FAN制御用についている回転センサーを使います。
回転センサーのコネクタピンから冷却ファンが回転した際に発生するパルス信号を取得し、パルス信号の周期から回転数を計算するという方法を考えてみます。
パルスセンサーの仕組みとは?
パルスセンサーは,ファン1回転につき,2周期の矩形波(パルス波形)を出力するセンサーで,回転速度を検出するのに,最適なセンサーです。
出力される波形は、次のようなイメージです。
1回転で2周期ということは、波が2回来るということなので、波が下がるタイミングから次の波が下がるタイミングまでが1周期ということになります。
今回は、パルスセンサーの信号をM5StackのGPIOで受信し、波が高い状態(HIGH)から低い状態(LOW)に下がるタイミングで外部割込みを発生させ、Intervalを求める処理を実行します。
外部割込みには、attachInterruptというArduinoの機能を使います。
関数 | |
attachInterrupt( interrupt, function, mode) |
外部割込みを発生させます。 |
modeで指定する値は、次のとおりで、今回はFALLINGを使います。
LOW :ピンがLOWのとき発生
CHANGE: ピンの状態が変化したときに発生
RISING :ピンの状態がLOWからHIGHに変わったときに発生
FALLING :ピンの状態がHIGHからLOWに変わったときに発生
これでプログラムから回転パルスを読み取る仕組みができました。
回転センサーの回路の「浮き」を解消するプルアップ抵抗とは?
回転センサー(パルスセンサー )のコネクタピンは、「オープンコレクト」になっていて、次の図のようにM5Stackと直接つなぐだけではセンサーが1を出力しても1の電位になりません。
電源がつながっていない(浮いた状態である)からです。
こういった場合は、プルアップをする必要があります。
今回の冷却ファンの回転センサーにはだいたい5V、10mAの電流が流れるようにしたいため、プルアップをする際には次の図のように5V電源とセンサーの間に抵抗を入れて調節します。
これを「プルアップ抵抗」といいます。
今回は5Vの電源を追加して、1kΩの抵抗を入れました。
(計算上は0.5kΩでよいかと思いましたが手元にあるもので代用しました。)
また、M5Stackの電源も同じ5Vの電源からとるようにしました。
これでパソコンに接続することなく冷却ファンの回転速度制御と回転数の測定ができます。
M5Stackとパルスセンサー動作用の電源
M5Stackへの電源供給用および、回転センサー(パルスセンサー)へのプルアップ用として5Vの電源も準備します。
5Vの電源アダプターとDCジャックキットを使って電源を構成します。 次のものを使います。
型番:AE-DC-POWER-JACK-DIP
電子回路をつくる
M5Stack Core 2 の準備
回路の作成
(また、次の注意書きにもありますが、配線を間違えるとM5Stackなどが故障する(焼けてしまう)ので十分に注意しましょう。)
FAN用コネクタ接続用 | ピンヘッダ(1×4Pin) |
ブレッドボード①上の12VとGNDの結線 | ジャンパワイヤ(5つ) |
M5Stackとブレッドボード①接続 | ジャンパ線(4本) |
抵抗 | 1KΩの抵抗(1つ) |
ブレッドボード②上の5VとGNDの結線 | ジャンパワイヤ(2つ) |
ブレッドボード間接続 | ジャンパ線(2本) |
ピンヘッダ
入手元:秋月電子
型番:PH-1x40SG(6.1/6.1)
両端のピンが長いものになります。冷却FANと接続する側のピンとして使います。
40ピンありますので、4ピン分を切って使います。
秋月電子さんの通販サイトURLはこちらです。
ジャンパワイヤ/ジャンパ線
ファンの回転を制御するための仕組みを知る(PWM制御)
そのあたりを説明しよう。
PWM制御とはなにか
イメージ的には次のような繰り返しの波のことです。 また、ONの状態の幅を「パルス幅」といいます。
例えばON状態のときに電圧(V)で電流(A)が流れるとすると この時の一定時間あたりの電力量(W=V×A)はON状態部分の面積の和になります。
例えば前図のパルス幅(ON状態)を2倍にすると次のような波形になると予想できますよね。
この時、一定時間あたりの電力量も元の2倍になります。
ここでON状態の立ち上がりから次のON状態の立ち上がりまでに注目します。
この時間のことを「周期」といいます。 この周期が1秒間あたりに何回発生するかを「周波数」といいます。
例えば100Hzの周波数 は、1秒間に周期が100回発生することから周期は1ms(ミリ秒)になります。
ここで注意しておきたいのは、この情報だけではパルス幅はわからないということです。
パルス幅を周期に対してどのくらいの割合にするかを表す比率を「デューティ比(%)」といいます。
デューティ比の変化による信号のイメージは次のイメージになります。
周波数を一定にした状態でデューティ比を変化させることでパルス幅を増減でき、実行電圧や電力を変化させることができます。
この制御方法がPWM制御です。
冷却ファンもPWM制御で回転速度を変えられる
- デューティ比が低い:回転速度が遅くなる
- デューティ比が高い:回転速度が速くなる
M5StackでのPWM制御の設定方法
PWM関連設定
関数 | 説明 |
ledcSetup(Channel, FREQ, BIT) | PWM信号の設定を行います。 Channel:PWM信号を発信するチャネルの指定(uint8_t) FREQ:PWM信号の周波数を指定(double) BIT:分解能を~16ビットで指定(uint8_t) |
ledcAttachPin(GPIO, Channel); | 指定したGPIOにチャネルを割り当てます。 ここで指定したチャネルを上記のledcSetupで指定します。 ※M5StackでPWMが使用できるGPIOは任意になっています。 |
PWM開始設定
関数 | 説明 |
ledcWrite(channel, Duty) | PWM信号の開始をします。 Chanel:PWM信号を発信するチャネルの指定(uint8_t) Duty:デューティ比を分解能に応じて指定(uint32_t) |
M5Stackから冷却ファンの回転を制御してみよう
- 起動時は、デューティ比は0%に設定
- M5Stackのディスプレイ上のボタンを押すとデューティ比が 0%→25%→50%→75%→100%という形で変化
- 周波数は25KHz、分解能は8ビット
- 回転パルスを受信し、回転速度(rpm)を計算
冷却ファン回転速度制御プログラム
使用するM5Stackのモデルによりプログラムが異なりますので、次から適宜選択してください。
Arduino IDE スケッチ例
※右側の「+」を押すとプログラムが表示されます。
- M5Stack Core2用のプログラム(タッチパネル)
- M5Stack 用のプログラム(物理ボタン)
M5Stackへの書き込み
- 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
- 「ツール」メニューから「ボード」情報を確認し、次のものを選択します。この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。 ボード:「M5Stack Arduino」-「M5Stack-Core2」、または「M5Stack-Core-ESP32」、「M5Stack-Tough」 「Partition Scheme」で「Not OTA(Large App)」を選択します。
- 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。
プログラム実行結果
M5Stackのディスプレイに次のようにPWMデューティ比(%)、回転速度(RPM)が表示されます。
編集後記
いかがだったでしょうか。
M5Stackを使って、ファンコントローラを作ってみました。
電子回路をブレッドボードに作っていますが、実際にやってみると面白いですよ。
何より、うまく動いた時の体験は素晴らしいものです。
最初は、揃えるものも何かと多くなりますが、一度揃えてしまえば、いろんなものが作れるようになります。
ぜひ、皆さんもチャレンジしてみてくださいね!
今回の記事は以上になります。
最後までご覧いただきありがとうございました。
これからはじめる方にお勧めの参考図書はこちら!
アイデアをカタチにする! M5Stack入門&実践ガイド | M5Stack&M5StickCではじめるIoT入門 | みんなのM5Stack入門 | ESP32&Arduino 電子工作 プログラミング入門 | みんなのArduino入門 |
確認する | 確認する | 確認する | 確認する | 確認する |
記事内でご紹介した商品はこちら!
Cooler Master MasterFan SF120M ARGB
防振モーター、振動を抑えるダンピングフレームデザインなど、工業用グレードの素材を用いていて、高性能、安定性、耐久性を実現した、冷却ファン製品です。
ファン側で回転モードを3モード選択でき、高回転モードで、5.5-22 dBという静けさを実現しています。
風量も62 CFM (Max)とかなりいいです。このファンに交換することで、自作PCをさらに静かにできますよ!交換してみてはいかがでしょうか?
M5Stack Core2 開発キット
タッチスクリーン、マイク、IMUを使うことができ、従来のM5Stackよりも多機能なモデルです。 バッテリーも搭載しています。一台でいろいろと遊べる機器なのでおススメです!
ブレッドボード用DCジャックDIP化キット(完成版)
型番:AE-DC-POWER-JACK-DIP
ピンヘッダ
入手元:秋月電子
型番:PH-1x40SG(6.1/6.1)
両端のピンが長いものになります。冷却FANと接続する側のピンとして使います。
40ピンありますので、4ピン分を切って使います。
秋月電子さんの通販サイトURLはこちらです。
M5Stack の他の記事はこちらからどうぞ!
すけろく ううーん。 どうしたものか。 げんろく どうした? 浮かない顔をして。 すけろく ChatGPTをマイコンから使ってみたいのだが、 どうすればよいのかわからなくてな。 げんろく そうか。 ChatGPTもAPIをもっているから、マイコンで文章を作って ChatGPT APIに送信すればよいと思うぞ。 今回はそのあたりを使ってみようか! 皆さん、「ChatGPT」は活用されていますか? 私 […]
すけろく 最近メダカの飼育が流行っているらしいの~ げんろく そうだな。日本の水質にも適用能力が高い魚だからな。 我が家でも飼育してみるか。 すけろく そうなると、メダカに快適な環境を整える必要があるな。 げんろく よし。 まずは、メダカが快適に過ごせる水温か確認するぞ! 皆さん、お家で何か動植物を飼っていますか? 今回、縁あって、げんろく宅にも「メダカ」さんがやってくることになりました。 メダカ […]
すけろく んーどうしたものか。 げんろく どうした? 深刻な顔をして。 すけろく M5Stackにプログラムを書き込んだら 起動しなくなってな。 電源ON/OFFでも無理なのだ。 げんろく 書き込んだプログラムか、バッテリーの 過放電か。工場出荷時に戻してみてはどうだ? この記事では、M5Stackにプログラムを書き込んだ結果、うまく動作しなくなった場合の対処方法を記載します。 ご紹介するのは「工 […]
すけろく んー。 どうしたものか… げんろく どうした?深刻な顔をして。 すけろく 「城の守りを固めるため、敵の接近を検知してみせよ!」 と殿から宿題をもらっての。 げんろく なるほど、それならば人感センサーを使ってみてはどうか? 敵が勝手に部屋に入ったりするのを検知できるぞ! この記事では、M5Stackと、「人感センサー(HC-SR501)」を使って、人が近づいた際に検知して反応するプログラム […]
すけろく 前回は、RTC非搭載のM5Stackでの時刻同期を行ったが、 RTC搭載の場合はどうするのかな。 げんろく うむ。 RTCは、M5Stack Core 2 などで搭載されている。 ちょっと、プログラム内容が異なるから、実装してみるか。 この記事では、M5StackをアクセスWi-Fiアクセスポイントに接続し、インターネットの時刻サービス(NTPサーバー)と時刻を同期する方法 […]
すけろく ん~。 げんろく どうした難しい顔をして。 すけろく M5Stackのディスプレイにいろいろ描画しているのだが。 画像がチラチラしてみずらいのだ。 げんろく 描画タイミングとか、メモリを使うとか しておるのか? すけろく ・・・ げんろく 今回は、そのあたりを見てみようか。 この記事では、Arduino IDEを使ってM5Stackのディスプレイに文字や画像を表示する際のちらつきや、安定 […]
すけろく M5StackでPCファンの回転を制御することはできたが LEDの点灯制御はまだだな。 げんろく そうだったな。 LEDの点灯制御もM5Stackで行うことができるぞ! 実際に動かしてみよう この記事では、M5StackとLED搭載のパソコン用冷却ファンを使ったLED発光制御の方法について紹介します。 前回は、M5Stackで冷却ファンを使った回転速度制御をおこないましたが、今回はL […]
すけろく M5Stackを使って、モーターをコントロールしてみたいな。 げんろく それならば、モーターコントロールを学べるPC冷却ファン制御というものをやってみるか。 すけろく ん? パソコン用の冷却ファンをコントロールできるのか? げんろく 仕組みはモーターと同じだからな。 とにかくやってみよう! この記事では、M5Stackとパソコン用の冷却ファンを使って回転速度制御を行います。 […]
すけろく 標準ライブラリでの画面描画はできた。 しかし、M5Stack向けのライブラリなので 汎用性がないな。 げんろく たしかに。 M5StickCや他のAruduino機器でも使えるものが必要だな。 すけろく そのようなものがあるのか? げんろく よし。今回は、汎用的に使えるライブラリを紹介しよう。 lovyan03さんが公開されている「Lovyan_GFX」だ。 この記事では、Arduino […]
すけろく M5Stackも時刻同期や日本語表示までできた。 うまくいっておるな。 げんろく ああ、「M5Stack」でもノウハウがたまってきている。 すけろく そういえば、大きな画面を活かしたものを 作ってみたいと思うのだが。 げんろく わかった。今回はM5Stackのディスプレイにおける 画面制御まわりを見てみるか。 この記事では、Arduino IDEを使ってM5Stackのディスプレイに文字 […]
すけろく M5Stackに英語表記で時計を表示することは 前回の記事で行えたが、日本語は表示できないのか? げんろく いや、方法はあるぞ。 eFontライブラリをM5Stackで実行できるように 修正して提供してくれているものを使うのだ。 すけろく ぜひ、やってみたいの~ この記事では、Arduino IDEを使ってM5Stackのディスプレイに日本語を表示させるための方法を紹介します。 今回使用 […]
すけろく 前回は、Wi-Fiアクセスポイントに 接続することができた。 次は時刻同期かな。 げんろく うむ。 時刻同期は、全ての基本だからな。 実装してみるか。 この記事では、M5StackをアクセスWi-Fiアクセスポイントに接続し、インターネットの時刻サービス(NTPサーバー)と時刻を同期する方法について紹介します。 M5Stackは、内蔵タイマであるRTCが搭載されているモデル(例:M5St […]
すけろく M5Stackは、Wi-Fi機能がついているのか。 げんろく ESP32のおかげだな、2.4GhzのWi-Fi接続に 対応している。 すけろく では、早速Wi-Fi接続してみよう。 げんろく せっかくなので、microSDから読みだした Wi-Fi アクセスポイント情報を使って 接続してみよう! この記事では、M5Stackに実装されているWi-Fi機能を使って、Wi-Fiルータに接続す […]
すけろく M5StackとほかのWebサービスなどとの データのやり取りにJSON形式を使いたいのだが。 げんろく うむ。 M5StackでもJSON形式が使えるか試してみるか。 この記事では、Arduino IDEを使ってM5StackのプログラムでJSON形式を取り扱う方法を紹介します。 JSON形式データは、Webサービスやほかのコンピュータとのやり取りにも使用される汎用形式なので、取り扱う […]
すけろく M5Stackは、各モデル共通でmicroSDカードの スロットが搭載されているな! げんろく そうだな。microSDカードへの読み書きが できるのでログの記録や、データ読み出しからの 画面表示ができる。 すけろく ファイルの中身を画面に表示することができるのか! それはいいな! げんろく では、手始めにmicroSDカードに入っている テキストファイルの中身を表示してみよう。 この記 […]
すけろく M5StackをArduino IDEで使ってみたいのだが。 げんろく ライブラリも揃っているしな。 開発する前に、M5Stack用の設定をArduino IDEに 施す必要がある。 すけろく M5Stack開発ボードの登録とライブラリの インストールだな。 げんろく わかってきたではないか。 新しい機器をArduino IDEで使う場合の初期設定だな。 この記事では、Arduino I […]
すけろく 今回はM5Stackを取り上げたいと思うがどうだ? げんろく なんだ、急にやる気を出して。 どういった風の吹き回しだ? すけろく M5Stickとは異なり、いろいろな種類のモデルがあって 良さそうだからな。 げんろく 開発用モデルから、実用を意識したモデルまで 様々だからな。 面白い、やってみるか! 今回の記事では、「M5Stack」を各モデルを比較して、用途に応じた使い方をまとめていま […]