• Welcome to Overclockers Forums! Join us to reply in threads, receive reduced ads, and to customize your site experience!

FEATURED Building PWM Controller for 4 wires PWM fan

Overclockers is supported by our readers. When you click a link to make a purchase, we may earn a commission. Learn More.
Sounds good, I'll start a new thread, especially if you don't mind posting in it why the circuit will max out much lower than 12V. I don't think you're raining on my parade, you can't cheat physics, so I'd rather know now when all I have are ideas than after I've shelled out money, so I do appreciate the input.
TK
 
▓Kick Start Feature ▓

.

Kick Start Add-On

As we all learned, majority of pwm fans out there normally can not be stopped (0 rpm) even at lowest pot adjusment (lowest duty cycle setting), but there are few rare breed that has this special capability that is made by the manufacturer like the sanyo denki 9SG1212P1G01.

Now, the problem is when this kind of fan was adjusted to very low speed, like at very near their stopping point, if the controller and the fan went thru power cycle off and then on again, the fan will not start spinning at that particular low adjustment point anymore. This behaviour is normal and expected since the energy level required to start spinning the impeller is much higher than the energy level in maintaining that preset slow speed. Fyi, this kind of characteristic is acknowledged and clearly documented in the standard technical specification of pwm fan at formfactor.org.

Usually in this situation, the owner must manually turn the pot slightly higher than before to start the spinning, and turn back to that slow speed setting again if he needs it spins at that slow speed again as before. This is quite annoying and also at certain situation like the fan is installed at cpu heatsink and the owner didn't notice it, the cpu might get overheated. :-/

So here this "Kick Start" feature really helps, once implemented, when the controller is powered on for the 1st time, it will hit at max duty cycle (100% or 98% depends on which version) for few seconds. This effectively will make the fan rotates at max speed during that initial kick start period, once it ended, the fan impeller at this stage already gained the spinning inertia that enough to be slowed down to the low speed set by the pot before it was turned off.

This feature doesn't hurt too if you're owner of pwm fan that can not be stopped at 0 rpm, just look at it as a nice sound indicator that your fan is still capable of screaming for few seconds if they're those high speed screamer when you powered on the rig for the 1st time. :D

Btw, this kick start behaviour is also implemented at most server cooling pwm fan, if you watch closely when the server was powered on, during the post period, the server will crank up the fan at max speed for few seconds, usually this is needed for the internal initial diagnostic routine to sense if the fan is still capable of reaching certain speed.

PS: The kick start period can be adjusted as you wish, read the foot note at the pic.

At this new changes, you only need 6 additional dirt cheap components, and a single change in the existing connection at the RESET1 or RST pin from positive line (dotted line) to the new section in the blue shaded area.

If you don't want this feature implemented permanently, you can use a double poles switch to switch the connection at the RESET1/RST pin to postive line like original connection to disable it, or to the new section to enable it, as simple as that. :cool:


Thats all, hope this helps.
 
Last edited:
This may have been done, but I'm short on pot's and have something I want controlled.. so I was wondering, would it be possible to split a pot to two controllers? and.. would there be issues if the 2nd board was to be pole switched for a backwards level fan?

edit:// I make my pot dongle a 3 pin header, so all I would do is basically make a 2 into 1 lead to split the pot to the two controllers.
 
I don't think it would work, but you can add a second 556 to multiply the outputs.
I built a three output jobby for Seebs for Miah. No real reason you couldn't keep stacking 556s on the circuit!
Or I think there's a 558 or something like that, it has four 555s in it. Some pins are wired internally though, so I don't know if it'd work.
 
This may have been done, but I'm short on pot's and have something I want controlled.. so I was wondering, would it be possible to split a pot to two controllers? and.. would there be issues if the 2nd board was to be pole switched for a backwards level fan?

edit:// I make my pot dongle a 3 pin header, so all I would do is basically make a 2 into 1 lead to split the pot to the two controllers.

That is actually doable ;), but this one pot two controller trick is only possible on 0-100% version, and unfortunately not for 2-98% since the design limitation. :shrug:

Also if you're going to use this trick, make sure both controller are supplied by the same power lanes, otherwise they will behave strangely.

What do you mean by "pole switched for a backwards level fan" ? Are you saying its the inverted pwm fan that spins slower on higher duty cycle ?

If that is the case that you're planning to control multiple fans using only single controller, but those fans are mixed bteween nomal and the inverted, just make another inverted schmitt trigger (IST) using single 555 as previous post, and put the input of this new IST's input to the controller output, then this extra IST output to drive those inverted fans.
 
