3-fan controller with OLED Display and navigation knob?

project has been edited for simplicity :slight_smile:

Hi Arduino community,

I want to embark on my first Arduino Uno project that does the following:

1. Controls 2 computer fans
PWM Fan 1 and 2 = 120mmx25mm COOLER MASTER 4-BMBS-20PK-R0
Voltage 12 V, Current (Ampere) 0.36A Max., Power Consumption 4.32 W Max.
PWM Fan 3 = 180mmx18mm Silverstone FW181
Voltage 12 V, Input Current (0.04 ~ 0.54A) [@ max speed], Input Power (0.24 ~ 9.18W) [@max speed]

2. Automatically Adjusts speed of each fan according to a temperature target (input by user) that is referenced to each 10K thermistor temperature sensor in each radiator. Goal = display 5 temperatures on OLED display (Temp INPUT before radiator and Temp OUTPT after each radiator, etc)

3. Use an i2c 20x4 OLED character display

My question: How do I put it all together?

The test system = water cooled computer with 3 radiators. (180mm fan for top radiator & 120mm pwm fan for upper-right radiator & a secondary 120mm lower radiator.

Why not use a 5" TFT touch screen? There are plenty on ebay, and they usually work with the UTFT and UTouch libraries. I also have a Library that works with both of them and gives you a wide array of functions you can use.

HazardsMind:
Why not use a 5" TFT touch screen?

Quite complex for a first Arduino project. Maybe the Mk II!

An Uno will be more than enough. To keep size down, use a Nano 3 or Pro Micro. They all have similar capabilities.

Simplest temp sensor to use would probably be lm35. Three of these could be wired to 3 analog inputs. Each would need 3 wires running from the Arduino to the sensor (+5V, 0V and temp output). The +5V and 0V connections could be shared by all 3 sensors, so a cable with 5 or more cores, like offcuts of cat5 cable, could be used to daisy chain the sensors and make the wiring neat.

A little more advanced would be to use 3 ds18b20 temp sensors. These are digital and can be daisy chained on the same 2-core wire.

A standard 16 x 2 character OLED display would fit in a drive bay panel. But they are 10 times the price of LCD equivalent! Get one with an i2c adaptor pre-fitted for easiest use, but as your Arduino will have plenty of spare pins, i2c not essential.

To drive the fans, you will need transistors. BC337 are cheap and should do fine.

Hi HazardsMind,

I'm open to TFT, but I really liked the wider viewing angles and over display quality of the OLED displays. Are there any higher quality TFT models that compare to a good OLED character display in terms of quality that you'd recommend?:

Also, do you think there is any problem with Arduino Uno displaying on an OLED character display?

Sorry, not that I know of, but then again I don't have nor have ever used a OLED display before.

I already have the 10K thermal sensors, so how can I make these work with Arduino?

Check out this link Thermistor2

Post a link to their data sheet. "10K Thermal Sensor" could be one of many things.

2 sensors are this model:
http://www.frozencpu.com/products/23011/ex-tub-2776/XSPC_G_14_Thread_Plug_with_10k_Sensor_-_Black_Chrome.html

1 sensor is this model:
http://www.frozencpu.com/products/21218/ex-tub-1992/Phobya_G14_Inline_Temp_Sensor_Coupler_-_2-Pin_-_Black_71227.html

Also, do you guys know where I can buy the largest viewable 20x2 character OLES display (blue text, black background) in usa? The models I've found online have a significantly smaller viewabla are compared to the overall board size.

The specifications on those links are useless from an Arduino point of view.

OLED 20×2 displays are probably all the same size. Would a 20×4 fit?

The 20x4 oled character displays I've found online all have a 60mm frame height or greater. This is too tall for the 5.25" drive bay height (~40mm max). I don't mind going with a 20x2 oled at this point and just use the USB port to program fan settings from the PC, thereby forgoing the dial control I had in mind for the front panel. I need to get this running asap, so the simpler = better :).

Regarding the temperature sensor, my understanding is they're also referred to as 10K Thermistor, so that includes the thermistor itself coupled with 10k ohm resistor. I'm learning as I go, so does that sound like a good explanation of the sensor specs?:

