What's New

CPU Cooler
VCool 2.0 
Waterfall Pro 
Current Tests 
Test Archives

UDMA Driver 
Windows 95
Windows 98
Windows NT

Way 2 Cool 
Going for 504
More on 504
Cheap Sandwich
BX6r2 Diode Fix
Lap that Slug
Celeron PPGA
Journey to 1080
Building an NT Box
Heat Pipe 1
Heat Pipe 2
Heat Pipe 2.2

Heat Sinks 
A&C Prototype Sink
Alpha P125
Alpha P521
CPU Cooler
Tom's Sink
Water Cooler 1
Water Cooler 2
Water Cooler 3
Water Cooler 4
Water Cooler 6
Water Cooler 7

Way 2 Cool
Thermometer 2
K-6 heat sink
Case Cooling
Heat Sink Tester
More Case Cooling
Klamath heat sink
Q500A Cooling
My Server Temps
Temp Calculators
CKS400 Rack Case
Fan Controller
Cooling Links
Downloads Page

Tips and Trix
Dual Boot Win95 / 98
Dual Boot Linux/NT4
D-B Linux/Win2k
Hot Flash your BIOS

Family Stuff
Prom / St. John

Email Jim

So far, so good.
At about this point you may be thinking that this is too easy.  You're right.  The hardware is the easy part.  Calibration is a little tougher, but certainly not difficult.

You'll need
Celsius reading thermometer with a probe (or convert °F to °C).
Some plastic wrap or the finger from a latex glove and a twist-tie.
A cup of water.
The calibration software - steinhart.zip - (and Excel to run it on).
gp_Temp software.

First we need to setup the Windows gameport drivers.

Windows 95/98 Driver Setup

1. Click "Start" | "Settings" | "Control Panel"

2. Double click "Gaming Options" (Joystick Icon)

3. Click "Add"

4. Choose "2-axis, 2-button joystick" | Click "OK"

5. Click the "Controller IDs" tab

6. Make sure that the "Port Driver" box reads "Standard Gameport"

7. Make sure that the "Poll with interrupts enabled" check box is checked | Click "OK"

gp_Temp Setup

I have gone through the calibration process quite a few times and have found that using water as the medium to get the readings is much easier and more accurate than trying to measure changing air temperatures.  Water holds its temperature longer and transmits its heat better.

After unzipping the "gp_Temp1_0.zip" file, double click "setup.exe" and follow instructions to install.

Open  gp_Temp.  If the Windows driver and/or thermistors are not installed correctly, you will receive error messages.

NOTE: When the program opens for the first time, don't worry that the temperature readings are off (way off for most cases).  The only thing we need at this point is for the "port status" to read "port status: sensors connected."  If it doesn't, recheck your thermistor hookup and joystick driver installation.  Also, the numbers in the setup coefficients are there only as place holders.  They will be replaced during the calibration process.

1. With gp_Temp open, click "File" | "Setup."  At the top are the "Raw Data" boxes.  These are the readings from the thermistors through the gameport.  The allowable port values are "0" to "65535."

2. Below "Raw Data," click on the dropdown box arrow and select Sensor 1-1 for Sensor 1 and Sensor 2-1 for Sensor 2.

Start by choosing Sensor1-1 from Sensor1 dropdown box.

3. Click "Save to Registry," then "Refresh Settings."  This creates the necessary registry keys for the rest of the process.

4. In the test boxes at the bottom, you may now rename all of the sensors (if you wish).  When finished, click "Save to Registry" and "Refresh" again. This will rename the items in the dropdown box and set the current sensor name above the main temperature boxes.

5. Select "Celsius" for both sensors. Click "Save" | "Refresh."

6. Bundle your 2 thermistors together with the probe from a Celsius reading thermometer.  Seal them in plastic wrap if you are going to use the water method.  You will need a total of three readings at least 10°C apart (15° is preferable) to compute the "Setup Coefficients."

Left: Two thermistors (10 & 50 k) and a thermocouple (center) for getting the temperatures accurately.  While a digital thermometer with a probe makes the job easy, most any thermometer can be made to work.  
Right: All three stuck inside the finger of a latex glove to waterproof them.

7. Place the wrapped thermistors in a glass of water.  Let the readings from "Raw Data" stabilize as much as possible and note both the temperature in degrees C (it MUST be Celsius or converted to Celsius) and the raw data readings for that temperature.  If the Raw Data readings fluctuate, note the high and low reading for the temperature.  When it comes time to input these readings into the Steinhart - Hart equation, you can try the high, low and median to see which give the best results.  Write down the results for later use.
Something like
Sensor1: 25°C = 3296  (Readings from my 10 k thermistor)
Sensor2: 25°C = 17283 (Readings from my 50 k thermistor)

Read the Raw Data at the given temperature.