Okay, let me come at this another way then.. lol..
I only have 556 IC's and would like to get something "functional" with what I have at least for the moment.. I have a question.. was there a diagram to this "triple 556" controller?? If I could get a grasp of how each one ties in I could be able to plot a solution for the time being.
 
I was wondering, hooking up additional 555/6 timers to the output seems like a lot of work, would it be possible to just use some logic gates as a buffer? Like get a chip with 4 AND gates, put the PWM out into the input of each AND gate, and then let the AND gate outputs drive your fans. I bet with a little looking we could find double NOT gates to buffer the signal as well.
 
Okay, let me come at this another way then.. lol..
I only have 556 IC's and would like to get something "functional" with what I have at least for the moment.. I have a question.. was there a diagram to this "triple 556" controller?? If I could get a grasp of how each one ties in I could be able to plot a solution for the time being.

Ok, simple questions, with your existing 556 ics, are you going to ...

A. Make single controller but want to drive many-many fans and using the 556 as the booster and also can be an inverter to drive mixed fans of normal and inverted one ? If this is the answer, check this HERE. For those inverted pwm fans, need few connections changes only, will post the schematic if you need this.

..or..​

B. Make multiple fan controllers that each one has it's own pot, so you can drive multiple fans using different controllers, and can adjust each fan differently using those different pots. If this is the case, just multiply the ciruits as many as you like.

So which one ?


I was wondering, hooking up additional 555/6 timers to the output seems like a lot of work, would it be possible to just use some logic gates as a buffer? Like get a chip with 4 AND gates, put the PWM out into the input of each AND gate, and then let the AND gate outputs drive your fans. I bet with a little looking we could find double NOT gates to buffer the signal as well.

Actually using 555 or 556 (double 555s in a single ic) is a lot better in this case, it has more powerful output drive than those logic buffers. Also this 555/556 ic is far more cheaper and easier to get.
 
Last edited:
Fair enough. I must admit, most of my training is in the digital world, my analog skills are a bit rusty. I think my circuit theory professor is weeping right now.
 
T=K, analog skills are going to extinct looking at the current new generations, its kinda sad for me too. :shrug:

Ok, way off topic, since you mentioned the word "analog", this reminds me of my two heros, both were elites in electronic analog world, Jim Williams and Bob Pease. But both had passed away recently this June :cry:, and its quite a tragedy, they were really good friends, and Bob Pease was killed in a car crash after leaving Williams’ memorial service. . :cry:

In memoriam

Jim Williams
View attachment 98433

Bob Pease
View attachment 98434
 
That is the ugliest mess of wires I've ever seen. And also quite possibly the coolest. My condolences to you on them.
 
It's pretty much A.. I can run multiple delta's off a single 556 2-98% controller, but what i'm trying to do in my particular case is just this.. control a delta, and a san ace, the san ace has the backwards pwm which is 0% duty at full positive instead of ground.. with one knob .. is the goal.
 
Actually we only need a single 555 to add that extra inverted pwm output, but since you have tons of 556 instead of 555 :D lol ... j/k , so here it is :

View attachment 98462

With this additional 556 ic, you got yourself two normal pwm ports, with this both will be enough for driving lotsa normal pwm fans :attn:, and the other one is the inverted pwm output that only serves those weirdos inverted pwm fans like your san ace. :D

Now you owe us all another video of this mutant controller driving mulitple mixed bag of pwm fans. :popcorn: :p ..lol
 
Was there ever much luck in driving these fans from the arduino?

I have a project I would like to dive into, where I would like to drive 3 "channel's" of fans, one bank of 6 25mm fans, 1 pump, and another bank of 4 25mm fans from an arduino. I would likely end up putting some LED's on the extra pwm circuits.

I am assuming we will need some kind of pwm signal amplifier to drive these fans, and possibly more than 1 or 2 LED's off the arduino.

Anyone have a starting point I can use for a schematic?

Thanks guys.
 
First off, are they PWM fans? Is the pump a PWM pump?
If so in both cases, this shouldn't be too difficult of a project if you don't mind the PWM speed being ~30kHz rather than 25kHz. ~15kHz is another option.
If all the fans and the pump adhere to the official PWM spec you won't need an amp, the Arduino pins are rated for 40ma and the spec calls for 5ma max per fan. Given that the bank of six could be split between two pins (making four channels) you'd be well within Atmel (the people that make the chip in the arduino)'s spec.

Before we can dive into a schematic I need to know what sort of control method you're after.
Knobs?
Buttons?
Temps? Temps of what?

I have a button type dual channel controller based on the ATtiny85, an eight pin flavor of the Arduino's chip, so I know it's doable.


