25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno
Komponenten und Verbrauchsmaterialien
Über dieses Projekt
Ich habe mich über dieses Projekt gewundert und wie ich meine 4-Pin-PWM-Lüfter steuern kann. Ich hatte 5 herumliegen und dachte, meins probiere es auch aus. Die Frequenzwerte können zwischen 125 Hz – 8 MHz sowie einem variablen Tastverhältnis eingestellt werden. Die Schaltung verwendet den Modus 10 PWM phasenkorrigiert an Timer 1 OCR1A (Pin 9) und ICR1 (Pin 10). Um dies herauszufinden, war einige Fehlersuche erforderlich, und ich besitze ein Handheld-Oszilloskop. Es macht die Frequenzen und Arbeitszyklen viel einfacher zu sehen, und es ist kein Raten erforderlich. Hier ist der Link:Das Oszilloskop.
Ich empfehle Ihnen dringend, das Datenblatt Ihres Lüfters nachzuschlagen, da der Steuerstift in meinem Fall gelb war (der normalerweise als Tachokabel bezeichnet wird). Achten Sie darauf, auch den akzeptablen Frequenzbereich zu finden (ODER "CENTERING FREQUENCY .) ") für Ihren gewählten Lüfter. Möglicherweise müssen Sie die Codefrequenz ändern, um sie an Ihre Bedürfnisse anzupassen. Schließlich benötigen Sie ein gutes Netzteil (Meins ist ein umgebautes ATX-Netzteil von einem alten PC).
HINWEIS:Ich habe versucht, einen anderen Timer zu verwenden und 2 Lüfter unabhängig voneinander zu steuern. Es funktioniert nicht. Der Grund dafür ist die geringere Auflösung des 2. Timers (16 Bit vs. 8 Bit). Dies bedeutet, dass Schritte in der Frequenz- und Tastgradeinstellung verrauscht sind und die Wellenformen immer mehr verformt werden. Auch das ist bei der Eingabe von Werten nicht so einfach.
Code
Der CodeArduino
Laden Sie diese Datei herunter und führen Sie sie unter der Arduino IDE aus.const byte OC1A_PIN =9;const byte OC1B_PIN =10;const word PWM_FREQ_HZ =25000; // Passen Sie diesen Wert an, um die Frequenz (Frequenz in Hz!) // Timer1-Steuerung und Zählregister löschen TCCR1A =0; TCCR1B =0; TCNT1 =0; // Timer1-Konfiguration einstellen // COM1A(1:0) =0b10 (Ausgang A klar steigend/setzend fallend) // COM1B(1:0) =0b00 (Ausgang B Normalbetrieb) // WGM(13:10) =0b1010 (Phasenkorrekte PWM) // ICNC1 =0b0 (Input Capture Noise Canceler deaktiviert) // ICES1 =0b0 (Input Capture Flankenauswahl deaktiviert) // CS(12:10) =0b001 (Eingangstaktauswahl =Takt/1) TCCR1A | =(1 <
Schaltpläne