Hallo zusammen,
ich hatte mir letztens auf einem Arduino mittels mehrere Codeschnipsel eine Lüfteransteuerung für mein HDD Rack gebastelt, funktioniert prinzipiell auch ohne Probleme. Allerdings habe ich je nach verwendeter Drehzahl ein mehr oder weniger störendes Fiepen am Lüfter.
Ich vermute, das die Ursache an der Ausgaberequenz liegt (aber ich mag mich auch täuschen).
Zur Hardware:
Arduino Uno (D3 als Ausgabe-Pin)
Arctic F9 PWM PST
Spannungsversorgung vom Arduino und Lüfter kommt über dieselbe Quelle
Verwendeter Codeauszug mit dem Lüfter-relevanten Teil:
void PWMPercent25kHzBegin() {
TCCR2A = 0; // TC2 Control Register A
TCCR2B = 0; // TC2 Control Register B
TIMSK2 = 0; // TC2 Interrupt Mask Register
TIFR2 = 0; // TC2 Interrupt Flag Register
TCCR2A |= (1 << COM2B1) | (1 << WGM21) | (1 << WGM20); // OC2B cleared/set on match when up/down counting, fast PWMPercent
TCCR2B |= (1 << WGM22) | (1 << CS21); // prescaler 8
OCR2A = 200; // TOP overflow value (Hz)
OCR2B = 0;
}
void PWMPercentDuty(byte ocrb) {
OCR2B = ocrb; // PWMPercent Width (duty)
}
void setup() {
pinMode(3, OUTPUT); // Pin fuer Luefter
PWMPercent25kHzBegin(); // PWMPercent Ansteuerung anstoßen
}
void loop() {
.....
PWM = ((Wert variiert zwischen 40 und 80)
PWMPercentDuty(PWM);
......
Erkennt da jemand möglicherweise Probleme, was das Fiepen verursacht? Oder könnte man das anders realisieren?
Danke vorab ![]()