EDIT:
If you have an ISP/ICSP programmer you can swap the resonator (or crystal) out for a 12MHz to 13MHz flavor, combined with running timer0 and timer2 at full speed will give you between 23.3kHz and 26kHz PWM and four outputs.
Downside: No uploading via serial without a custom bootloader, and millis/delay/micros will be out to lunch (though by a known factor, one second will likely be ~7000 millis, or something like that).
That's assuming millis uses timer0 or 2, if it uses timer1 it'll be off by the percentage of 16MHz the resonator/crystal you use is. Example: 12MHz resonator is 80% the speed of the stock 16MHz resonator/crystal, so to delay for one second you would use delay(800);
Nothing to be done for serial uploading other than compiling a custom bootloader.
 
Last edited:
First off, are they PWM fans? Is the pump a PWM pump?
If so in both cases, this shouldn't be too difficult of a project if you don't mind the PWM speed being ~30kHz rather than 25kHz. ~15kHz is another option.
If all the fans and the pump adhere to the official PWM spec you won't need an amp, the Arduino pins are rated for 40ma and the spec calls for 5ma max per fan. Given that the bank of six could be split between two pins (making four channels) you'd be well within Atmel (the people that make the chip in the arduino)'s spec.

Before we can dive into a schematic I need to know what sort of control method you're after.
Knobs?
Buttons?
Temps? Temps of what?

I have a button type dual channel controller based on the ATtiny85, an eight pin flavor of the Arduino's chip, so I know it's doable.


EDIT:
If you have an ISP/ICSP programmer you can swap the resonator (or crystal) out for a 12MHz to 13MHz flavor, combined with running timer0 and timer2 at full speed will give you between 23.3kHz and 26kHz PWM and four outputs.
Downside: No uploading via serial without a custom bootloader, and millis/delay/micros will be out to lunch (though by a known factor, one second will likely be ~7000 millis, or something like that).
That's assuming millis uses timer0 or 2, if it uses timer1 it'll be off by the percentage of 16MHz the resonator/crystal you use is. Example: 12MHz resonator is 80% the speed of the stock 16MHz resonator/crystal, so to delay for one second you would use delay(800);
Nothing to be done for serial uploading other than compiling a custom bootloader.


As for the control method, the original idea was to get data via lcdsmarte through the USB port. I would send core temp's, GPU temps, and board/northbridge temps.

The arduino program would take the average of the CPU/GPU temps (since they are on the same water loop), and set all 6 radiator fans based on that. It would also change the speed of the 4 case fan's based on board temps, or whatever other temps i can get easy acess too.

I also have a pwm water pump, and I had thought about running it along with the radiator fan's, though I am not sure what the best variable to determine water pump speed would be.

The arduino I was initally looking at was the Uno, with 6 pwm outputs. I would have liked to use at least 2 of those outputs to drive blue and red LED's, so that the color of the inside of the case would change from blue to red with system or core temperature.

So, with 6 pwm outputs, my plan was:

1 - Radiator fans
2 - Water Pump
3 - Case fans
4 - Blue LED
5 - Red LED
6 - future development

The fans I am using are nothing too fancy, so far as I know.
Akasa Apache Black AK-FN058 120x25mm 16 dB(A) / 57 CFM - IP54 rated

and the pump is pretty well known, Swiftech MCP35X 12 VDC Pump

As for PWM frequency, I would think keeping things at the stock arduino frequency would make things much easier.
 
That sounds like a pretty good setup, getting USB data into the Arduino requires some doing though. That's the main hurdle.

The PWM fans and pump aren't likely to appreciate the stock 500Hz PWM of the Arduino much. They may accept it, but it will likely be on the noisy end of things. They'd prefer something in the 20000Hz-30000Hz range. It really isn't that hard to set the PWM frequencies to something reasonable for the fans/pump. If you put them on timer1 and timer2 you won't have to adjust millis at all, and you can use the timer0 PWM outputs for the LEDs, 500Hz is fine for them.
Cheat sheet: http://www.arduino.cc/playground/Main/TimerPWMCheatsheet


The very first thing I would do is buy an Uno (though personally, I like the BareBonesBoard from moderndevice better, it's easier to breadboard with. You can get it, the programming adapter (USB-BUB) and a cable for ~$30. You do have to solder it together, but it's easy) and work on getting the data from the PC into the Arduino first, that'll be the hardest part. Just run some LEDs based on the cpu/gpu temps.

Once you have that under control, move on to actually running fans and pumps.
 
I hate being a newbie. I'd like to build a PWM controller using some digital means to increase the fan speed (instead of using a pot). I've read thru some of this thread (dang...) but out of the 28 pages where can I start?

I have 2 Nidec BetaV TA3500DC 12V 2.3A PWM fans. They came out of a Dell XPS Gen4 tower. Any ideas where I can start reading (other than page 1)?
Thanks
 
Back