8. Raise or lower the temperature at least 10°C and take the readings again.  I have found that working with hot tap water and letting it cool slowly gives the best results.  If you need to get the water cold for calibrating a 10 k thermistor, there's always ice.  You can get a few degrees below freezing by making a brine of salt and a little water and filling the cup with ice cubes.  Write down your results.
Again, something like
Sensor1: 10°C = 5203
Sensor2: 10°C = 31036

9. One more time. Raise or lower the temperature at least 10°C and take the readings again.
Once again, something like
Sensor1: 0°C = 7903
Sensor2: 0°C = 53133

It doesn't matter what temperatures you read the Raw Data at, as long as they are at least 10°C apart (20°C between the highest and lowest temps).  However, I have found that the thermistors are most accurate at the following ranges:

 10 k: -15°C ± 25°C (5°F ± 45°F)
 50 k:  10°C ± 25°C (50°F ± 45°F)
100 k:  35°C ± 30°C (95°F ± 50°F)

If you are using a 10 k with a 50 k or 100 k thermistor, it is probably best to calibrate the 10 k thermistor separately.  On my system, the absolute temps I can read with any accuracy are

10 k ohm thermistors: -40.5°C to 25°C (-41°F to 77°F)
50 k ohm thermistors  -3.5°C to 65.5°C (26°F to 150°F)
100 k ohm thermistors  7.7° to 77°C (46°F 171°F)

Setting the Temperature Coefficients
1. Download steinhart.zip.   It's a small 15 kb file that will plot the temperature setup coefficients using the Steinhart-Hart equation.

2. Unzip steinhart.zip and double click on the ST&HT_EQ.xls file to open it in Excel.

3. Starting with the lowest temperature and Raw Data reading for Sensor 1, enter the temperature into cell B14 and the Raw Data into cell C14.

4. Enter the mid-range temp and data into B15 and C15.

5. Enter the high temp and data to B16 and C16.

6. Click on any blank cell to compute the coefficients.

NOTE: If any of the coefficients (B24, B25, and B26) have a negative value (-0.003 or whatever) your temperature/data readings are incorrect and cannot be correctly computed.  Negative values WILL NOT work in gp_Temp.  Try taking the Raw Data / temperature readings again and using a wider range (15°C, rather than 10°).  If you had fluctuations in the Raw Data readings, try your high, low and median readings.  Once you get proper results from the Excel sheet, you can determine which of the three readings is causing the problem and retest that temperature.

Left is a set of temps and Raw Data that gave a proper result.  Note that the Coefficients are positive numbers.
Right is a set that didn't work. Note the coefficient "b" is negative and the resistance readings on line 40 down are listed as #NUM!, rather than the resistance at temperature figures.  If this happens, retest.

7. Reopen gp_Temp to the setup screen and make sure that the correct sensor is chosen under Sensor 1.

8. Switch back and forth between Excel and gp_Temp to copy and paste the coefficient for "a" in cell B24 into the text box labeled A1 under Sensor 1 "Setup Coefficients" in the gp_Temp setup screen.

9. Copy the coefficient for "b" (cell B25 on the Excel sheet) to Sensor 1 - B1.

10. Repeat for "c" (cell B26 on the Excel sheet) to Sensor 1 - C1.

11. Click "Save to Registry" and "Refresh Settings."

12. Repeat steps 3 through 11 for the Sensor 2 temperature readings and Raw Data.

13. Close Excel.  Do not save changes to the worksheet, if prompted.

14. If all is correct, you should have a working gameport thermometer.

First, I offer no warranty on this software.  Hell, I can't even guarantee that it will work on your system.  This is the first program I have released outside of a small circle of friends and while I have tested it on as many machines as I could find and have fixed what I think are all of the bugs, chances are pretty good that I have missed something.  If it wipes your drives, turns your monitor monochrome, or makes a pass at your neighbor's cat, I'm not responsible; however, if you find a problem or bug, please let me know and I'll do my best to rectify it.

The next step for the program is to add two more channels (most gameports will work with two joysticks, so I'll have two more axes to read from).  My main reason for the gameport thermometer was to give me a way to log temps from a new heat sink tester I want to build.  Once I get the 4 channel thermometer up and running, it's on to building the tester.  If you're interested in what approach I plan to take with a tester, it will follow the same general design as the one built by Tillmann for his testing on his Anandtech articles.  His article on the ideas behind the tester, as well as some good pictures of the unit can be found here http://www.anandtech.com/showdoc.html?i=1429.  Well worth the read.

I have also been looking at some circuits that will allow me to read *many* sensors from the serial port.  The serial port allows for better accuracy and the opportunity to control external devices.  However, the serial port thermometer is somewhere in the future.  As usual, I have more ideas than time.

page 1
page 2
page 3
page 1
page 1
page 2
page 3