I'm trying to reuse/salvage an old 12V DC car radiator fan for a non-car related project, and have found that it has a high load (actually seems to be somewhere around 200W, as it's a powerful fan). I want to reduce the speed of the fan because I don't need it to spin that fast for what I'm using it for. If I could reduce the current/speed variably using an Arduino, that would be ideal. Using my bench power supply, I found that being able to vary the power between 10W and 50W would be ideal.
I realized that I could use a high wattage aluminum shell power resistor or similar to reduce the current, but this will of course generate heat and waste energy which I'd like to avoid if possible (also, the speed wouldn't be variable).
I've experimented with using an IRLB8721 MOSFET for PWM, but the transistor gets very hot (and seems like I'd need to attach it to a heatsink). Since the MOSFET also generates heat, I'd like to find a cooler solution. My bench power supply can of course limit the volts and current, and it has a fan for heat dissipation, so whatever current limiting method that uses would not be ideal either.
Regular AC household fans usually have a button or other control to adjust the fan speed, so that's making me think there must be a way.
So, other than PWM, is there a way to reduce current/fan speed without creating heat and wasting energy?
If the answer is no, then I will either use the MOSFET with a heatsink, or use a different, lower wattage fan (but it'd be a shame if I couldn't put it to use).