I want to control a fan with an arduino from 0 rpm to full rpm. Using a (modified) pwm signal from the arduino I can control the speed w/ the pwm signal, but it cannot go all the way to 0 rpm.
So I decided to add a transistor as a switch using following schematic.
The fan is a Snowman F120, I used BC337 as a transistor (800mA) and a resistor of 2.2 kOhm, for controller I use pin 6 on an arduino nano and set it high/low. Arduino and the fan are both run from the 12v power supply. I removed the pwm signal to just have it full on or off for testing purposes.
I was hoping to use the transistor as an on/off switch and when on just send the pwm signal as that was working already.
The fan can now be turned off/on with the arduino but it spins super slow, say 10% of full pwr. Can someone explain why this is? Is there a better way to control this?
Edit: I did try to remove the resistor completely and the fan still moves only slowly
Edit: it is a 4 wire fan, but it cannot go all the way to 0 with pwm. That's why I want the 'switch'
I lowered the resistor to 120 ohm, and switched gpio pin, no effect, if I wait long enough the transistor gets hot
Edit: I connected the transitor to the 5V of the Arduino instead of the Digital out (high) and low and behold fan works well (resistor still in between, both 120 and 2.2kOhm tested, both situations work). I guess the digital output cannot provide enough current?
** Solution:
- Used IRLZ34N mosfet with a 120Ohm as gate resistor
- and a 100 kOhm as pull down resistor to GND as otherwise the mosfet would always be open **