Cooling fan speed controllers do it by generating heat

cooling-fan-speed-controllers

We’ve never torn one apart ourselves, but it boggles the mind just a little bit to learn that these cooling fan controllers generate heat to do their job. We’d bet we’ll get shouted down in the comments, but doesn’t this seem counter-productive?

At any rate, we enjoyed reading two posts on this topic. [Göran's] first adventure with the hardware started when he was trying to design his own speed controller. He saw a reference design in the LM7805 linear regulator datasheet which allows the adjustment of the output by changing the ground reference. When fed with 12V this ends up putting off some heat but it is a simple and reliable solution. He was a bit surprised to crack open a Zalman module and find the exact same circuit inside.

The controller in the background is an eBay purchase. He cracked that one open as well (that’s the link at the top) and found a circuit with a linear regulator in it, but this time it was a TL431 adjustable regulator. So here are our questions: Which one of these two is better and why. And can you do it relatively inexpensively without generating as much heat?