- IoTベースのシーリングファンレギュレーターの動作
- ACファン速度制御回路に必要な材料
- ACファンレギュレータ制御回路
- IoT制御シーリングファンレギュレーターのPCB設計
- Firebaseアカウントの設定
- NodeMCUでファンレギュレータを制御するArduinoコード
- MIT AppInventorを使用したファンレギュレーターアプリの構築
- ESP32ベースのタッチセンサー回路のテスト
- さらなる機能強化
この記事では、ファンへの電流の流れを制限することでファンの速度を制御できるACファンレギュレータ回路を構築しています。ACシーリングファンレギュレータという用語は一口なので、これからは単にファンレギュレータと呼びます。ファンレギュレータ回路は、ニーズに応じてACファン/モータの速度を増加または減少させるために使用される重要な成分です。数年前は、従来の抵抗型ファンレギュレーターと電子レギュレーターのどちらかを選択していましたが、現在はすべて電子ファンレギュレーター回路に取って代わられています。
前回の記事では、白熱電球の明るさを制御し、ファンの速度を制御できるArduinoを使用してAC位相角制御回路を構築する方法を示しました。これにより、ノッチを上げることができます。この記事では、IoTベースのACシーリングファンレギュレータ回路を構築します。これは、Androidアプリケーションの助けを借りてシーリングファンの速度を制御 できるようになります。
IoTベースのシーリングファンレギュレーターの動作
ファンレギュレータ回路は、AC正弦波の位相角を変更するか、簡単に言えばトライアックを正確に制御することにより、ACシーリングファンの速度を制御できる単純な回路です。555タイマーとPWMを使用したAC位相角制御の記事でACファンレギュレータ回路のすべての基本的な動作について説明したように、回路の実際の構築に集中します。また、このトピックについて詳しく知りたい場合は、ArduinoとTRIACプロジェクトを使用したACライトディマーに関する記事も確認してください。
上記の基本的なブロック図は、回路が実際にどのように機能するかを示しています。前に述べたように、Firebase IoTとNodeMCUを使用してPWM信号を生成し、PWM信号 はMOSFETのゲートを制御するローパスフィルターを通過し、その後555タイマーが制御しますオプトカプラーの助けを借りた実際のトライアック。
この場合には、アンドロイドアプリ変更の値firebaseDB ESPとは、常にに起こっているすべての変更をチェックしているDBの任意の変化がプルダウンされることを発生し、値をPWM信号に変換された場合
ACファン速度制御回路に必要な材料
下の画像は、この回路を構築するために使用された材料を示しています。これは非常に一般的なコンポーネントで作られているため、リストされているすべての材料を地元のホビーショップで見つけることができます。
また、デモンストレーションプロジェクト以降、コンポーネントをタイプと数量とともに以下の表にリストしました。これには、単一のチャネルを使用しています。ただし、回路は要件に応じて簡単にスケールアップできます。
- ネジ留め式端子5.04mmコネクタ-2
- オスヘッダー2.54mmコネクタ-1
- 56K、1W抵抗-2
- 1N4007ダイオード-4
- 0.1uF、25Vコンデンサ-2
- AMS1117電圧レギュレータ-1
- 1000uF、25Vコンデンサ-1
- DC電源ジャック-1
- 1K抵抗-1
- 470R抵抗器-2
- 47R抵抗器-2
- 82K抵抗-1
- 10K抵抗-5
- PC817オプトカプラー-1
- NE7555IC-1
- MOC3021オプトトライアックドライブ-1
- IRF9540MOSFET-1
- 3.3uFコンデンサ-1
- 接続線-5
- 0.1uF、1KVコンデンサ-1
- ESP8266(ESP-12E)マイクロコントローラー-1
ACファンレギュレータ制御回路
ための概略のIoTファンレギュレータ回路は、この回路は非常に単純であり、位相角制御を達成するために、一般的なコンポーネントを使用して、以下に示されています。
この回路は、非常に注意深く設計されたコンポーネントで構成されています。それぞれを見て、各ブロックについて説明します。
ESP8266(ESP-12E)Wi-Fiチップ:
これは私たちの回路の最初の部分であり、私たちが多くのことを変更した部分です。他の部分はまったく同じままです。つまり、前の記事に従っている場合です。
このセクションでは、ピンEnable、Reset、およびGPIO0をプルアップしました。また、チップのデータシートで推奨されているGPIO15とGroundピンをプルダウンしました。プログラミングに関しては、TX、RX、およびチップを非常に簡単にプログラミングできるグランドピンを露出する3ピンヘッダーを配置しました。また、GPIO0をグランドに接続するための触覚スイッチを配置しました。これは、ESPをプログラミングモードにするために必要な手順です。PWM信号を生成する出力としてGPIO14ピンを選択しました。
注意!プログラミング時に、ボタンを押して、DCバレルジャックでデバイスに電力を供給する必要があります。
ゼロ交差検出回路:
まず、私たちのリストには、2つの56K、1W抵抗器と4つの1n4007ダイオードおよびPC817オプトカプラーで作られたゼロ交差検出回路があります。そして、この回路は、555タイマーICにゼロ交差信号を提供する役割を果たします。また、トライアックセクションでさらに使用するために、位相とニュートラル信号をテープで止めました。
AMS1117-3.3V電圧レギュレータ:
AMS1117電圧レギュレータは回路に電力を供給するために使用され、回路は回路全体に電力を供給する責任があります。さらに、AMS1117-3.3ICのデカップリングコンデンサとして2つの1000uFコンデンサと0.1uFコンデンサを使用しました。
NE555タイマー付き制御回路:
上の画像は555タイマー制御回路を示しています。555は単安定構成で構成されているため、ゼロ交差検出回路からのトリガー信号がトリガーに当たると、555タイマーは抵抗を使用してコンデンサーの充電を開始します(一般的に)しかし、私たちの回路には抵抗の代わりにMOSFETがあり、MOSFETのゲートを制御することによって、コンデンサに流れる電流を制御します。そのため、充電時間を制御し、555タイマーの出力を制御します。 。
トライアックとトライアック-ドライバー回路:
トライアックは、実際にオンとオフを切り替えるメインスイッチとして機能し、AC信号の出力を制御します。MOC3021オプトトライアックドライブを使用してトライアックを駆動すると、トライアックを駆動するだけでなく、光絶縁、0.01uF 2KV高電圧コンデンサを提供し、47R抵抗がスナバ回路を形成して回路を保護します。誘導性負荷に接続されたときに発生する高電圧スパイク。スイッチされたAC信号の非正弦波の性質がスパイクの原因です。また、力率の問題を担当していますが、それは別の記事のトピックです。
ローパスフィルターとPチャネルMOSFET(回路の抵抗として機能):
82K抵抗と3.3uFコンデンサは、Arduinoによって生成された高周波PWM信号を平滑化する役割を担うローパスフィルタを形成します。前述のように、PチャネルMOSFETは、コンデンサの充電時間を制御する可変抵抗器として機能します。それを制御するのは、ローパスフィルターによって平滑化されるPWM信号です。
IoT制御シーリングファンレギュレーターのPCB設計
IoTシーリングファンレギュレータ回路のPCBは、片面基板で設計されています。私はEaglePCB設計ソフトウェアを使用してPCBを設計しましたが、任意の設計ソフトウェアを使用できます。私のボードデザインの2D画像を以下に示します。
すべてのコンポーネント間で適切な接地接続を行うために、十分な接地充填が使用されます。3.3VDC入力と220ボルトAC入力は左側にあり、出力はPCBの右側にあります。ガーバーと一緒にイーグルの完全なデザインファイルは、以下のリンクからダウンロードできます。
- シーリングファンレギュレータ回路のPCBデザイン、GERBER、PDFファイル
手作りPCB:
便宜上、PCBの手作りバージョンを作成しました。これを以下に示します。
これで、回路図に従ってハードウェアの準備が整いました。次に、AndroidアプリケーションとGoogleFirebaseを準備する必要があります。
Firebaseアカウントの設定
次のステップでは、Firebaseアカウントを設定する必要があります。すべての通信はfirebaseアカウントを介して行われます。Firebaseアカウントを設定するには、Firebaseのウェブサイトにアクセスして[開始]をクリックします。
クリックしたら、Googleアカウントでログインする必要があります。
ログインしたら、[プロジェクトの作成]ボタンをクリックしてプロジェクトを作成する必要があります。
これを行うと、上の画像のようなページにリダイレクトされます。プロジェクトの名前を入力し、[続行]をクリックします。
もう一度、[続行]をクリックします。
完了したら、チェックボックスをクリックしていくつかの利用規約に同意する必要があります。次に、[プロジェクトの作成]ボタンをクリックする必要があります。
すべてを正しく実行すると、しばらくすると、次のようなメッセージが表示されます。完了すると、Firebaseコンソールは次の画像のようになります。
ここから2つ集める必要があります。これを行うには、作成したばかりのプロジェクトの名前をクリックする必要があります。私にとってはCelingFanRegulatorです。クリックすると、下の画像のようなダッシュボードが表示されます。
[設定]、[プロジェクト設定]の順にクリックすると、表示されるページは次の画像のようになります。
サービスアカウント-> データベースシークレットを クリックし ます 。
データベースシークレットをコピーし、後で使用できるようにどこかに保管します。
次に、リアルタイムデータベースをクリックして、URLをコピーします。また、後で使用するためにそれを保管してください。
そして、それがすべてです、物事の火の基地側にあります。
NodeMCUでファンレギュレータを制御するArduinoコード
簡単なArduinoコードがfirebaseとESP-12Eモジュール間の通信を処理します。回路とコードの説明を以下に示します。まず、必要なすべてのライブラリを定義します。指定されたリンクから次のライブラリをダウンロードできます。ArduinoJSONライブラリおよびFirebaseArduinoライブラリ
#include
FirebaseArduino ライブラリを使用して Firebaseとの 通信を確立します。
//例を実行するようにこれらを設定します。#define FIREBASE_HOST "celingfanregulator.firebaseio.com" #define FIREBASE_AUTH "1qAnDEuPmdy4ef3d9QLEGtYcA1cOehKmpmzxUtLr" #define WIFI_SSID "your SSID" #define WIFI_PASSWORD "your pass"
次に、Firebaseアカウントを作成するときに以前に保存したFirebaseホストであるfirebaseauth を定義しました。次に、ルーターのSSIDとパスワードを定義しました。
文字列Resivedata; #define PWM_PIN 14;
次に、すべてのデータが格納される文字列型変数 Resivedata を定義し、PWM出力を取得する PWM_PIN も定義し ました 。
次に、 void setup() セクションで、必要なことを行います。
Serial.begin(9600); pinMode(PWM_PIN、OUTPUT); WiFi.begin(WIFI_SSID、WIFI_PASSWORD); Serial.print( "接続中"); while(WiFi.status()!= WL_CONNECTED){Serial.print( "。"); delay(500); } Serial.println(); Serial.print( "接続済み:"); Serial.println(WiFi.localIP()); Firebase.begin(FIREBASE_HOST、FIREBASE_AUTH); Firebase.setString( "Variable / Value"、 "FirstTestStrig");
まず、 Serial.begin() 関数を呼び出してシリアルを有効にします。次に、PWMピンをOUTPUTに設定しました。 WiFi.begin() 関数を使用してWi-Fi接続を開始し、関数でSSIDとパスワードを渡します。 whileループ で接続ステータスを確認し、接続 したら ループ を解除して続行します。次に、接続されたメッセージをIPアドレスで出力します。
最後に、我々はfirebaseとの通信を開始 Firebase.begin() 関数と我々が通過 FIREBASE_HOST と FIREBASE_AUTH 我々は以前に定義したパラメータを。そして、セットアップ関数の終わりを示す setString() 関数を使用して文字列を 設定します。 ボイドループ() セクション、
Resivedata = Firebase.getString( "Variable / Value"); Serial.println(Resivedata); AnalogWrite(PWM_PIN、map(Resivedata.toInt()、0、80、80、0)); Serial.println(Resivedata); delay(100);
データがFirebaseに保存されているVariable / Valueを使用して getString() 関数を呼び出します。例は、次の画像のようになります-
次に、デバッグのためだけに値を出力します。次に、map関数を使用して値をマップします。0〜80の範囲内でMOSFETのゲートを正確に制御でき、RCローパスフィルターがこの値にある程度関与するため、80が使用されます。この範囲内で、位相角制御回路は正確に動作します。この値をハードウェアとソフトウェアのスイートスポットと呼ぶことができます。このプロジェクトを行っていて問題に直面している場合は、価値を試して結果を自分で判断する必要があります。
その後、 analogWrite() 関数を使用してデータをフィードし、PWMを有効にします。その後、 Serial.println() 関数を再度使用し て結果を確認し、最後に遅延関数を使用してプログラムを終了させるfirebaseAPIへのヒットカウント。
MIT AppInventorを使用したファンレギュレーターアプリの構築
AppInventorの助けを借りて、Firebaseと通信し、Firebaseデータベースに保存されているデータを変更する権限を持つAndroidアプリを作成します。
これを行うには、appInventors Webサイトにアクセスし、Googleアカウントでログインして、利用規約に同意します。これを行うと、下の画像のような画面が表示されます。
[新しいプロジェクトの開始]アイコンをクリックして名前を付け、[OK]をクリックすると、次の画像のような画面が表示されます。
そこに最初に2つのラベルを配置する必要があります。これは、スライダーを少し下に配置するためです。次に、いくつかのモジュールをプルする必要があります。それらは、FirebaseDBモジュールとwebモジュールです。
firebaseDBのfirebase有するモジュールが通信には、WebモジュールはHするために使用されるHTTPリクエストandle。下の画像のように見えます。
それが完了したら、スライダーとPWMという名前のラベルをプルする必要があります。現時点で混乱している場合は、アプリの発明者によるアプリの作成に関する他のチュートリアルを確認できます。
プロセスが完了したら、Firebase DBアイコンをクリックして、Firebaseアカウントの作成時に保存したFirebaseトークンとFirebaseURLを入力します。
これでデザインセクションが完成し、ブロックセクションを設定する必要があります。これを行うには、デザイナーの横にある右上隅のブロックボタンをクリックする必要があります。
スライダーをクリックすると、モジュールの長いリストが表示され、最初のモジュールを引き出し、親指の位置のボタンの上にマウスを置くと、さらに2つのモジュールが表示され、両方を引き出します。これらは後で使用します。
次に、 thumbposition 変数をアタッチし、 それを四捨五入して 、 thumbposition 値を取得します。次に、firebasedbをクリックし、FirebaseDB.storeValueの呼び出しタグ値を引き出して保存し、モジュール化して、親指の位置の値の下部にアタッチします。
完了したら、テキストブロックをクリックして空のテキストボックスを引き出し、タグを付けます。これは、Firebaseでデータを読み書きするためにArduinoIDEで設定したタグです。次に、thumbvalue変数をタグを格納する値にアタッチします。すべてを正しく行った場合は、スライダーを動かすことで、firebaseDBの値を変更できます。
- .aia(保存されたファイル)と.apk(コンパイルされたファイル)
これで、アプリ作成プロセスは終了です。作成したAndroidアプリケーションのスナップショットを以下に示します。
ESP32ベースのタッチセンサー回路のテスト
回路をテストするために、天井のファンと平行に白熱電球を接続し、上の写真でわかるように、5V DCアダプターで回路に電力を供給しました。アプリのスライダーが低く設定されているため、電球は低輝度で光っています。そして、ファンもゆっくりと回転しています。
さらなる機能強化
このデモンストレーションでは、回路は手作りのPCBで作成されていますが、回路は高品質のPCBで簡単に構築できます。私の実験では、PCBのサイズはコンポーネントのサイズのために実際には少しですが、実稼働環境では安価なSMDコンポーネントを使用することで削減できますが、555タイマーの代わりに7555タイマーを使用すると、制御が大幅に向上し、さらに回路の安定性も向上します。