Summary
This blog covers the replacement of a number of Cooler Master fans with Noctua PWM fans. Both fans were 120mm in size, to fit standard PC cases. Some measurements relating to PWM and current were taken as a comparison. PWM control was performed using a Teensy 2.0 programmed using Arduino.
Cooler Master Fan |
The Cooler Master fans (A12025-12CB-3EN-F1) used in a tower of RAID drives, mentioned in this blog, were lacking the airflow to keep the temperature of the drives below 40 degrees Celsius. Noctua fans (NF-F12 PWM) were trialled with PWM control.
It should be noted that the Cooler Master fans are rated at 2000RPM compared to the Noctua 1500RPM.
Noctua NF-F12 PWM |
Since PWM fan control from the existing motherboard was not possible, a Teensy 2.0 board was utilised. This board has seven PWM outputs and libraries for Arduino were already written. Image courtesy of PJRC.
Teensy 2.0 Pinouts |
When using the PWM outputs on the Teensy there was a difference in the frequency between some of the PWM output frequencies due to the timers. This turned out to be of no consequence as the Noctua fans worked across a large range of PWM frequencies. Even with the PWM frequency set in the low Kilohertz no clicking or other audible noises were heard from the Noctua fan.
Teensy 2.0 with Noctua NF-F12 |
For the fan connections, pinouts were referenced from the site All Pinouts. Power was applied to the required two relevant power pins. A common 0VDC connected was required between the fan and the GND pin on the Teensy.
The image above has only PWM1 connected. A series 2.2k resistor for current limiting was connected between the PWM output of the Teensy to the PWM input of the fan.
Teensy 2.0 Close Up |
The image above has only PWM1 connected. A series 2.2k resistor for current limiting was connected between the PWM output of the Teensy to the PWM input of the fan.
To control the duty for each PWM output, a simple program was written using Arduino. The code allowed each output to be individually changed. Only basic error checking was performed in the software, something to be aware of.
From a terminal program the number of the PWM output (1 to 7) followed by the duty cycle in percent (PWM ON time) was entered with a new line (enter key) to process the change. For example:
Set PWM 1 to 75%: 175
Set PWM 6 to 10%: 610
Set PWM 7 to 100%: 7100
Example of working code below.
int PWM1 = 4; /* PWM Output 1 */
int PWM2 = 5; /* PWM Output 2 */
int PWM3 = 9; /* PWM Output 3 */
int PWM4 = 10; /* PWM Output 4 */
int PWM5 = 12; /* PWM Output 5 */
int PWM6 = 14; /* PWM Output 6 */
int PWM7 = 15; /* PWM Output 7 */
int PWM = 0;
int PWM_Serial = 0;
int percent = 0;
char buffer[] = {' ',' ',' ',' '};
/* Start fans at full power then run down to approx 10% */
void setup() {
Serial.begin(115200);
pinMode(PWM1, OUTPUT);
pinMode(PWM2, OUTPUT);
pinMode(PWM3, OUTPUT);
pinMode(PWM4, OUTPUT);
pinMode(PWM5, OUTPUT);
pinMode(PWM6, OUTPUT);
pinMode(PWM7, OUTPUT);
analogWrite(PWM1, 255);
analogWrite(PWM2, 255);
analogWrite(PWM3, 255);
analogWrite(PWM4, 255);
analogWrite(PWM5, 255);
analogWrite(PWM6, 255);
analogWrite(PWM7, 255);
delay(2000);
analogWrite(PWM1, 26);
analogWrite(PWM2, 26);
analogWrite(PWM3, 26);
analogWrite(PWM4, 26);
analogWrite(PWM5, 26);
analogWrite(PWM6, 26);
analogWrite(PWM7, 26);
}
/* Main to parse serial commands, no error handling */
void loop() {
if (Serial.available() >0) {
PWM_Serial = Serial.read() - '0';
switch (PWM_Serial) {
case 1: PWM = PWM1; break;
case 2: PWM = PWM2; break;
case 3: PWM = PWM3; break;
case 4: PWM = PWM4; break;
case 5: PWM = PWM5; break;
case 6: PWM = PWM6; break;
case 7: PWM = PWM7; break;
default: break;
}
while (!Serial.available());
Serial.readBytesUntil('n', buffer, 4);
percent = ((atoi(buffer)) * 255)/100;
analogWrite(PWM, percent);
}
}
The terminal application TeraTerm, was used to send the commands to the Teensy. As there was no feedback provided by the Arduino code, the actual PWM signal was monitored using an oscilloscope. The Tacho output was also connected to the oscilloscope.
Power supply current and oscilloscope frequency measurements were taken for the duty cycle range of 10% to 100%.
Measurements
To determine what current (mA) the Noctua fans would consume, the duty cycle of the PWM was varied with a single fan connected and the current measured using a multimeter.
Noctua Current vs Duty Cycle |
Undoubtedly the Noctua fans Tacho output against duty cycle, as seen below, has been recorded before however for completeness this was also measured.
Noctua Tacho Output vs Duty Cycle |
Cable Assemblies
As a side note, Noctua provide a number of adapter cables with the fan. These range from an extension cable, Y adapter and a Low Noise adapter. Regarding the low noise adapter the Noctua cable features what appears to be a single 82R resistor, meaning that low noise is simply a by-product of limiting the total current to the fan. The same result could be implemented by adjusting the total power to the fan.
Noctua Low Noise Adaptor |
Noctua Low Noise Adapter Unsheathed |
Operational Temperature
In relation to the heat generated by the fan itself, a thermal camera was used to measure the Noctua fan motor which was running at full speed in free air. After several minutes, with an ambient temperature of 24C, the temperature of the fan motor was approximately 28C.
Noctua Fan Temperature |
Testing
For testing the effectiveness of the Noctua fans, the RAID system inside a server was kept running using Caffeine on Linux Mint Cinnamon. The system (RAID) did not spin the drives down.
The server was left powered and running the application Caffeine for 60min to stabilise the internal temperature without fans. The temperature of the drives was taken from the Smart data available under the Disks app. The highest drive temperature was 41C.
Caffeine Package |
No Cooling RAID Temperature |
A single the Cooler Master fan was tested first. After 60min the temperature of the warmest drive was 37C.
Single Cooler Master Fan - RAID Temperature |
For the second test the original fan was removed and the RAID was allowed to reach 41C again. A single Noctua fan was then tested. After 60min the temperature of the warmest drive was 38C.
Single Noctua Fan - RAID Temperature |
For the next test the Noctua fan was stopped and RAID was allowed to reach 41C again. Dual Noctua fans were tested. After 60min the temperature of the warmest drive was 32C.
Twin Noctua Fans - RAID Temperature |
Three fans were tried although no difference in RAID temperature was noted when compared to two Noctua fans.
Final Thoughts
There is little doubt the Noctua NF-F12PWM fan performs extremely well, almost as well as a fan running 15% faster, for the limited tests conducted above. It shall be noted however that at the time of writing this blog, the Noctua fan was four times more expensive than a Cooler Master fan or a nearest equivalent non PWM fan. This cost may be prohibitive to some looking to move to PWM.
Additionally if large airflow is all that is required then a fast, reliable, non-PWM fan may be the more cost effective solution. Mass air flow fans manufactured by Delta or Orion may be more suitable for some installations. Orions models such as the OD1238-12HBXJ10 have an airflow of 250CFM compared to the Noctua's 56CFM however the Orion fan has an ear drumming 69dBA, compared to the Noctua almost inaudible acoustics at 23dBA.
For alternate installations such as a media centre, bedroom computer, home cinema or similar installation were low noise is paramount, then a PWM fan would be an ideal solution.
Additionally if large airflow is all that is required then a fast, reliable, non-PWM fan may be the more cost effective solution. Mass air flow fans manufactured by Delta or Orion may be more suitable for some installations. Orions models such as the OD1238-12HBXJ10 have an airflow of 250CFM compared to the Noctua's 56CFM however the Orion fan has an ear drumming 69dBA, compared to the Noctua almost inaudible acoustics at 23dBA.