Here is what I did in the end to get my ds4k to be nice and quiet.
Fan is changed to a "Blade master 120", any 120mm 4 pin fan with similar flow and backpressure as the original delta should be ok for the below setup.
MSP430G2230IDR uC in SO8,
AP1117E33G LDO,
2N7002 sot23 mosfet,
two connectors, 2x power in and fan: MOLEX - 47053-1000 - HEADER, 4POS, 1ROW, 2.54MM.
a few capacitors and resistors.
(total comp cost in the 2USD range from Farnell)
programming the MSP trough this board:
TEXAS INSTRUMENTS - MSP-EXP430G2 - MSP430G2XX, LAUNCHPAD, DEV KIT. (cost about 12USD)
MSP drives the Nch mosfet gate.
Gate is driven trough a 1nF capacitor, with diode and 100k resistor in parallel to the gate to GND (10k pull-up on the drain).
This makes it a bit more fail safe by making the fan run at 100% if PWM stops high, no need to fry a 500Mhz scope due to a uC crash.
Code is based on a TI demo: measuring temperature and blinking two LEDs with duty-cycle corresponding to diff vs temp at init.
MSP runs on internal RC osc using factory calibration data to get (within 1%?) of 1MHz.
MSP timer set to cycle time of 25kHz (typ. PWM freq of 4 pin fans)
The mosfet gate driven as PWM output from timer.
MSP uses internal ADC and converts the internal temp sensor... since it sleeps most of the time it has negligible dissipation and should measure close to ambient temp.
Temperature sensor is not very accurate (large offset) unless it is trimmed, I trimmed this unit by changing a define in the code and reloading flash until it got the temp right.
MSP only runs when triggered by the (timer) interrupt, when pending work is done it sleeps with only the timer osc active.
Once every second the code hijacks the timer and uses it to send a 9600baud char (=> 1ms gap in fan PWM signal) on a free output (interrupt driven bitbanging) This is nice for checking the temp it thinks it sees.
Fan control algorithm uses 4 main parameters, min speed (50%), min temp(35C), max speed(100%), max temp (55C), and makes a straight line between these points.
Fan should not go below 50% with this setting (that it actually goes to 46% may be attributed to rounding errors... PWM resolution is about 2.5%)
Note that even with fan at full speed the internal sensor will read 10C or more over ambient outside the scope.
When starting the fan runs at 100% the first 2 seconds, then drops to 46%
With room temp of 25C it stabilizes at ~66% fan speed (eq to ~8V voltage) and a measured temp around 40C, DS4k internal sensor reads around ~42.5C after a few minutes.
Delta temp over room is now about 18C.
If the internal temp increases the delta will drop towards 12C at full speed, internal temp should stay below 62C at 50C room temp.
I used the ds4k to monitor its own fan control ... decoding the serial char. and the PWM duty-cycle ... including graphing the fans tacho frequency. (with 10 sec. trig hold-off to slow graph down to ~10sec per sample)
(sry no plots... forgot to do plots and now the scope is closed again)