Electronic – Simulate tach signal of PWM fan

fanopen-collectorpwm

I have a power supply that uses a PWM fan with 4 wires.

Wires: 12V (red), GND (black), PWM Control (brown), TACH Sig (white)

The fan speed is controlled by the PWM control wire (brown). Fan speed is duty cycle, so 50% means 50% fan speed. Max speed is 22,000 RPM.

Tach signal (white wire) is an open collector with two pulses per revolution.

At full speed we should have 44,000 pulses on the Tach signal, or 733 Hz.

The power supply checks if the fan works, so using another fan or removing the fan altogether is not working. It also seems to check if the fan speed is anywhere near the commanded fan speed.

Here is the datasheet of the fan:
http://www.nmbtc.com/pdf/dcfans/1611ft.pdf

How would one build a very simple circuit that simulates the fan?

I imagine a small circuit that gets the PWM signal, and depending an duty cycle outputs the open collector pulses. ie. 0% duty cycle 0Hz, 100% duty cycle 733 Hz.

I have seen this question asked again and again, so coming up with a small circuitry would be very beneficial not only to my own small project.

Edit: I'd like to add that the fan needs to go because a far superior way of cooling will be employed for this power supply. I am not trying to find a cheap solution not to replace a fan or save some dollars. Power supply and its components are sufficiently cooled. I just need the fan on the PSU itself to be gone.

Best Answer

By far the lowest component count solution to the problem of simulating the TACH signal from a fan is to use a small microcontroller (MCU) that can measure the PWM input signal duty cycle. The PWM signal can be measured two ways with the MCU either by using a timer to directly measure the high / low pulse widths OR by filtering the PWM via an R/C circuit to produce an analogue level that you read into the MCU via an A/D converter channel. The output TACH signal can be generated easily using an MCU timer that is capable of driving a pin. In fact I have even done TACH signal simulation using a timer that generated a periodic interrupt and then let the MCU software toggle an I/O pin in the interrupt service routine.