November 24, 2012
Building useless stuff since 2009 ;)
about a year ago
Just got done doing a 0.2C step test. Works pretty well with minimal fluctuation (I got a reading of 24.4C with every 3-5 reading set giving me 24.6C with a readout interval of 1 second).
Change your map line to this using int values:
TempReadingCelcious = map(TempReading, 50, 882, -400, 1250);
TempReadingFahrenheit = (1.8 * TempReadingCelcious) + 320;
Taking an additional set of average readings smooths out the fluctuation (I take 5 base readings, average, take 5 averages and average again).
You will get 3 digit readings: 244 which equals 24.4C. Fahrenheit goes in 0.4F steps using this.
The sensor has an off set value of 100mV. -40C = 100mV; 25C = 750mV; 125C = 1750mV. Scroll down to my other comment explaining how to map on the arduino.
For you Arduino folks, here is how I got mine to work in regards to mapping the input voltage at a 5V referance:
TempReadingCelcious = map(TempReading, 20, 358, -40, 125);
Keep in mind that at a 5V referance you get steps 0 - 1023 at 4.8828mV steps (don’t use 4.9mV from the Arduino website for actual calculations… you get offset results very quickly). With 10mV steps of the sensor you will run into +-1 degree fluctuation and +-2degree Fahrenheit fluctuation.
To fix this issue do the following:
use analogReference(EXTERNAL) (Make sure you refer to this site so you do not damage your board: http://arduino.cc/en/Reference/AnalogReference ) and limit the reference voltage externally to about 2 volts by connecting the 3.3V out to the AREF pin through a 20k resistor (2 x 10k in series will do the trick). The reason you get about 2 volts (2.030769V +- resistor tolerance) as Reference is due to the internal 32k pull down resistor acting as a voltage divider. The formula is provided on the Arduino site for other voltage calculations.
To calculate the new mapping we will do the following:
1. New 0 - 1023 resolution = 2030.769mV / 1024 steps = 1.98317mV per step; 2. Calculate your maximum and minimum mapping values. TM36 -40C = 100mV; 25C = 750mV; 125C = 1750mV; 100mV / 1.98317mV = 50.4243 so lets call it 50; 1750mV / 1.98317mV = 882.4256 so lets call it 882; 3. Plug in the new mapping values in the Arduino map line: TempReadingCelcious = map(TempReading, 50, 882, -40, 125);
I hope this helps everyone that wants to use these for an Arduino project. I get consistent readings at full C steps by taking the average of 5 readings before mapping. I don’t own a thermometer so I used my AC thermostat as reference and both my Arduino and thermostat were reading the same temperature. In theory this should let you get down to 0.2C steps accurately but I haven’t tried this yet.
No public wish lists :(
Forgot your password?
No account? Register one!