Re: Project: Call Of Duty Modern Warfare 2 !!!UPDATE!!! 26 April 2010
Re: Project: Call Of Duty Modern Warfare 2 !!!UPDATE!!! 26 April 2010
Nice additions. :D
I switched from my old Delrin fillport to a new 'Shiny Silver' when i was mounting the Monsta on Zeus (delrin was too big), and I really like the look a lot better. The metal ones feel so much more solid, and just look great. :D
Re: Project: Call Of Duty Modern Warfare 2 !!!UPDATE!!! 26 April 2010
I dunno which I like better. The derlin fill port I have from DD that came with the fill port res that I bought from blueonblack has a very solid feel to it. It might be because it screws into the res with the large threads.
Re: Project: Call Of Duty Modern Warfare 2 !!!UPDATE!!! 26 April 2010
Oh, don't get me wrong, the delrin one is really solid too, it's just that the metal one feels so much nicer.
Re: Project: Call Of Duty Modern Warfare 2 !!!UPDATE!!! 26 April 2010
I plan on building a water pump cover that has a 16x2 or 20x4 LCD that will display several parameters about its WC loop including: 2 temperature locations, 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.
The 2 10k thermistors are 2 temp sensors from Bits Power which use a 10k thermistor epoxied into the stop fitting. The 10k Trim pot is there to set the contrast on the LCD.
Code:
//Arduino Controlled 2 sensor Temp Display. Uses 2 10k thermistors and a 10k pull up resistor.
//Code By Charles Gantt http://themakersworkbench.com
//Code based on Thermistor2 Elaborate code found here http://www.arduino.cc/playground/ComponentLib/Thermistor2
//This code was developed as a side project to my Call of Duty Modern Warfare 2 Case mod found at http://www.thebestcasescenario.com/forum/showthread.php?t=21320
#include <LiquidCrystal.h>
#include <math.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
double Thermistor(int RawADC) {
long Resistance;
double Temp;
Resistance=((10240000/RawADC) - 10000);
Temp = log(Resistance);
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 273.15;
return Temp;
}
void printDouble(double val, byte precision) {
lcd.print (int(val));
if( precision > 0) {
lcd.print(".");
unsigned long frac, mult = 1;
byte padding = precision -1;
while(precision--) mult *=10;
if(val >= 0) frac = (val - int(val)) * mult;
else frac = (int(val) - val) * mult;
unsigned long frac1 = frac;
while(frac1 /= 10) padding--;
while(padding--) Serial.print("0");
lcd.print(frac,DEC) ;
}
}
void setup() {
Serial.begin(115200);
lcd.begin(16, 2);
}
#define ThermistorPIN 0
#define Thermistor2PIN 1
double temp;
void loop() {
lcd.setCursor(0, 0);
temp=Thermistor(analogRead(ThermistorPIN));
lcd.print("Sensor 1 ");
printDouble(temp,2);
lcd.print((char)223);
lcd.print("C ");
lcd.setCursor(0, 1);
temp=Thermistor(analogRead(Thermistor2PIN));
lcd.print("Sensor 2 ");
printDouble(temp,2);
lcd.print((char)223);
lcd.print("C ");
delay(100);
}
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. (Download all the files there)
http://fritzing.org/projects/arduino...-info-display/
Re: Project: Call Of Duty Modern Warfare 2 !!!UPDATE!!! 26 April 2010
Re: Project: Call Of Duty Modern Warfare 2 !!!UPDATE!!! 26 April 2010
This is not the only update this weekend. I also have some painting and metal fab stuff to post. The painting is a set back though. (bad batch) More on that later though. I am off to the grind now.
Re: Project: Call Of Duty Modern Warfare 2 !!!UPDATE!!! 26 April 2010
DDCs output RPM on the blue wire. Use that, and a volumetric calculation to output flow.
Re: Project: Call Of Duty Modern Warfare 2 !!!UPDATE!!! 26 April 2010
With much help from Crenn we finally got this figured out.
The water pump I have selected outputs RPM signals similar to a standard three wire PC fan. In fact you can plug the signal wire to the CPU fan header on a motherboard and if your pump dies or stops sending a signal it will shut your PC down to prevent a CPU failure due to heat. While a nice feature for safety, it will be much cooler to see the RPM at which your pump is running than knowing your CPU wont melt if it dies right?
Since the Fan and Pump RPM signals are so similar, and my water pump has not arrived yet I decided to dev using a 120mm PC fan. The following schematic should explain how to wire things up.
This is pretty simple to hook up. First you need to run the Signal wire (almost always yellow) to the breadboard. Then from it connect a jumper wire to Arduino Digital Pin 2. Also from the sensor wire you need to connect a 10k resistor to the Arduino's 5V pin. This is a simple pull-up resistor. We also need to make sure that we connect the fans ground line to one of the Arduino's ground pins. Next just connect the fans power wire to the PSUs 12v line and the fans ground wire to the PSUs ground.
Now upload the following code to your Seeeduino, and then open the serial terminal. Again I would like to thank Crenn for his help with the code.
Code:
//code by Crenn from http://thebestcasescenario.com //project by Charles Gantt from http://themakersworkbench.com
//Varibles used for calculations
int NbTopsFan;
int Calc;
char counter;
char flag;
unsigned long time[2];
//The pin location of the sensor
int hallsensor = 2;
//Defines the structure for multiple fans and their dividers
typedef struct{
char fantype;
unsigned int fandiv;
}fanspec;
//Definitions of the fans
fanspec fanspace[3]={{0,1},{1,2},{2,8}};
char fan = 0; //This is the variable used to select the fan and it's divider, set 1 for unipolar hall effect sensor
//and 2 for bipolar hall effect sensor
//This is the function that the interupt calls
void rpm()
{
if (counter == 0)
time[0]=millis();
if (counter == 100){
time[1]=millis();
flag=1;
cli(); //Disable interrupts
}
}
//This is the setup function where the serial port is initialised,
//and the interrupt is attached
void setup()
{
pinMode(hallsensor, INPUT);
Serial.begin(9600);
attachInterrupt(0, rpm, RISING);
}
void loop ()
{
NbTopsFan = 0; //Set NbTops to 0 ready for calculations
sei(); //Enables interrupts
while(flag==0);
flag=0;
counter=0;
Calc = (((60*100)/(time[1]-time[0]))/fanspace[fan].fandiv);
Serial.print (Calc, DEC); //Prints the number calculated above
Serial.print (" rpm\r\n"); //Prints " rpm" and a new line
}
You should see an RPM output in the serial terminal. It is accurate within 10-15 RPM of the fans actual RPM which is close enough for me. If your RPM output seems to be double what it should be your fan may have a bipolar Hall efect sensor and its counting each pass of the magnets pole as a single RPM when each should be 1/2 an RPM. No worries though as this is an easy fix. Just simply change the " char fan = 0 code from 0 to 1. Upload the modified code and you should be seeing accurate RPM numbers.
Next time we will cover how to measure and display the liquid flow rate of the system.
What I have left to do:
- Work out flow meter design and schematic
- Determine alarm parameters
- Complete code and refine it.
My fritzing page on this project. (Download all the files there)
Reading PC Fan / Water Pump RPM with an Arduino
Re: Project: Call Of Duty Modern Warfare 2 !!!UPDATE!!! 26 April 2010