注目キーワード

【Arduino】M5StickCで扇風機!できるファンコントローラ!

この記事では、M5StickCと冷却ファンを使って回転速度制御をしていきます。

M5StickCから冷却ファンの回転を制御できれば、扇風機のように、自由に風量を変えることができます!

今回の冷却ファンは次のものを使います。
パソコン用の120㎜冷却ファンでLED搭載なので光らせることができます。
LEDを光らせる方法については次回の記事で掲載予定です。

 

また今回から、電子回路を作って動かしてみます。

といっても、はんだ付けはしません。「ブレッドボード」を使います。

使用する部品もはんだ付けしなくても利用できるものを使用しています。
ブレッドボードや電子回路は、はじめて登場しますので、次の順で説明していきますね。

  • ブレッドボードってなに?
  • 電源を準備する
  • 電子回路をつくる
  • ファンの回転を制御するための仕組みを知る(PWM制御)
  • プログラムを作って実行してみる

完成した際のイメージはこんな感じです。
プログラムで10秒おきにファンの回転速度を変えています。
おまけに画面上にファンの回転速度のメータを表示してみましょう!

 

ブレッドボードってなに?

電子回路を試作する際に便利なのがブレッドボードです。表面にランド(穴)が開いていてある規則に沿ってそのランドが内部でつながっています。このランドに抵抗やコンデンサ、センサーなどの電子部品を差し込むことで電子回路を作ることができるものです。

標準的なブレッドボードのランドのつながり方は、次の図のとおりです。

注意点として上下にある「+」と「ー」の内外が逆になっていることです。
意識してないと意図しない接続になって危険ですので必ず確認するようにしましょう!

また、ご紹介したブレッドボード以外にもランド間の接続が異なるものがありますので、ご準備されたブレッドボードの説明書をよく読んで使ってくださいね!

ブレッドボードのおすすめ

サンハヤト ブレッドボード SRH-21CE
安心のサンハヤト。両端に「+」と「ー」のラインがあります。電圧の違う回路を扱う場合に便利なブレッドボードです。最初はこれが一枚あるとよいと思います。Amazonで確認
[スイッチサイエンス] 普通のブレッドボード
コスパ最強のブレッドボード。両端に「+」と「ー」のラインがあります。よく3枚で〇〇〇円というのはありますが、1枚から買えて価格も抑えてあるのでよいと思います。価格も良心的です。Amazonで確認
 
げんろく
上記のように単品で購入していくのもいいですが、
次の商品のようなキットを1つ購入しておくとよいですよ!
SunFounder Raspberry pi スターター電子工作キット
Raspberry pi用と書かれていますが、Arduinoでも使えます。ブレッドボードやケーブルなど、一式が入っています。
これを一式購入して、不足分を追加購入する形がおススメです。
Amazonで確認

 

電源を準備する

冷却ファンの仕様を調べる

冷却ファンの仕様は次の通りです。

FAN仕様
・ファン速度:650-1800 ±10% (RPM)
・寸法:120 x 120 x 25m
・ベアリング:ライフルベアリング
・ファン電源コネクタ:4-Pin PWM
・ファン定格電圧:12 VDC
・ファン定格電流:0.25A
120㎜FANはFALED用のコネクタを2つ持っています。FAN用のコネクタは次のとおり、電源供給と回転制御信号、回転数センサー信号のための4つの線で構成されています。
Cooler Master MasterFan MF120 HaloのFANコネクタ
Cooler Master MasterFan MF120 HaloのFANコネクタ
左からGND(ー)、Vin(+)、回転センサー、回転制御という構成になっています。コネクタの向きはコネクタの上部にある突起部分で判断します。突起部分があるほうがGND側です。
FAN側
回路基板側
GND(ー)
GND
Vin(+)
12V Vin(+)
回転センサー
回転センサー
信号5V
回転制御
 
 
 
 
FAN回転制御
信号(PWM)
5V
FAN用のコネクタは、電源用12Vと信号用5Vの2つの電圧が必要であるとわかります。
12Vのほうは比較的大きな電流(250mA)が流れることもあり、電源アダプタから直接取得します。
信号用5Vは、M5StickCと接続して使います。(M5StickCは、5Vで動作します。)
 

冷却ファン動作用の電源

この冷却ファンを回すためには12Vの電圧が必要です。
そのため、12Vの電源アダプターとDCジャックキットを使って電源を構成します。

次のものを使います。

電源アダプター

