I am working on a cooler controller board. I am using 4 wire fans (12V, GND, HALL, CONTROL), I am using a simple 555 timer circuit to control the speed of the fans. However it would be nice to display on the control board if a fan is spinning lower then it should.

I am looking for a discrete way to add or subtract the two signals and use the result as PWM signal for an LED. (I am aware that it's not going to be exactly 0, but I can live with that.)

What am I after? I was trying to find a solution but had no success. I am would like to keep it simple, so no fancy MCUs can come into play here.

  • \$\begingroup\$ Realistically it is trying to avoid using an MCU for this which is what would turn a simple project implementable with an 8-pin DIP into a complicated one requiring lots of different parts. The MCU also lets you implement actual temperature control with a PID loop if you desire... \$\endgroup\$ Sep 24, 2020 at 0:19
  • 1
    \$\begingroup\$ @ChrisStratton -- the problem with throwing MCUs at everything is that you wind up with difficult-to-test/explain/manage "black boxes" in your design as a result (embedded SW DFT/TDD is in its infancy, especially on your average "little 8-pin micro") \$\endgroup\$ Sep 24, 2020 at 2:31
  • \$\begingroup\$ Not remotely true, it's far easier to test and add safeguards to an MCU solution than the sort of complex or sensitive analog mess the asker is contemplating, to a large extent much of the test can be built in and so run on every unit. Realistically it's how any informed person would solve this problem today. \$\endgroup\$ Sep 24, 2020 at 3:00
  • \$\begingroup\$ @ChrisStratton ThreePhaseEel I am the kind of guy who throws a micro in every project. I was just wondering is there is a "simpler solution". The problem is now I am thinking about something with a ESP82XX so I can log RPM deviations and send warnings via NodeRED or something. It's gonna be far more complex than it has to... =) \$\endgroup\$
    – Zoszko
    Sep 24, 2020 at 17:28

1 Answer 1


The PWM signal isn’t related to the tachometer signal in phase or frequency. There will be a rough correlation between PWM duty cycle and RPM (and thus, tach output) but the relationship isn’t linear, and is influenced by the fan’s airflow environment. That makes a direct comparison infeasible; some kind of signal processing and analysis would need to be applied to achieve a meaningful result.

Sidebar: about PWM fans. The PWM chop can vary widely in frequency, but note that the recommended spec for PC 4-wire fans is 25KHz. The tach signal on the other hand is two pulses per rev, so you’d have 60Hz with the fan running 1800 RPM. Huge difference.

You could use a microcontroller that has a map of PWM duty vs. RPM to compare. Typical fan data sheets have this information, and you can confirm by measurement. This is well within the capabilities of an 8-pin ATTiny for example, which would provide an I2C port in the bargain.

You can also simplify the problem somewhat and simply check if there is tach output if PWM is over 25% (fans have a minimum PWM duty cycle at start-up before they begin to spin.) Generally this is good enough to detect a failing fan. If you’re trying to detect, say, a clogged filter, that’s more of a software thing.

At any rate I’ve used a Silego Greenpak to manage fans like this (make a PWM, and check the tach for rotation for a system that didn’t have its own PWM generator). I also combined an NTC sensor with the fan control and implemented forced+latched shutdown on overtemp. All in a chip that costs 12 cents in volume. But again, a micro is probably more straightforward for most people.

You can buy commercial fan control ICs from various vendors, most of which are microprocessor-based.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.