PC Fan/Pump Control w/ 0-10V Signal

I'm trying to make a small working model with a building automation controller that puts out a 0-10VDC signal. That signal will be used as a reference voltage to control the following:

  1. (x2) 12V PWM PC case fans (no particular model)
  2. (x1) 12V PWM PC watercooling pump (Corsair H60)
    Note: the makes/models of the components above can be changed, if necessary.

There are other components, but those shouldn't be a problem. My issue right now is figuring out whether it's possible to control 12V PWM equipment with a 0-10V signal.

Now, to be clear, I know that the controller won't put out enough current to supply power to these devices. That's not my goal here. All I want to do is be able to take the 0-10V control signal and vary the speed of the fans using said reference voltage. I can have a separate PSU providing the actual power to the fans/pumps.

What I want to know is:

  1. Is this project feasible?
  2. If the answer to #1 is yes, how do I go about doing it?

I've looked around a lot, without getting much in terms of an actual solution. Closest I have at this point is my friend believes you could do it by running the 0-10V signal into a voltage divider to get 0-5V, send that to an Arduino, use built in analog to PWM converter from Arduino library to convert to a PWM signal, output that using an "open collector" circuit (transducer+resistor), and then forward that to the fan which has it's own 12V power supply. Not totally sure if I explained that properly, but that's all I've got up to this point.

Any help would be much appreciated!

PS. As a backup plan, I think I could get a 2 wire 12VDC blower fan instead of a PWM one. I'll likely be using centrifugal blower fans anyway, so it looks like I could get away without having to use PWM control on those. That would still leave the pump, which I could probably either replace or just run it as an on/off device and vary the temperature on the opposite side of the heat exchanger (it's a mini heat system I'm making). The reason I REALLY like the idea of being able to control PWM is that PC's have so many existing components that just make life so much easier vs. having to build them from scratch or separately source each component.

It's plausible. The Arduino would be doing so little though, I wonder if it might be possible to just do it with discrete components instead.

Your friend is right more or less. You may be slightly misquoting him. But. This is easily done with analogRead() and analogWrite(). A voltage divider will work here fine.

It is possible that you'll need to do a bit more if the fans are fussy about the frequency and duty cycle from the PWM.

It's possible to do 1000 other ways, but it may be easiest/quickest to throw an Arduino at it. Incorporating a microprocessor at this point seems like overkill, but it leaves you with great opportunities for going beyond merely translating from voltage to PWM between your other blocks.

a7

wildbill:
It's plausible. The Arduino would be doing so little though, I wonder if it might be possible to just do it with discrete components instead.

I've looked into that as well, I just don't have anywhere near enough electrical knowledge to figure that out on my own. That having been said, if you know of a way I'm all ears!

alto777:
Your friend is right more or less. You may be slightly misquoting him. But. This is easily done with analogRead() and analogWrite(). A voltage divider will work here fine.

It is possible that you'll need to do a bit more if the fans are fussy about the frequency and duty cycle from the PWM.

It's possible to do 1000 other ways, but it may be easiest/quickest to throw an Arduino at it. Incorporating a microprocessor at this point seems like overkill, but it leaves you with great opportunities for going beyond merely translating from voltage to PWM between your other blocks.

a7

I am almost guaranteed misquoting him, but hopefully I at least got the general point across. What kind of extra steps would be required if it were more discerning in terms of frequency and duty cycle?

What are you thinking in terms of other opportunities? The 0-10V controller that I'll be using has a TON of functionality for analyzing trends, adding graphics, etc. so I don't think I'll really need anything else. It works directly with most of the components I'll be using (sensors, etc), just not with those described in my original post. Do you have any ideas on how to do this easily without an Arduino?

Not sure where the 0-10volt fits in.
(4-pin) computer fans/pumps only work with a 5volt PWM control signal, not with a varying voltage.
The 12volt power supply on those fans/pumps is constant.
Leo..

Wawa:
Not sure where the 0-10volt fits in.
(4-pin) computer fans/pumps only work with a 5volt PWM control signal, not with a varying voltage.
The 12volt power supply on those fans/pumps is constant.
Leo…

It’s a scale HVAC system model using an actual building controller that puts out a 0-10V control signal for things like fans, pumps, etc. The idea being that I can use this system as a teaching tool, so having all the software and programming of the controllers we actually use available, rather than making something using a different program, would be invaluable for training. Hence why I want to use the 0-10V on PC components such as fans and pumps, where it would be otherwise useless to do so.

Is that 0 - 10V analog DC or 10V PWM?

So you want to use a 0-10 variable voltage from some HVAC PLC to be read by an Arduino,
to control (4-pin?) PC fans/pumps that need PWM signals.

That only needs a 2-resistor voltage divider (2*10k) connected to an analogue input, and read/converted to PWM.

analogWrite(fanPin, analogRead(plcPin) >> 2);

Leo..

How many of these 0-10V inputs will there be?

JCA34F:
Is that 0 - 10V analog DC or 10V PWM?

Analog DC. The output would be the 12V PWM.

Wawa:
So you want to use a 0-10 variable voltage from some HVAC PLC to be read by an Arduino,
to control (4-pin?) PC fans/pumps that need PWM signals.

That only needs a 2-resistor voltage divider (2*10k) connected to an analogue input, and read/converted to PWM.

analogWrite(fanPin, analogRead(plcPin) >> 2);

Leo…

Thanks for the info! I’ll take a look at implementing this unless I can find something that doesn’t require an Arduino.

wildbill:
How many of these 0-10V inputs will there be?

Most likely 2-3 for the first iteration. Possibly more in a future version if I can figure out how to get a basic system running smoothly this way.

willitarduino:
The output would be the 12V PWM.

So NOT for 4-pin computer fans/pumps. They require 5volt PWM, if possible @25kHz.

2-pin or 3-pin fans require mosfet drivers, that automagically PWM the (12volt) fan/pump supply.

willitarduino:
I'll take a look at implementing this unless I can find something that doesn't require an Arduino.

This is an Arduino forum.
Unlikely that you can convert DC voltage to PWM easier/cheaper with other hardware.
A $2 Nano clone and two resistors is all you need, apart from a USB cellphone charger to power the Arduino.
Leo..

Wawa:
A $2 Nano clone and two resistors is all you need, …

Shame, shame. Splurge and buy the real deal. In all honesty I will have to admit buying Chinese clones myself – the price is really hard to beat. But I’ve mostly weaned myself from the habit. I’d rather support the folks who invented the device we all love so much, rather than those who try to make money by copying someone else’s work.
:slight_smile:

S.

Wawa:
So NOT for 4-pin computer fans/pumps. They require 5volt PWM, if possible @25kHz.

2-pin or 3-pin fans require mosfet drivers, that automagically PWM the (12volt) fan/pump supply.
This is an Arduino forum.
Unlikely that you can convert DC voltage to PWM easier/cheaper with other hardware.
A $2 Nano clone and two resistors is all you need, apart from a USB cellphone charger to power the Arduino.
Leo..

Sorry, I meant the fans runs off 12V, but is PWM. The PWM is 5V.

Alright, sounds good! Thanks!

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.