Rather than simply place a resistor in series with the fan's 12V supply, this is a more sophisticated supply that will supply up to the full 12V in case the ambient temperature is high (like it is in my garage) so the server will not overheat. On cooler days, the fans will be dropped back to reduce noise. These will be controlled centrally using a Cypress PSOC Prototyping kit module which will be mounted inside the server case.
Each of these small-sized modules controls a single fan. In the default setting (both control inputs low) the fan is connected to it's 12V supply via R1 and R3, placing 44 Ohms in series and dropping the fan's supply current, thus reducing it's speed. This is equivalent to the current modification most server owners do in which they insert a 47 Ohm resistor in series with the fan's power supply - kind of a neanderthal way to do it but it works. If you pull SPD0 high (+5V) it turns on N-channel MOSFET Q2A (an inverter) which in turn switches P-channel MOSFET Q1A on hard. Q1 is a dual P-channel MOSFET designed for this kind of load switching. Q1A then effectively shorts out R3, putting only R1 in series with the fan at 22 Ohm. When SPD1 is pulled high, Q1B shorts out R1, R3 and Q1A driving the fan directly from the 12V motherboard fan supply as if there were no modifications to the fan at all - providing the Dell factory default fan drive.
Therefore this circuit with an external controller will allow more granular modification to the fan supply with three total fan levels (not including the motherboard's effective PWM). I'm choosing the Cypress PSoC 4 Prototyping kit for a few reasons as the controller for this project:
- I have a few of them on hand.
- The PSoC4 on board CY8C4245 or CY8C4145 has an internal die temperature monitor which can be used to sense ambient temps.
- It also has plenty of Analog inputs for interfacing to other temperature sensors.
- The USB port not only can be used to program the PSoC but also communicate with it in application as a serial device. This means when I have time and inspiration I can create a Windows or Linux app for the server which can work in concert with the hardware monitoring software.
- They are cheap and plentiful if anyone want's to copy this project for their own Dell PowerEdge 2950 server rack.
- They are USB powered and fit within the server's internal chassis on an internal USB port.
The Si9933 dual P-channel MOSFET is not a particularly fast MOSFET (P-channel's rarely are) but it has a very low on-resistance (about 0.07 Ohm) which means it can handle fairly high currents without dissipating too much heat. I'm using 1206 sized resistors so they can dissipate the heat when reducing fan speed. \
This project has been inspired by the numerous "how-to" blogs and videos on this Dell PE2950 fan noise reduction mod, so here's a shout out to some of the blogs and videos I watched before deciding to do it this way:
Rat's bloG (Malinda Rathnayake) - this was the first article I found when searching google for ways to reduce the server fan noise: http://www.ratzblog.com/2014/08/reducing-dell-poweredge-pe-295029002800.html
In Malinda's blog above, he links out to Arnuschky in Germany who figured out how to mod the firmware to prevent unnecessary server alarms: http://projects.nuschkys.net/2011/11/15/how-to-adjust-the-fan-thresholds-of-a-dell-poweredge/
HexHound's Before and After Noise Video: https://youtu.be/NRd-3gp_sFU