.. Problem das ich einen Lüfter per PWM, bei langsameren Drehzahlen ruhig laufen lassen will .. wohl ein Problem mit der PWM Frequenz ..
Simpler Rat: rauf mit der Drehzahl. Leider keine Lösung zu Deiner arduino-Lösung.

Meine Thermosteuerung mit tiny84 treibt (nur) einen 80mmx80mm-Lüfter (Zweidrahtanschluss!!) in (m)einem Labornetzteil. Dabei hatte ich wenig überrascht festgestellt, dass ich den ruhigsten Lauf bei ner recht hohen PWM-Frequenz erreiche; auch das Oszilloskopbild sieht dabei gut aus. Nu läuft das Ding (oder auch nicht) mit ner PWM-Frequenz 37,5 kHz. ABER eben nicht arduino sondern ne selbst gelötete Lochrasterplatine mit nem tiny85 ohne Quarz, nem A4950 Motortreiber, nem Buzzer für Startton und Warnton bei oberer Temperaturgrenze. Und eben auch nicht arduino-IDE sondern einfaches C. Egal - ich fand die hohe Frequenz gut, auch bei dem kleinen Motor (meiner hat ca. 120 mA) noch ok. Wie erwähnt stufig - meist ist das Netzteil kaum hörbar weils meist ohne Lüfter dreht und wenn dann mit niedriger Drehzahl. Selbst der mittlere Drehzahlbereich ist noch ziemlich leise. Nachteil: das Netzteil ist nun fast durchwegs an . . . :-/

Code:
//      Neu ab 16. Feb. 2020
//      Temperaturstufen, ADC (A8main) und PWM-%
//      Temp  <  31°            A8main < ADCmin                 PWM =   0 %
//      32° C .. 36° C          ADCmin < A8main <= ADClow       PWM =  10 % (9,8)
//      36° C .. 68° C          ADClow < A8main <= ADCmax       PWM =  20 % - 40 %
//      Temp  >  68° C          ADCmax < A8main                 PWM = 100 % (+Pieps)