Watercooling monitoring and control

Hello everyone,

This is my first one topic on the forum, so greetings everyone. I am mounting a watercooling loop for my PC and would like your advice on my project. I would like to control a couple of fans and a pump according to both CPU, GPU and /or water temperature. After several mails with my motherboard company (Asrock Taichi X370) I can't control my fan with my GPU/water temperature even with software like Speedfan. So I'm thinking of using an Arduino to monitor and that. For the software part I´m not worried, I'm a Java developer so with a bit of forum research and Google I should be OK. Though, for the hardware part I'm kinda lost:

1) Which Arduino will be enough for the project? I will have 2 PWM fans, 1 PWM pump and up to 8 fans from 4 pins fan controller / hub to be controlled. I will also need to plug 2/3 temperatures and 1 tachometer sensor. 2) Will I need any other hardware like resistance, transistors etc? I've seen some project using it but I don't know for mine. That is totally out of my knowledge. 3) Any general advice? I'm a complete noob in the topic, wasn't even a developper one year ago ^^''.

Thank you for reading my message, and enjoy your day ! Lleweilyn

The fans and pump will need drivers as no Arduino can directly drive that sort of load. For pumps that rotate in only one direction a MOSFET (with a couple of resistors and a diode) driver would suffice. To choose a MOSFET the rated voltage and stall current of each part needs to be known. It depends on the fan if it can PWM controlled or not.

For sensing temperature there are options. Digital sensors like the DS18b20 are easy to use with available libraries and you can daisy chain several from 1 pin. Another choice is analog sensors like the LM35 or a thermistor. Thermistors are harder to use and require a resistor in series with the sensor to make a voltage divider circuit. The advantage of the thermistor is the lower time to react to temperature chages (probably not required for your use).

It is always good to have some 0.1uf caps for bypassing and decoupling.

dc motor driver.jpg

I’d advise you buy an Arduino and learn how to use it . Also look on the playground area for info on how to control hardware ( previous post is a start)

You can look at the various specs of Arduino types to get the I/O you want , then formulate your plan. On/off PID and so on.

There may be software around to run on the PC to control the fan speed . How you also control the pump is not so clear as it may not respond to PWM control , and may have little effect anyway ( flow rate not being the critical parameter?) and what do you when you sense things are too hot - increase fan speed or the pump speed , or both ?


this shows an instructables project for a tachometer and gives code to go with it. you might not want all of the project but can take ideas out of it.

this is a mosfet breakout board which could control your fans and pump. using this will reduce the amount of electronic work you would need to do.

this is a temperature measuring transistor. can be easily conected to an arduino.

above links will give you an idea of what you should be thinking of needing.

the amount of inputs and outputs you need an uno would be more than enough.

adafruit do a lot of breakout boards that will work with what you want to do.
do some googling and have a look.

With the 4-pin fans, you won't need a driver transistor. They have one built-in. But you will need a pwm pin if you need to control their speed.

For more detailed help, you must post links to the various fans, pumps and hubs you mentioned.

Most Arduino have only 6 pwm outputs and 6 analog inputs. However, you may not need one pwm output per can, if two or more fans can be connected to the same pwm pin/transistor and run at the same speed.

A basic Arduino like Nano or Pro Mini should be good enough, and they are smaller and breadboard compatible for ease of prototyping. I do not generally recommend Uno or Mega because they make breadboard prototyping so difficult and error prone.