iLearn:
my understanding is they're also referred to as 10K Thermistor, so that includes the thermistor itself coupled with 10k ohm resistor.

No, I think it means a thermistor with a resistance of 10K at 25C. You would need to add another (fixed) resistor (e.g. 10K) to form a voltage divider with it.

iLearn:
I'm learning as I go, so does that sound like a good explanation of the sensor specs?:
Arduino Your Home & Environment: The $2 Thermistor Temperature Sensor

Yes perhaps it does.

Looking at this picture from the link you posted, its clear the sensor has only two connectors. That tells me that your theory about a combined thermistor and 10K resistor probably isn't correct. You would need 3 connectors for that. The thermistor and 10K resistor would form a voltage divider and therefore need connectors for +V, 0V and the output that varies with temp.

With only two connectors, my guess would be that this is a simple thermistor with a resistance of 10K at 25C.

This maybe a cool option. Looks like it would fit, the height is only 38mm. It has multiple serial input options, so might be easy enough to interface with the Arduino...

http://www.ebay.co.uk/itm/1-8-Serial-UART-I2C-SPI-Color-OLED-160x128-Display-Module-for-Arduino-PIC-Raspi-/121357528457?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item1c4178ed89

I've decided to stick with 20xX Character-based oled display instead of graphic one to KISS (keep it stupid simple). Afterall, this is my first Arduino UNO project :grin: .

What do you guys think of this 20x2 OLED character display for the purpose of this project?:

http://www.ebay.com/itm/IIC-I2C-2002-OLED-Module-Display-For-Arduino-PIC-AVR-ARM-/131059330863

or this 20x4 OLED (perfect size for 5.25" drive bay cover):

http://www.ebay.com/itm/IIC-I2C-2004-20x4-OLED-Module-Display-Arduino-PIC-AVR-ARM-/161298342368?pt=LH_DefaultDomain_0&hash=item258e2161e0

Attached file shows the Character display layout I had in mind: 3 temperature sensor readings up top in Fahrenheit and 2 fan speeds below. Is there a test I can perform with my sensors to determine the best way to integrate them with this Arduino Uno project? I have access to voltmeter and Oscilloscope fwiw. I appreciate all of your feedback and look forward to hearing more advice from you Arduino gurus. 8)

iLearn:
What do you guys think of this 20x2 OLED character display for the purpose of this project?:or this 20x4 OLED (perfect size for 5.25" drive bay cover):

They look great. I would check something first though. Ask the vendor if they are compatible with the standard Arduino LCD library (using the i2c connection). Or better still, if they can provide a sample sketch, post it here and we can check it looks "normal".

iLearn:
...2 fan speeds...

How do you plan to measure the fan speeds?

iLearn:
Is there a test I can perform with my sensors to determine the best way to integrate them with this Arduino Uno project?

Yes, use a multimeter on resistance setting. Dunk the sensor in a cup of hot water, along with an ordinary thermometer. Take a few temp/resistance readings as the water cools. If my theory is correct, it should be 10K at 25C. The temp/resistance relationship won't be quite linear. That's normal for a thermistor, and will be corrected for in your sketch, like in the example you posted earlier.

Thanks PaulRB,

I contacted the ebay seller asking the details you mentioned. Regarding arduino Uno reading the fan speed, that is a good question. How can I setup Arduino to read a 4-pin pwm fan's speed? (This is the smaller 120mm fan)

I'll perform the temperature test within 24 hours . :grin:

Because of shipping delays, it looks like the OLED display will be the last part of this project. So, 1st stage = get this Arduino Uno Fan Controller working without a display.

Search the forum for reading pc fan speeds. Someone is sure to have done that already.

Until your oled arrives, you can send the same text you would send to the oled to Serial.print(). To get the formatting you posted earlier, I recommend using the sprintf () command. You wont find that command listed on the Arduino language reference page, so search the forum or google.

Here's something. Looks like you may not need those npn transistors after all. The diagram shows the fan already has one built-in

http://forum.arduino.cc/index.php?topic=15514.msg113575#msg113575

Awesome, thank you! 8)

So, is this enough to get me started controlling both fans?:

http://www.microcenter.com/product/431997/Arduino_Uno_R3_MainBoard

Yes it should be more than enough, but see advice re size from my earlier post.