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?)
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
}