DCの場合、PWMを使用してMOSFETを使用し、いつでも閉じたり開いたりすることができるPWMを使用して電力を制御する方がはるかに簡単です。
Howerver、ACのためにトライアックに対処する必要があります。また、Triacには制御するゲートがありますが、Triacがオンになった場合、AC電圧が0ボルトに下がるまでオフにすることはできません。 220 Vと50 HzのAC電気を考慮すると、50のフル期間のサインと100の半分の期間があります(50電圧陽性50電圧陰性)。
電力レートを管理する可能性のある方法の1つは、フェーズシフトです。
それを機能させるには、AD Zero Cross Detectorが必要です。必要な位相シフトのためにTRIACをオンにしますが、その終了前になります。正常に動作しますが、大きな欠点は多くの電磁干渉(EMI)であり、4 kwattのように大きな力をcommutする必要がある場合、物事は悪くなります。多くのEMIとTriacsがストレスの多いモードになります。
電圧が低い(0ボルトに近い)場合、トライアックをオンにする方がはるかに良いです。別の方法は、特定の期間のみでトライアックをオンにすることです。この場合、EMIの問題はありません。 Howerver、より精密な方法でパワーを評価する方法は?たとえば、電源レート= 40%が必要です。最初の40半期間のみトライアックをオンにする必要がありますか?この問題をより正確な方法で解決するために、Bresenhamアルゴリズムを使用できます。これは、特定の期間の電力を広めるのに役立ちます。
50 Hz-> 100半期の例を見てみましょう。 -Triacがオフ、# - Triacはオンです。
また、この方法では、ゼロクロス検出器が必要であり、トライアックは内部のゼロクロス検出を備えたMOC3041(または同様のIC)で管理する必要があります。代替として、Fotek SSR-40 Daのように、ソリッドステートリレーも同様に使用できます(内部内にゼロのクロス検出があります)。
しかし、このアプローチをより高い頻度を必要とする光調光には使用することはできません。 50 Hz ACの場合、Triacは1秒あたり0〜100回オンになります。抵抗荷重(ヒーター)の場合それは非常に正常ですが、電球は点滅します。
検出器は、Bresenhamアルゴリズムを処理するために必要です。ゼロクロス検出器回路図
この回路のオシログラム:
電圧が0ボルトに等しい場合、パルスのピーク。
Arduinoスケッチブックフォルダーに「ライブラリ」という名前のフォルダーの下に「bresenhamtriacdriver」という新しいフォルダーが作成されます。まだ存在しない場合に備えて、フォルダー「ライブラリ」を作成します。すべてのファイルを「bresenhamtriacdriver」フォルダーに配置します。
独自のスケッチでライブラリを使用するには、 Sketch> Import Libraryから選択します。
testscketch.ino