Sunday 26 March 2017

Noctua 120mm fan testing (NF-F12 PWM) 7 x PWM using Teensy 2.0

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
Cooler Master Fan

Fan Replacement
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
Noctua NF-F12 PWM

Fan PWM Control
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
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
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. 


Teensy 2.0 Close Up
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.

Arduino Program
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
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
Noctua Tacho Output vs Duty Cycle

Measurements were performed with the PWM duty starting at 10%, as the fan stall speed occurred at a duty between 7-10%.

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 Adaptor
Adding the low noise adapter in series with the power supply to the Noctua fan, reduces the fan speed. The current drawn by the fan is reduced to around 40mA.


Noctua Low Noise Adapter Unsheathed
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
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.


Caffeine Package
Caffeine Package
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.


RAID No Cooling
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 RAID Temperature
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
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
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.

6 comments:

  1. Hey! This is my first visit to your blog! We are a group of
    volunteers and starting a new project in a community in the same niche.
    Your blog provided us valuable information to work on. You
    have done a outstanding job!

    ReplyDelete
  2. I like the helpful information you provide
    in your articles. I'll bookmark your weblog and check again here frequently.
    I'm reasonably certain I will learn a lot of new stuff right right here!
    Best of luck for the following!

    ReplyDelete
  3. Do you mind if I quote a few of your posts as long as I provide credit and sources back to your website?

    My blog site is in the exact same niche as yours and my visitors
    would genuinely benefit from a lot of the information you present here.
    Please let me know if this ok with you. Regards!

    ReplyDelete
  4. @Anonymous re sources

    A link back the relevant blog is appreciated, many thanks!

    ReplyDelete
  5. Hey There. I discovered your blog using msn. That is an extremely neatly written article.

    I'll make sure to bookmark it and return to learn extra of your useful information. Thanks for the post.
    I will definitely return.

    ReplyDelete
  6. I am regular reader, how are you everybody?
    This article posted at this web page is truly nice.

    ReplyDelete