A while ago the cabin fan in my car stopped working at lower speeds. Looking through the schematic diagram of the heater controls (courtesy of a Haynes manual) revealed that the motor speed was being crudely controlled by putting various large current limiting resistors in series with the motor. Upon inspection, the large wire wound resistor pack was cracked and a quick test with the multimeter confirmed my thoughts, there was no continuity across the two larger resistors for speed settings 2 and 3 (out of 4). I confirmed that it was only the resistors causing the problems by putting a wire in parallel with the resistor effectively by-passing it and confirming that the Fan ran at max speed.
I decided it would be a good opportunity to design a PWM speed controller to be compatible with the car’s pre-existing system. Two options came to mind immediately, the first was using a 555 timer and the other was using an Atmel ATTiny 85, both of which I had in my parts bin.
The two options would require a potentiometer to be put in the place of the original 5 position rotary switch but the 555 timer would need a lot more care to ensure that it would go from 0% to 100% duty cycle across the 80 degrees of motion that the original dial markings were spread across. Using a microcontroller would allow a map to be created and make full use of the limited potentiometer travel with ease. Not only would it make fine tuning easier, it would also allow the PWM frequency to be experimented with.
The circuit consisted of a LM7805 voltage regulator and capacitor bank to supply a clean source of power the Atmel ATTiny 85. A large N-channel Mosfet was used to allow the current to flow from the motor to ground. It was driven by the VCC rail and is turned off by powering the NPN which in turn shunts the pull-up resistor to ground, intern bringing the gate of the MOSFET to ground. The circuit was designed in Eagle Cad and sent off to OSHPark PCB FAB.
I used the eagleUP plugin for eagle and google SketchUp to create a 3d model of the board and the populated it with parts to ensure that the heatsink would fit.
The design was successfully implemeted into my car however a small compromise had to be made. With the PWM frequency set above the human audible range (20KHz) the MOSFET was overheating. It is possible that the MOSFET was not fully saturated but it is more likely becauase high frequency switching causes the it to spend longer in the transistion region which wastes power. To overcome this, the PWM frequency was reduced to 10KHz which does produce a faint whine under normal operation.