この記事では、M5StickCと冷却ファンを使って回転速度制御をしていきます。
M5StickCから冷却ファンの回転を制御できれば、扇風機のように、自由に風量を変えることができます!
今回の冷却ファンは次のものを使います。
パソコン用の120㎜冷却ファンでLED搭載なので光らせることができます。
LEDを光らせる方法については次回の記事で掲載予定です。
Cooler Master MasterFan MF120 Halo
また今回から、電子回路を作って動かしてみます。
といっても、はんだ付けはしません。「ブレッドボード」を使います。
使用する部品もはんだ付けしなくても利用できるものを使用しています。
ブレッドボードや電子回路は、はじめて登場しますので、次の順で説明していきますね。
- ブレッドボードってなに?
- 電源を準備する
- 電子回路をつくる
- ファンの回転を制御するための仕組みを知る(PWM制御)
- プログラムを作って実行してみる
完成した際のイメージはこんな感じです。
プログラムで10秒おきにファンの回転速度を変えています。
おまけに画面上にファンの回転速度のメータを表示してみましょう!
ブレッドボードってなに?
電子回路を試作する際に便利なのがブレッドボードです。表面にランド(穴)が開いていてある規則に沿ってそのランドが内部でつながっています。このランドに抵抗やコンデンサ、センサーなどの電子部品を差し込むことで電子回路を作ることができるものです。
標準的なブレッドボードのランドのつながり方は、次の図のとおりです。
注意点として上下にある「+」と「ー」の内外が逆になっていることです。
意識してないと意図しない接続になって危険ですので必ず確認するようにしましょう!
また、ご紹介したブレッドボード以外にもランド間の接続が異なるものがありますので、ご準備されたブレッドボードの説明書をよく読んで使ってくださいね!
ブレッドボードのおすすめ
安心のサンハヤト。両端に「+」と「ー」のラインがあります。電圧の違う回路を扱う場合に便利なブレッドボードです。最初はこれが一枚あるとよいと思います。Amazonで確認
コスパ最強のブレッドボード。両端に「+」と「ー」のラインがあります。よく3枚で〇〇〇円というのはありますが、1枚から買えて価格も抑えてあるのでよいと思います。価格も良心的です。Amazonで確認
次の商品のようなキットを1つ購入しておくとよいですよ!
Raspberry pi用と書かれていますが、Arduinoでも使えます。ブレッドボードやケーブルなど、一式が入っています。
これを一式購入して、不足分を追加購入する形がおススメです。
Amazonで確認
電源を準備する
冷却ファンの仕様を調べる
冷却ファンの仕様は次の通りです。
・ファン速度:650-1800 ±10% (RPM)
・寸法:120 x 120 x 25m
・ベアリング:ライフルベアリング
・ファン電源コネクタ:4-Pin PWM
・ファン定格電圧:12 VDC
・ファン定格電流:0.25A
信号5V
信号(PWM)
5V
12Vのほうは比較的大きな電流(250mA)が流れることもあり、電源アダプタから直接取得します。
冷却ファン動作用の電源
この冷却ファンを回すためには12Vの電圧が必要です。
そのため、12Vの電源アダプターとDCジャックキットを使って電源を構成します。
次のものを使います。
電源アダプター
12V1.5A出力の電源アダプターです。PSEマーク認証がとられているものを選定しています。この商品はセンタープラスの電源アダプタです。
Amazonで確認
ブレッドボード用DCジャックDIP化キット(完成版)
型番:AE-DC-POWER-JACK-DIP
秋月電子さんの通販サイトURLはこちらです。
電子回路をつくる
回路は、次の図のとおりにします。
M5StickC自体の電源は、USBケーブルでパソコンやモバイルバッテリーなどとつなぎます。
(画像の注意書きにもありますが、配線を間違えるとM5StickCなどが故障し、接続しているパソコンなどにも影響が出るので十分に注意してください。)
FAN用コネクタ接続用 | ピンヘッダ(1×4Pin) |
レッドボード上の12VとGNDの結線(上図の実線部分) | ジャンパワイヤ(4つ) |
M5StickCとブレッドボード接続 |
ジャンパ線(2本) |
ピンヘッダ
入手元:秋月電子
型番:PH-1x40SG(6.1/6.1)
両端のピンが長いものになります。M5StickCと接続する側のピンとして使います。40ピンありますので、4ピン分を切って使います。片側には回路基板からのケーブルをはんだ付けします。
秋月電子さんの通販サイトURLはこちらです。
ジャンパワイヤ/ジャンパ線
ブレッドボード上に配線する際に便利なワイヤです。単線タイプなのでボードに密着させて配線できるので線がごちゃごちゃせず、わかりやすくなります。
Amazonで確認
ブレッドボードとM5StickCなどのコネクタを持つ部品をつなぐ配線材です。オス(pin)ーオス(pin)の200mmの線になります。いろいろな色があるので配線をわかりやすく分けられます。
Amazonで確認
ファンの回転を制御するための仕組みを知る(PWM制御)
どのようにして動きを調整するのかな?
回路作成に集中して、大切なことを語ってなかったござるな。
PWM制御とはなにか
みなさんはPWM(Pulse Width Modulation)という言葉を聞いたことはありますか?
私も電子工作をはじめた頃は、「なんじゃそれ?」という状態でした。
でも、いろいろな場所でこのPWMにより、モーター制御などが行われています。
単純にいうと、「電気のオンとオフの間隔によって電力を制御する」というものです。
勉強し始めの頃、よくお世話になった東芝さんのサイトには以下のように書かれています。
オンの時間幅を変化させる電力制御方式
イメージ的には次のような繰り返しの波のことです。
また、ONの状態の幅を「パルス幅」といいます。
例えばON状態のときに電圧(V)で電流(A)が流れるとすると
この時の一定時間あたりの電力量(W=V×A)はON状態部分の面積の和になります。
例えば前図のパルス幅(ON状態)を2倍にすると次のような波形になると予想できますよね。
この時、一定時間あたりの電力量も元の2倍になります。
ここでON状態の立ち上がりから次のON状態の立ち上がりまでに注目します。
この時間のことを「周期」といいます。
この周期が1秒間あたりに何回発生するかを「周波数」といいます。
例えば100Hzの周波数 は、1秒間に周期が100回発生することから周期は1ms(ミリ秒)になります。
ここで注意しておきたいのは、この情報だけではパルス幅はわからないということです。
パルス幅を周期に対してどのくらいの割合にするかを表す比率を「デューティ比(%)」といいます。
デューティ比の変化による信号のイメージは次のイメージになります。
周波数を一定にした状態でデューティ比を変化させることでパルス幅を増減でき、実行電圧や電力を変化させることができます。
この制御方法がPWM制御です。
冷却ファンもPWM制御で回転速度を変えられる
冷却ファンもモーターなどと同じような仕組みになっているため、PWM制御で実行電圧や電力を変化させることで回転速度を変化させることができます。
デューティ比が低い:回転速度が遅くなる
デューティ比が高い:回転速度が速くなる
となります。
M5StickCでのPWM制御の設定方法
M5StickCは、ESP32というマイクロコンピュータが入っています。これはArduinoのライブラリが基本としているマイクロコンピュータとはちがいます。
そのため、M5StickCでは以下のクラスを使用してPWM制御の設定やデューティ比の変更を行います。
PWM関連設定
関数 | 説明 |
ledcSetup(Channel, FREQ, BIT) |
PWM信号の設定を行います。 |
ledcAttachPin(GPIO, Channel); |
指定したGPIOにチャネルを割り当てます。 |
例えばPWMの周波数を100Hz(周期:1ms)として、分解能を8ビットと指定します。
8ビットは256とおり表すことができるので、1ms÷256=0.0039ms=3.9μs単位となります。
デューティ比:50%にしたい場合は「128」を75%にしたい場合は「192」を指定することになります。より細かく制御する場合は16ビットまで指定できるようです。
PWM開始設定
関数 | 説明 |
ledcWrite(channel, Duty) |
PWM信号の開始をします。 |
M5StickCから冷却ファンの回転を制御してみよう
それではPWM制御を使用してM5StickCから冷却ファンの回転速度を変化させてみましょう。
今回は、後での使いまわしを考慮して、PWM回転速度制御用の関数Send_PWM()を作っています。
PWMの設定は次の通りです。
- 起動時は、デューティ比は0%に設定
- M5StickCのディスプレイ横にあるボタンを押すとデューティ比が
0%→25%→50%→75%→100%という形で変化 - 周波数は25KHz、分解能は8ビット
今回使う冷却ファンの回転速度は、650-1800 rpm ± 10%なので、
デューティ比0%:650rpm、100%:1800rpm付近で回転します。
おまけで、M5StickCのディスプレイにファン回転速度を簡単なボリュームイメージで表現し、横にデューティ比を表示するようにしています。
冷却ファン回転速度制御プログラム
Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。
Arduino IDE スケッチ例
M5Stack/M5StickCへの書き込み
- 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
- 「ツール」メニューから「ボード」情報を確認し、M5StickCであるか確認します。
この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。 - 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
- 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。
プログラム実行結果
M5StickCのディスプレイに時計が表示されれば成功です。
さて、これで冷却ファンの回転速度をM5StickCを使って制御できました。
今回の記事は以上になります。
次回は、ちょっと部品と電源を追加して、冷却ファンの一分間の回転数(rpm)を測定してみます。
Cooler Master MasterFan MF120 Halo
これからはじめる方にお勧めの参考図書はこちら!