PC Liquid Cooling Information Center.

This is actually a side project for my Call of Duty Modern Warfare 2 case mod found here. I am building a water pump cover that has a 16x2 or 20x4 LCD that will display several parameters about the water cooling loop including: 2 temperature probes, Pump RPM, liquid flow rate and possibly even an audio alarm in the event of pump / flow failure.

This is what I have so far is the schematic for the temp sensors. I am waiting on parts to arrive for the flow meter and need to do some probing to figure out the pump RPM. I also need to get started on the code. My plan is to have 4 different displays on the screen. First will be a simple text message displaying "Liquid Cooling Control Center" the next will display the liquid temp from the temp sensors. Following that I would like it to display the pump RPM and liquid flow rate. The last will display system up time if possible.

The 2 10k thermistors are 2 temp sensors from BitsPower which use a 10k thermistor epoxied into a G1/4 stop fitting. The 10k Trim pot is there to set the contrast on the LCD.

What I have left to do:

  • Figure out flow meter
  • Figure out how to read pump rpm (PPM signal on yellow wire?)
  • Write code
  • Set alarm parameters.

My fritzing page on this project.
http://fritzing.org/projects/arduino-controlled-pc-water-cooling-info-display/

I got some of the code done last night. A big thanks to OvRiDe and Crenn over at thebestcasescenario.com for helping me figure things out.

// arduino controlled liquid cooling info center Code named "big brother"
// by charles gantt aka oneslowz28 http://themakersworkbench.com
// special thanks to ovride, and crenn from thebestcasescenario.com
// this is an ongoing project for my cod mw2 case mod my intention is to create an
// all in one information center that displays data from my pc watercooling system

#include <LiquidCrystal.h>
#include <math.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of rows and columns: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.setCursor(0,0);  //set cursor to line 1 column 1
  lcd.print("Satcomm Info Initializaion");   //catchy name for system
  lcd.setCursor(0,1);  //set cursor to line 1 column 1
 
}

/*void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}*/

// begin temp sensor code
double Thermister(int RawADC) {
 double Temp;
 Temp = log(((10240000/RawADC) - 10000));
 Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
 Temp = Temp - 273.15;            // Convert Kelvin to Celcius
 return Temp;
}

void loop() {
lcd.setCursor(0,0);  //set cursor to line 1 column 1
lcd.print("Sensor 1 ");   //Lable first temp sensor
lcd.print(Thermister(analogRead(0)));  // display Celcius
lcd.print("c");  //lable temp format displayed
lcd.setCursor(0,1);   //set cursor to line 2 colum 1
lcd.print("Sensor 2 ");   //lable second temp sensor
lcd.print(Thermister(analogRead(1)));  // display Celcius
lcd.print("c");  //lable temp format displayed
 delay(100);    //length of time screen is displayed
}