4-pin fan control
I would like to use an ultra-quiet low-power 12V 4-pin PWM fan and am trying to figure out how to best interface with the PWM signal and RPM Speed signals wires of such a fan. The specific fan I'm looking to use is the Noctua NF-A8 PWM fan which has the following electrical interface:

Blue: PWM Signal (+5V)
Green: RPM Speed Signal (open collector output)
Yellow: +12V
Black: Ground

I would need to ensure (somehow) that the FAN+ is always at 12V, I'm not sure how this pin gets controlled in startup via u-boot / Linux but in my application I would want to ensure it goes high and stays high sometime during boot.

I'm looking for options on how to interface to the Blue and Green cables. I think my options are either somehow directly to some of the 5V pins on the Pi-2 header, or alternatively, perhaps some sort of separate fan control breakout.

One idea I had was to use the Adafruit EMC2101 I2C PC Fan Controller and Temperature Sensor breakout. This would use the i2c interface on the pi-2 header.

I would then need to interface that with a temperature diode somewhere -- ideally one that already exists on the RK3399, the board near the SoC, or I guess on the CPU heatsink. From what I can tell, one of the 3904 BJT type diodes mentioned in Table 4 would work.

Does anybody have any experience using a 4-pin fan on the RK3399 in a NAS application?

Details on the Noctua fan interface.

Details on the EMC2101.
After some research, my plan is to use the approach suggested in Simplest uni-directional level shifter (3.3V -> 5V).

This uses a 74AHCT1G125 and a decoupling capacitor. I will report back with how it goes Smile
Hello Hazelnusse,
  I am going to use the same fan with ROCKPro64. I like those fans of Noctua a lot – despite their prices!

  12V for the fan will be ‘stolen’ from the connector CON15, which is connected directly to the power input barrel connector. I am using CON15 to power my two SATA disks, as it is intended to. I purchased the standard SATA power cable from PINE64 (https://pine64.com/product/rockpro64-pow...46c16e2e66) and attached additional cables to it.

  PWM is a bigger problem. ROCKPro64 has one hardware PWM signal available at connector J8. Unfortunately, it is converted to 12 V with a circuit, which I do not understand. It is rather intended for powering the traditional ‘2-wire’ fans with PWM speed control. Such fans work with PWM frequencies below 1000 Hz, and this circuit is probably created for such frequencies.
Noctua requires higher frequency of PWM - around 25 kHz. I am not sure how this circuit will behave at such frequency. I have asked in this forum, if it is possible to derive the 3V or 5V signal, before it is converted to 12V (https://forum.pine64.org/showthread.php?tid=7877), but nobody dared to answer. Also converting the signal from 3V to 12V and than back to 5V seems not very elegant idea.

  So I decided to use Arduino PRO Mini to operate the fan. Programing PWM on Arduitno is very easy, and it consumes very little of energy. Arduino generates signal with 3.3V, but I have tried that the fan recognizes it. So, I will try without shifting to 5V, at first.
Arduino communicates with ROCKPro64 by UART. It will perform some additional functions, since my NAS-project expanded (what caused it not finished yet ? ): read a temperature sensor (TMP36), control a battery for emergency power supply, and shutdown ROCKPro64 in case of power-loss.
I am going to use following temperatures to determine speed of the fan:
  • CPU from "/sys/class/thermal/thermal_zone0/temp", "/sys/class/thermal/thermal_zone1/temp" (I am using Armbian)
  • Disks – from SMART data, which both disks supply.
  • TMP36 sensor attached to heatsink on my SATA-PCI card. I am using a Marvell 9230 card, which works very well, but gets quite hot.
Best regards,
Maybe a bit OT but I also bought this fan. However, I found it too thick with 25mm to fit it inside the case so I switched to a slimmer model, and fan control imho works sufficiently well with the 2pin connector as well. Sure, it's nice to have RPM readings but for my use case I don't really need that.

Forum Jump:

Users browsing this thread: 1 Guest(s)