ArduinoUnoを使用した25kHz4ピンPWMファン制御
コンポーネントと消耗品
アプリとオンラインサービス
> | | |
このプロジェクトについて
私はこのプロジェクトと、4ピンPWMファンを制御する方法について疑問に思っていました。私は5人を寝かせて、自分も試してみようと思いました。周波数値は、125 HZ〜8 MHZと、可変デューティサイクルの間で調整できます。この回路は、タイマー1 OCR1A(ピン9)およびICR1(ピン10)でモード10PWM位相補正を利用します。これを理解するにはデバッグが必要でしたが、私はハンドヘルドオシロスコープを所有しています。これにより、周波数とデューティサイクルをはるかに簡単に確認でき、推測は必要ありません。リンクは次のとおりです:オシロスコープ。
<図>
<図>
私の場合のコントロールピンは黄色だったので、ファンのデータシートを調べることを強くお勧めします(通常はタコワイヤーと呼ばれます)。許容可能な周波数範囲(または「中心周波数」)も必ず見つけてください。 ")選択したファンの場合。ニーズに合わせてコード周波数を変更する必要がある場合があります。最後に、適切な電源が必要になります(鉱山は古いPCから変換されたATX PSUです)。
注:別のタイマーを使用して、2つのファンを個別に制御しようとしました。動作しません。これは、2番目のタイマーの解像度が低いためです(16ビット対8ビット)。これは、周波数とデューティの調整のステップにノイズが多く、波形がますます変形することを意味します。これも、値を入力するときほど簡単ではありません。
コード
コード Arduino
このファイルをダウンロードして、ArduinoIDEで実行します。 constbyte OC1A_PIN =9; const byte OC1B_PIN =10; const word PWM_FREQ_HZ =25000; //この値を調整して周波数を調整します(Frequency in HZ!)(現在25kHZに設定)const word TCNT1_TOP =16000000 /(2 * PWM_FREQ_HZ); void setup(){pinMode(OC1A_PIN、OUTPUT); // Timer1制御およびカウントレジスタをクリアしますTCCR1A =0; TCCR1B =0; TCNT1 =0; // Timer1構成を設定します// COM1A(1:0)=0b10(出力Aの明確な立ち上がり/立ち下がりを設定)// COM1B(1:0)=0b00(出力Bの通常動作)// WGM(13:10)=0b1010 (位相補正PWM)// ICNC1 =0b0(入力キャプチャノイズキャンセラが無効)// ICES1 =0b0(入力キャプチャエッジ選択が無効)// CS(12:10)=0b001(入力クロック選択=クロック/ 1)TCCR1A | =(1 <
回路図