SUCCUL ACアダプター 12V 1.5A 大手メーカーOEM社製品 センタープラス スイッチング式 最大出力18W 出力プラグ外径5.5mm(内径2.1mm)PSE取得品
12V1.5A出力の電源アダプターです。PSEマーク認証がとられているものを選定しています。この商品はセンタープラスの電源アダプタです。
Amazonで確認

ブレッドボード用DCジャックDIP化キット(完成版)

入手元:秋月電子
型番:AE-DC-POWER-JACK-DIP
DCジャックをユニバーサル基板や、ブレッドボードにつけられるようにするキットです。今回は完成品を使用します。この商品はセンタープラスのDCジャックです。
秋月電子さんの通販サイトURLはこちらです。
 

電子回路をつくる

いよいよブレッドボードに部品をつけて電子回路を作成します。
回路は、次の図のとおりにします。
ブレッドボード上に回路を組むと次のようになります。
M5StickC自体の電源は、USBケーブルでパソコンやモバイルバッテリーなどとつなぎます。
回路作成に自信のない方は、パソコンではなくモバイルバッテリーなどから電源を引いたほうが良いかもしれません。
(画像の注意書きにもありますが、配線を間違えるとM5StickCなどが故障し、接続しているパソコンなどにも影響が出るので十分に注意してください。)
ブレッドボード以外に、各部品をつなぐケーブルとジャンパワイヤ/線を準備します。
FAN用コネクタ接続用 ピンヘッダ(1×4Pin)
レッドボード上の12VとGNDの結線(上図の実線部分) ジャンパワイヤ(4つ)

M5StickCとブレッドボード接続

ジャンパ線(2本)

 

ピンヘッダ

秋月電子さんのロングピンヘッダ1×40
両端ロングピンヘッダ 1×40 (40P 6.1)
入手元:秋月電子
型番:PH-1x40SG(6.1/6.1)
両端のピンが長いものになります。M5StickCと接続する側のピンとして使います。40ピンありますので、4ピン分を切って使います。片側には回路基板からのケーブルをはんだ付けします。
秋月電子さんの通販サイトURLはこちらです。

ジャンパワイヤ/ジャンパ線

サンハヤト ジャンプワイヤキット SKS-100 単線タイプでよく使用する短めジャンプワイヤのセット品
ブレッドボード上に配線する際に便利なワイヤです。単線タイプなのでボードに密着させて配線できるので線がごちゃごちゃせず、わかりやすくなります。
Amazonで確認

サンハヤト ジャンプワイヤ SPP-200 200ミリ
ブレッドボードと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信号の設定を行います。
Channel:PWM信号を発信するチャネルの指定(uint8_t)
FREQ:PWM信号の周波数を指定(double)
BIT:分解能を~16ビットで指定(uint8_t)

ledcAttachPin(GPIO, Channel);

指定したGPIOにチャネルを割り当てます。
ここで指定したチャネルを上記のledcSetupで指定します。
※M5StickCでPWMが使用できるGPIOは決まっています。
 (可能GPIO:G26、G0、G32、G33)

PWMの周波数におけるパルス幅をどのくらいの精度で制御するかを指定するものです。
例えばPWMの周波数を100Hz(周期:1ms)として、分解能を8ビットと指定します。
8ビットは256とおり表すことができるので、1ms÷256=0.0039ms=3.9μs単位となります。
デューティ比:50%にしたい場合は「128」を75%にしたい場合は「192」を指定することになります。より細かく制御する場合は16ビットまで指定できるようです。

PWM開始設定

関数 説明
ledcWrite(channel, Duty)

PWM信号の開始をします。
Chanel:PWM信号を発信するチャネルの指定(uint8_t)
Duty:デューティ比を分解能に応じて指定(uint32_t)

 

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への書き込み

  1. 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
  2. 「ツール」メニューから「ボード」情報を確認し、M5StickCであるか確認します。
    この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
  3. 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
  4. 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。

 

 プログラム実行結果

M5StickCのディスプレイに時計が表示されれば成功です。

 

さて、これで冷却ファンの回転速度をM5StickCを使って制御できました。
今回の記事は以上になります。
次回は、ちょっと部品と電源を追加して、冷却ファンの一分間の回転数(rpm)を測定してみます。

今回使用したマイコンは・・・

M5StickC
ディスプレイ付きのマイコンです。非常にサイズが小さいですがディスプレイも搭載しており、使いやすいです。Amazonで確認
 
げんろく
ディスプレイ付きとは思えない小さいサイズのマイコンです。センサーと組み合わせてIoTデバイスとして活躍できる機能を持っています。