- 必要なコンポーネント
- Arduinoを使用したACファン制御の動作
- 1.ゼロクロッシング検出器
- 2.位相角制御回路
- 3.ファン速度を制御するポテンショメータ
- 4.PWM信号発生ユニット
- 回路図
- ACファン速度制御用のArduinoのプログラミング
警告!! このプロジェクトで説明されている回路図は、教育目的のみです。220V AC主電源電圧での作業には細心の注意が必要であり、安全手順に従う必要があることに注意してください。回路の動作中は、コンポーネントやワイヤに触れないでください。
多くのArduinoベースのホームオートメーションプロジェクトで行ったように、スイッチを使用するか、何らかの制御メカニズムを使用することで、家電製品のオンとオフを簡単に切り替えることができます。ただし、ファンの速度やランプの強度を制御するなど、AC電源を部分的に制御する必要があるアプリケーションはたくさんあります。この場合、PWM技術が使用されるため、ここでは、Arduinoで生成されたPWMを使用してArduinoでACファン速度を制御する方法を学習します。
このプロジェクトでは、TRIACを使用したArduinoACファン速度制御のデモを行います。ここでは、AC信号の位相制御方法を使用して、Arduinoによって生成されたPWM信号を使用してACファンの速度を制御します。前のチュートリアルでは、PWMを使用してDCファンの速度を制御しました。
必要なコンポーネント
- Arduino UNO
- 4N25(ゼロ交差検出器)
- 10kポテンショメータ
- MOC30210pto-カプラー
- (0-9)V、500mA降圧トランス
- BT136トライアック
- 230VACアキシャルACファン
- 接続線
- 抵抗器
Arduinoを使用したACファン制御の動作
作業は4つの異なる部分に分けることができます。以下の通りです
1.ゼロクロス検波器
2.位相角制御回路
3.ファン速度量を制御するポテンショメータ4.PWM
信号発生回路
1.ゼロクロッシング検出器
私たちが家庭で得るAC電源は220vAC RMS、50HZです。このAC信号は本質的に交互であり、その極性は定期的に変化します。すべてのサイクルの前半で、それは一方向に流れてピーク電圧に達し、その後ゼロまで減少します。次に、次の半サイクルで、ピーク電圧まで交互の方向(負)に流れ、その後再びゼロになります。 ACファンの速度を制御するには、両方の半サイクルのピーク電圧を切り刻むか制御する必要があります。このためには、信号が制御/チョッピングされるゼロ点を検出する必要があります。電圧が方向を変える電圧曲線上のこの点は、ゼロ電圧交差と呼ばれます。
以下に示す回路は、ゼロ交差点を取得するために使用されるゼロ交差検出器回路です。最初に、220VAC電圧が降圧トランスを使用して9VACに降圧され、次にピン1と2で4N25オプトカプラーに供給されます。4N25オプトカプラーには、アノードとしてピン1、ピン2としてピン2を備えたLEDが組み込まれています。陰極。したがって、以下の回路のように、AC波がゼロ交差点に近づくと、 4N25の内蔵LEDがオフになり、その結果、4N25の出力トランジスタもオフになり、出力パルスピンがオフになります。 5Vまでプルアップします。同様に、信号が徐々にピークに達するとポイントを押すと、LEDがオンになり、トランジスタもオンになり、グランドピンが出力ピンに接続されます。これにより、このピンが0Vになります。このパルスを使用すると、Arduinoを使用してゼロ交差点を検出できます。
2.位相角制御回路
ゼロ交差点を検出した後、電源をオン/オフするタイミングを制御する必要があります。このPWM信号は、ACモーターに出力される電圧の量を決定し、ACモーターはその速度を制御します。ここでは、AC電圧信号を制御するためのパワーエレクトロニクススイッチであるため、AC電圧を制御するBT136トライアックが使用されています。
トライアックは、ゲート端子の低エネルギー信号によってトリガーできる3端子ACスイッチです。SCRでは一方向にしか導通しませんが、トライアックの場合は両方向に電力を制御できます。トライアックとSCRの詳細については、以前の記事に従ってください。
上の図に示すように、トライアックは、小さなゲートパルス信号を適用することにより、90度の発射角度でトリガーされます。時間「t1」は、調光要件に従って与えられる遅延時間です。たとえば、この場合、点火角度は90%であるため、出力も半分になり、ランプも半分の強度で点灯します。
ここでは、AC信号の周波数が50Hzであることがわかっています。したがって、期間は1 / f、つまり20msになります。半サイクルの場合、これは10ミリ秒または10,000マイクロ秒になります。したがって、ACランプの電力を制御するために、「t1」の範囲を0〜10000マイクロ秒の範囲で変更できます。
オプトカプラー:
オプトカプラーはオプトアイソレーターとしても知られています。これは、DC信号やAC信号などの2つの電気回路間の絶縁を維持するために使用されます。基本的には、赤外光を発するLEDとそれを検知するフォトセンサーで構成されています。ここでは、MOC3021オプトカプラーを使用して、DC信号であるマイクロコントローラー信号からACファンを制御します。
トライアックとオプトカプラーの接続図:
3.ファン速度を制御するポテンショメータ
ここでは、ポテンショメータを使用してACファンの速度を変化させます。ポテンショメータは、分圧器として機能し、可変電圧出力を提供する3端子デバイスであることがわかっています。この可変アナログ出力電圧は、ACファンの速度値を設定するためにArduinoアナログ入力端子に与えられます。
4.PWM信号発生ユニット
最後のステップでは、速度要件に従ってPWMパルスがトライアックに与えられます。これにより、AC信号のオン/オフタイミングが変化し、ファン速度を制御するための可変出力が提供されます。ここでは、Arduinoを使用してPWMパルスを生成します。これは、ポテンショメータからの入力を受け取り、PWM信号出力をトライアックおよびオプトカプラー回路に提供します。オプトカプラー回路は、ACファンをさらに希望の速度で駆動します。Arduinoを使用したPWM生成の詳細については、こちらをご覧ください。
回路図
このArduinoベースの230vファン速度制御回路の回路図を以下に示します。
注:理解を目的として、ブレッドボードに完全な回路を示しました。ブレッドボードに220VAC電源を直接使用しないでください。下の画像に示すように、接続には点線のボードを使用しました。
ACファン速度制御用のArduinoのプログラミング
ハードウェア接続後、Arduinoのコードを作成する必要があります。このコードは、ポテンショメータ入力を使用してAC信号のオン/オフタイミングを制御するPWM信号を生成します。以前は、多くのプロジェクトでPWM技術を使用していました。
このArduinoACファン速度制御プロジェクトの完全なコードは、このプロジェクトの下部に記載されています。コードの段階的な説明を以下に示します。
最初のステップで、コード全体で使用されるすべての必要な変数を宣言します。ここでは、BT136トライアックがArduinoのピン6に接続されています。そして、変数speed_valは、速度ステップの値を格納するように宣言されています。
int TRIAC = 6; int speed_val = 0;
次に、 セットアップ 関数内で、このピンを介してPWM出力が生成されるため、トライアックピンを出力として宣言します。次に、ゼロ交差を検出するように割り込みを設定します。ここでは、attachInterruptという関数を使用しました。この関数は、Arduinoのデジタルピン3を外部割り込みとして構成し、ピンで割り込みを検出すると、zero_crossingという名前の関数を呼び出します。
void setup(){pinMode(LAMP、OUTPUT); attachInterrupt(digitalPinToInterrupt(3)、zero_crossing、CHANGE); }
無限 ループ 内で、A0に接続されているポテンショメータからアナログ値を読み取り、(10-49)の値の範囲にマッピングします。
この範囲を見つけるには、小さな計算を行う必要があります。以前は、各半サイクルは10,000マイクロ秒に相当すると言われています。したがって、ここでは、調光は任意の値で変更可能な50ステップで制御されます。ここでは、0〜9ステップでほぼ同じ出力が得られるため、最小ステップはゼロではなく10として取得され、上限(この場合は50)を取得することは実際には推奨されないため、最大ステップは49として取得されます。
次に、各ステップ時間は10000/50 = 200マイクロ秒として計算できます。これは、コードの次の部分で使用されます。
void loop(){int pot = analogRead(A0); int data1 = map(pot、0、1023,10,49); speed_val = data1; }
最後のステップで、割り込み駆動関数zero_crossingを構成します。ここで、調光時間は、個々のステップ時間をnoで乗算することによって計算できます。ステップの。次に、この遅延時間の後、トライアックをオンにするのに十分な10マイクロ秒の小さな高パルスを使用してトライアックをトリガーできます。
void zero_crossing(){int chop_time =(200 * speed_val); delayMicroseconds(chop_time); digitalWrite(TRIAC、HIGH); delayMicroseconds(10); digitalWrite(TRIAC、LOW); }
ArduinoとPWMを使用したこのACファン制御の作業ビデオとともに完全なコードを 以下に示します。