Temperature Monitoring and Control with Arduino

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.

erock2112

Well-Known Member
Joined
Jul 23, 2009
Messages
317
Reaction score
6
Location
Chapel Hill, NC
Hey guys. I just got my Arduino Duamilanove in the mail, and I've put together a few temperature probes using thermistors to monitor fermentation temperatures. I'm in the process of building a probe in which to put a more accurate LM34 sensor for monitoring mash temperatures. The design for the thermistor probe comes from: http://home.chattanooga.net/~cdp/thermis/thermist.htm

Parts:

3 x 10KOhm Thermistor
1 x LM34 sensor
3 x 10K Resistor
1 x Arduino USB
1 x 3/8 OD 24 inch copper tubing (cut into 3 x 8" lengths)
1 x 3/8 OD 12-inch copper tubing
Wires - I used some speaker wire which fit nicely inside the copper tubing
Silicone Sealant
Solder, shrink tubing etc

Thermistors, LM34 and copper tubing (sorry for the cell phone pics):
cid_0104001633.jpg


Arduino!
0104001634.jpg


Thermistors and LM34 soldered
cid_0104002123.jpg


Completed thermistor probes, sealed with silicone. I'm using an "Electronic Project Lab" for its breadboard - disregard that and the half adder assembled on the left part of the breadboard. At this point, the probes are connected through basic voltage divider circuits with 10K resistors to the Arduino's analog inputs.
cid_downsized_0105002013.jpg


I also now have the LM34 hooked up, but it's not yet housed. The output from the Arduino onto my screen:
screen.jpg
 
My code for the arduino sketch (this is copied and adapted from a couple of different tutorials):

Code:
#include <math.h>

double Thermistor(float RawADC) {
 // Inputs ADC Value from Thermistor and outputs Temperature in Celsius
 //  requires: include <math.h>
 // Utilizes the Steinhart-Hart Thermistor Equation:
 //    Temperature in Kelvin = 1 / {A + B[ln(R)] + C[ln(R)]^3}
 //    where A = 0.001129148, B = 0.000234125 and C = 8.76741E-08
 long Resistance;  
 double Temp;
 double Kelvin;
 double Celcius;
 double Farenheit;
 Resistance=((10240000/RawADC) - 10000);  // Assuming a 10k Thermistor.  Calculation is actually: Resistance = (1024/ADC)
 Temp = log(Resistance); // Saving the Log(resistance) so not to calculate it 4 times later. 
 Kelvin = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));  
 Celcius = Kelvin - 273.15;  // Convert Kelvin to Celsius                                   
 /*
 // BEGIN- Remove these lines for the function not to display anything
  Serial.print("ADC: "); Serial.print(RawADC); Serial.print("/1024");  // Print out RAW ADC Number
  Serial.print(", Volts: "); printDouble(((RawADC*4.860)/1024.0),3);   // 4.860 volts is what my USB Port outputs.
  Serial.print(", Resistance: "); Serial.print(Resistance); Serial.print("ohms");
 // END- Remove these lines for the function not to display anything
 */
 // Uncomment this line for the function to return Fahrenheit instead.
 Farenheit = (Celcius * 9.0)/ 5.0 + 32.0;
 return Farenheit;  // Return the Temperature
}

void printDouble(double val, byte precision) {
  // prints val with number of decimal places determine by precision
  // precision is a number from 0 to 6 indicating the desired decimal places
  // example: printDouble(3.1415, 2); // prints 3.14 (two decimal places)
  Serial.print (int(val));  //prints the int part
  if( precision > 0) {
    Serial.print("."); // print the decimal point
    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");
    Serial.print(frac,DEC) ;
  }
}

void setup() {
 Serial.begin(9600); //115200);
}

#define LM34PIN 0          // Analog Pin 0
#define Thermistor1PIN 1   // Analog Pin 1
#define Thermistor2PIN 2   // Analog Pin 2
#define Thermistor3PIN 3   // Analog Pin 3

double lm34;
double thrm1;
double thrm2;
double thrm3;

void loop() {
 lm34 = analogRead(LM34PIN); 
 thrm1=Thermistor(analogRead(Thermistor1PIN));           // read ADC and convert it to Celsius
 thrm2=Thermistor(analogRead(Thermistor2PIN));
 thrm3=Thermistor(analogRead(Thermistor3PIN));
 
 lm34 = (lm34 * 5.0 / 1024.0) * 100.0; 
 
 Serial.print("LM34: "); Serial.print(lm34);
 Serial.print(" Thermistors: 1: "); printDouble(thrm1,1);  // display Fahrenheit
 Serial.print(" 2: "); printDouble(thrm2,1);
 Serial.print(" 3: "); printDouble(thrm3,1);
 
 Serial.println("");                                 
 delay(10000);                                           
}

I'm not sure if the LM34 or the thermistors require more calibration. As is shown on the output, the LM34 is reading a good degree lower than the thermistors. Any ideas?

I'm also wondering how to house my LM34 probe. I want it to go in the mash tun, and was considering drilling through the side of my water cooler, but I'm not all that sure about it...
 
Next up is to write a program to chart these numbers. Eventually I'll build a housing for the arduino with detachable plugs for the temperature probes. I'm hoping to install a water heater element in my mash tun for temperature control as well. Either a temperature control circuit would be included or I'd take care of it on the software side. Any ideas on mounting the LM34 probe in a mash tun?
 
One comment... From what I've read, copper is not the best thing to use for a thermowell when fermenting. Something about off-flavors and/or poisoning of the yeast?
 
Yikes. I just found some articles confirming that. Looks like I'll need to rebuild using stainless. Thanks for the heads up!
 
Very cool, nice work!

Any ideas on mounting the LM34 probe in a mash tun?

Once you build the housing out of SS, maybe just use a compression fitting about 3 or 4 inches up the probe and screw it into the mash tun.


One question, you commented on using a detachable plug for the temp probe at some point. Many I ask what you plan to use to do this? I've heard some people use headphone jacks, but I was hoping there was something cleaner out there to accomplish this. Some kind of mountable two or three wire plug specifically designed for this kind of thing. Anyway if you find such an item please let me know.

The hardware side of this all still confuses me, I just want to get to the programming.
 
One question, you commented on using a detachable plug for the temp probe at some point. Many I ask what you plan to use to do this? I've heard some people use headphone jacks, but I was hoping there was something cleaner out there to accomplish this. Some kind of mountable two or three wire plug specifically designed for this kind of thing. Anyway if you find such an item please let me know.

I used RJ45 connectors on mine (primarily because I had the crimping tool) along with surface mount jacks and it's worked out quite well.

ps_hlt_1.jpg
 
Check out Derrin's temperature probes if you haven't done so.

Highly recommended: http://www.brewershardware.com/probeEnds.htm

Those look really nice, but my sensors, once soldered to the heavy-guage wires I used, were a tight fit in the 3/8 OD copper tubing. Those probes are 1/4 OD and I worry that my sensors wouldn't fit at all...

I just ordered 3 feet of 3/8 OD SS tubing. Probes will be rebuilt once it arrives.

One question, you commented on using a detachable plug for the temp probe at some point. Many I ask what you plan to use to do this? I've heard some people use headphone jacks, but I was hoping there was something cleaner out there to accomplish this. Some kind of mountable two or three wire plug specifically designed for this kind of thing. Anyway if you find such an item please let me know.

The hardware side of this all still confuses me, I just want to get to the programming.

I was going to ask the same question. It'd be really nice to have everything built into one three-pin plug.

The hardware is actually a lot simpler than it looks. The Arduino has 6 analog inputs, a power supply and a ground. The LM34 connects directly to these three. The thermistors are just a bit more complicated. They use a voltage divider circuit: http://en.wikipedia.org/wiki/Voltage_divider with the thermistor as one of the resistors and a 10K resistor as the other. This circuit is then attached in the same way as the LM34 to the arduino. The arduino itself holds a program which interprets the voltage value and converts it into a temperature. I'm going to move most of this code off of the arduino and onto the computer, so that the raw voltage value is sent to the computer, which will allow the user to select what type of sensor is attached to each input, and the program will interpret accordingly.

EDIT:
jpalarchio said:
I used RJ45 connectors on mine (primarily because I had the crimping tool) along with surface mount jacks and it's worked out quite well.

I hadn't thought of that... would a TRRS plug work?
 
I used RJ45 connectors on mine (primarily because I had the crimping tool) along with surface mount jacks and it's worked out quite well.

Ok, I kind of understand, but am hardware retarded so could you explain a little more how one takes a standard two or three wire sensor, like a temp probe, and converts that to RJ45? Do you just splice open the cable, connect your two or three wires to whatever wire in the cable you like, then attach a standard RJ45 end to the other side?

Anyway I&#8217;m not very hardware savvy, but are you just using standard CAT5 as the cable then? I guess I&#8217;ve never looked at the voltage allowance for CAT5, but is it sufficient to carry 5v?

The arduino itself holds a program which interprets the voltage value and converts it into a temperature. I'm going to move most of this code off of the arduino and onto the computer, so that the raw voltage value is sent to the computer, which will allow the user to select what type of sensor is attached to each input, and the program will interpret accordingly.

Yea, I plan to use something like the labjack to get all my raw voltage values back. Once I can get a double value into any .Net language I should be all set. It's just the process of actually getting those double values that's going to kill me. :)

Thanks for taking the time to explain this, I really appreciate it.
 
Yea, I plan to use something like the labjack to get all my raw voltage values back. Once I can get a double value into any .Net language I should be all set. It's just the process of actually getting those double values that's going to kill me. :)

Thanks for taking the time to explain this, I really appreciate it.

I'm not sure exactly how the Arduino does it, but it's pretty much taken care of for you. A quick search for labjack shows some pretty expensive equipment - I'm not sure if I'm missing something or if it's significantly better than Arduino, but my Arduino cost me $30.
 
Very cool. I use LM34's in copper tubing to monitor my MT, but I guess that a couple of weeks in wort might make for some off flavors. I would be very interested in how you log your serial data. I have looked around and found a number of data logging projects for the Arduino but none that are really applicable. I used code from this guy's site: http://pscmpf.blogspot.com/2008/12/arduino-lm35-sensor.html to get my setup going. I would really like to log the data to Excel or something where I can apply my calculus kung-fu.
 
Ok, I kind of understand, but am hardware retarded so could you explain a little more how one takes a standard two or three wire sensor, like a temp probe, and converts that to RJ45? Do you just splice open the cable, connect your two or three wires to whatever wire in the cable you like, then attach a standard RJ45 end to the other side?

Anyway I’m not very hardware savvy, but are you just using standard CAT5 as the cable then? I guess I’ve never looked at the voltage allowance for CAT5, but is it sufficient to carry 5v?


....

RJ45 is frequently used to connect other things as well. I've personally used some long serial cables that utilized CAT5 and RJ45 ends. I would agree with your assumption about using these ends even on a sensor, provided they can be calibrated.

For power needs, CAT5 is rated for power. Power Over Ethernet is a standard that allows 15W of power (44VDC/350mA) over Cat5 cable. Various newer standards of POE are coming out at 25W to 50W+.
 
Looks like Cat5 and RJ45 is the way to go then...

Very cool. I use LM34's in copper tubing to monitor my MT, but I guess that a couple of weeks in wort might make for some off flavors. I would be very interested in how you log your serial data. I have looked around and found a number of data logging projects for the Arduino but none that are really applicable. I used code from this guy's site: http://pscmpf.blogspot.com/2008/12/arduino-lm35-sensor.html to get my setup going. I would really like to log the data to Excel or something where I can apply my calculus kung-fu.

Right now I am able to receive the serial data in Java within Eclipse. I just have it printing the temperature values to the console, but am working towards creating excel spreadsheets. It looks like there are several libraries for working with excel format. I can provide some code if you'd like.
 
This is really cool actually a lot like what I was about to do as my roommate/associate homebrewer just got an arduino thingy for Christmas as well. Is this going to remain as an integrated type thingy or will you move it to a standalone unit?

In the meantime, When I was picking up a soldering iron at Lowes, they had a little Honeywell digital thermostat for $15 because of open box. It has a decent temp range and a writeup will be following. I also have been using a lot of CAT-5 :)

I would love to know more about this project, seems really cool and might try something like it next week.
 
Is this going to remain as an integrated type thingy or will you move it to a standalone unit?

I'm not sure exactly what you mean, but I hope to put the arduino in a project enclosure with jacks for sensors. It will not be independent of the computer. I have a brewing spreadsheet which I use to calculate estimated OG, FG, mash temps, alcohol percentage, IBU, etc etc, and I'd like this arduino system to seamlessly integrate, adding charts of mash and fermentation temperatures, and possibly eventually temperature control (both for fermentation as a simple compressor on/off control and for mash temperature - think programmed step mashes controlled automatically from the computer). I always brew with my computer nearby, making notes as I go, so having this thing tied to the computer shouldn't be a big problem.
 
I've gotten to a workable point with the program. The arduino sends values to the program every second. These values go straight to the screen, giving the instantaneous temperature values:

ProgScreen.jpg


Within the program (it'll eventually be available to be set by the user) a "sample rate" is set (I used 10), indicating after how many instantaneous values (seconds, approximately) the values should be averaged and sent to the logger. So, after ten values have been sent to the program, those values are averaged and logged as a new value with a time stamp. These averaged values are then written as xml:

Code:
<xml>
	<sensor type="LM34" units="Farenheit">
		<reading><timestamp>2010-01-07 03:12:26.574</timestamp><value>65.43</value></reading>
		<reading><timestamp>2010-01-07 03:12:36.761</timestamp><value>65.43</value></reading>
		<reading><timestamp>2010-01-07 03:12:46.932</timestamp><value>64.94</value></reading>
	</sensor>
	<sensor type="Thermistor 10K" units="Farenheit">
		<reading><timestamp>2010-01-07 03:12:26.574</timestamp><value>68.1</value></reading>
		<reading><timestamp>2010-01-07 03:12:36.761</timestamp><value>68.3</value></reading>
		<reading><timestamp>2010-01-07 03:12:46.932</timestamp><value>68.1</value></reading>
	</sensor>
	<sensor type="Thermistor 10K" units="Farenheit">
		<reading><timestamp>2010-01-07 03:12:26.574</timestamp><value>67.5</value></reading>
		<reading><timestamp>2010-01-07 03:12:36.761</timestamp><value>67.3</value></reading>
		<reading><timestamp>2010-01-07 03:12:46.932</timestamp><value>67.5</value></reading>
	</sensor>
	<sensor type="Thermistor 10K" units="Farenheit">
		<reading><timestamp>2010-01-07 03:12:26.574</timestamp><value>68.8</value></reading>
		<reading><timestamp>2010-01-07 03:12:36.761</timestamp><value>68.8</value></reading>
		<reading><timestamp>2010-01-07 03:12:46.932</timestamp><value>68.6</value></reading>
	</sensor>
</xml>

This seemed like the simplest way to do it at the time.
The sensors are built in in a modular way, and the user will be able to select the number of inputs and which sensor type of sensor is connected to which input.
 
sorry if i missed something . but im not sure if i read all the replies or if im missing something but whats the difference between the lm34 sensor and the thermistors? or is the point of this to show the difference between the two
 
sorry if i missed something . but im not sure if i read all the replies or if im missing something but whats the difference between the lm34 sensor and the thermistors? or is the point of this to show the difference between the two

There really isn't all too much of a difference between the two, besides the actual physical connection and operating principle. In terms of accuracy, both are good down to about 0.1C, which is more than enough for home brewing. I guess if you want to do better you could just use an RTD, but those cost more $.
 
I've gotten to a workable point with the program. The arduino sends values to the program every second. These values go straight to the screen, giving the instantaneous temperature values:

ProgScreen.jpg


Within the program (it'll eventually be available to be set by the user) a "sample rate" is set (I used 10), indicating after how many instantaneous values (seconds, approximately) the values should be averaged and sent to the logger. So, after ten values have been sent to the program, those values are averaged and logged as a new value with a time stamp. These averaged values are then written as xml:

Code:
<xml>
	<sensor type="LM34" units="Farenheit">
		<reading><timestamp>2010-01-07 03:12:26.574</timestamp><value>65.43</value></reading>
		<reading><timestamp>2010-01-07 03:12:36.761</timestamp><value>65.43</value></reading>
		<reading><timestamp>2010-01-07 03:12:46.932</timestamp><value>64.94</value></reading>
	</sensor>
	<sensor type="Thermistor 10K" units="Farenheit">
		<reading><timestamp>2010-01-07 03:12:26.574</timestamp><value>68.1</value></reading>
		<reading><timestamp>2010-01-07 03:12:36.761</timestamp><value>68.3</value></reading>
		<reading><timestamp>2010-01-07 03:12:46.932</timestamp><value>68.1</value></reading>
	</sensor>
	<sensor type="Thermistor 10K" units="Farenheit">
		<reading><timestamp>2010-01-07 03:12:26.574</timestamp><value>67.5</value></reading>
		<reading><timestamp>2010-01-07 03:12:36.761</timestamp><value>67.3</value></reading>
		<reading><timestamp>2010-01-07 03:12:46.932</timestamp><value>67.5</value></reading>
	</sensor>
	<sensor type="Thermistor 10K" units="Farenheit">
		<reading><timestamp>2010-01-07 03:12:26.574</timestamp><value>68.8</value></reading>
		<reading><timestamp>2010-01-07 03:12:36.761</timestamp><value>68.8</value></reading>
		<reading><timestamp>2010-01-07 03:12:46.932</timestamp><value>68.6</value></reading>
	</sensor>
</xml>

This seemed like the simplest way to do it at the time.
The sensors are built in in a modular way, and the user will be able to select the number of inputs and which sensor type of sensor is connected to which input.

Could you post the java code you are using for this?
 
Also, the Arduino is using the following sketch to output voltages from the first four analog pins:

Code:
void setup() {
 Serial.begin(9600);
}

#define TOTALPINS 4

void loop() {
  
 for (int i = 0; i < TOTALPINS; i++){
   int reading = analogRead(i);
   Serial.print(reading);
   if (i == TOTALPINS-1){
     Serial.println(";");
   } else {
     Serial.print(",");
   }
 }                                  
 delay(1000);                                           
}
 
Also, the Arduino is using the following sketch to output voltages from the first four analog pins:

Code:
void setup() {
 Serial.begin(9600);
}

#define TOTALPINS 4

void loop() {
  
 for (int i = 0; i < TOTALPINS; i++){
   int reading = analogRead(i);
   Serial.print(reading);
   if (i == TOTALPINS-1){
     Serial.println(";");
   } else {
     Serial.print(",");
   }
 }                                  
 delay(1000);                                           
}

Thanks I applied for membership rights to your Google Group.
 
No problem. I'm going to be doing a lot of improvement on this over the next few weeks. You can select what type of sensors go where in the Main class, and you can create your own sensor classes by implementing the Sensor interface. Keep me updated on any changes / improvements you make. :mug:
 
I just tried to grab your code too, got the following:

You cannot view the group's content or participate in the group because you are not currently a member. Members must be approved before joining.

You must be a member of this group to read its archive.

Ron
 
Darn. I don't have any kind of reliable web hosting right now. If you send a request to join the group, I can approve you. I'll try to get the files onto my UNC webspace tomorrow. I think I've figured out a (rather dirty) way to have the program export an Excel 2003 XML file, which will open directly in Excel without any importing/conversion/etc.
 
This Arduino thing looks pretty darn cool.
You could make an entire automated system with one of these...

Has anyone looked into controlling needle valves? I'm thinking about using one of these to control a flash boiler / steam mixer and I need fine control of the gas supply and water input.

If anyone is interested in a .Net version of an interface then let me know.

I've put together a framework to communicate with a group of controllers via an xml protocol through one com port. The configuration of the controllers (which sensor is attached to what controller) is set up in a MySql database. I have got to the point where an abstract "System" is supported and will begin implementing an "Actual Brewery System" layer so you can perform actions like "Heat water to x degrees" without worrying about which controller module(s) to send data to and which controllers perform what tasks (temperature, switching etc).
 
There is always brewtroller, which is based on the same platform, just a different board layout to accomodate an ungodly number of inputs. Controlling neddle valves wouldn't be all too hard, a stepper motor rig comes to mind (safety would be a pretty huge issue here though). Another problem with automating an complex fluid system is measuring fluid flow. You can use a capactive sensor to figure out volume and do some simple math to figure out flow, but I'm not sure how you would implement that. Anything that makes my brew day easier is fine by me.
Regarding gathering information in Excel, XML appears to be pretty easy to import, in fact there are a number of freeware programs out there.
 
There is always brewtroller, which is based on the same platform, just a different board layout to accomodate an ungodly number of inputs. Controlling neddle valves wouldn't be all too hard, a stepper motor rig comes to mind (safety would be a pretty huge issue here though). Another problem with automating an complex fluid system is measuring fluid flow. You can use a capactive sensor to figure out volume and do some simple math to figure out flow, but I'm not sure how you would implement that. Anything that makes my brew day easier is fine by me.
Regarding gathering information in Excel, XML appears to be pretty easy to import, in fact there are a number of freeware programs out there.

The brewtroller forum is also 'closed'. I tried to join it to ask some questions but the site said they don't accept new members. So..... didn't even bother with it....
 
I've put together a framework to communicate with a group of controllers via an xml protocol through one com port. The configuration of the controllers (which sensor is attached to what controller) is set up in a MySql database. I have got to the point where an abstract "System" is supported and will begin implementing an "Actual Brewery System" layer so you can perform actions like "Heat water to x degrees" without worrying about which controller module(s) to send data to and which controllers perform what tasks (temperature, switching etc).

I'm in the process of doing about the exact same thing. I'm still researching all my hardware and creating a requirements doc for the system, but am thinking controller interface layer, sensor interface layer, brew system layer.

The programming side of things will take a while, but at least I'll understand what I'm doing. This reading data sheet after data sheet about sensors is driving me nuts. All I want is some meaningful double values to play with.
 
I've put together a framework to communicate with a group of controllers via an xml protocol through one com port. The configuration of the controllers (which sensor is attached to what controller) is set up in a MySql database. I have got to the point where an abstract "System" is supported and will begin implementing an "Actual Brewery System" layer so you can perform actions like "Heat water to x degrees" without worrying about which controller module(s) to send data to and which controllers perform what tasks (temperature, switching etc).

I like it - I was thinking of doing the same thing, maybe with an xml config file instead of MySql. You guys are really running with this thing. Can anyone tell me how you're importing xml into Excel? I'm running OpenOffice 3.0 and can't find a way to do it except by using the Excel 2003 XML format, which ends up being pretty primitive and dirty, although I've got it working so that you can just open the file up directly... I'm gonna try to post the code somewhere more accessible in a little while.
 
I'm not importing xml into anything, just using it as a communication protocol.
Maybe one of the others can help out with that.
 
Ok. I've posted some updated code here: http://www.unc.edu/~boren/chchbc/Arduino.zip

You won't have to join a google group to get it. The main difference is that it saves an excel format xml file, which can be opened directly in excel. The combo boxes on the interface don't do anything yet - the sensor types are temporarily hard coded in the main class.
 
Very nice Arduino work there. I downloaded your code and will be looking into it so I can learn a thing or two. I set up a fermenter using LM34 and an Arduino to control heater for the temp.

I recently started playing around with DS18S20. They are one wire devices so you can have mutltiple devices connected to a single Digital I/O pin. I successfully got 4 or these connected to one Digtial I/O pin.. I used some cat5 cable and placed DS18S20 inside a thermowell from stirplates.com. The Thermowell is just the right size. The fit is loose enough to be able to slip the DS18S20 inside but tight enough to get good response.

Just thought i would share to give you other options. I am planing on using the DS18S20 with my HERMS system I am currently working on.

Thermowell.jpg


12" Stainless Thermowell from stirplates.com


DS18S20.jpg


Fit of DS18S20 inside Thermowell
 
Very nice Arduino work there. I downloaded your code and will be looking into it so I can learn a thing or two. I set up a fermenter using LM34 and an Arduino to control heater for the temp.

I recently started playing around with DS18S20. They are one wire devices so you can have mutltiple devices connected to a single Digital I/O pin. I successfully got 4 or these connected to one Digtial I/O pin.. I used some cat5 cable and placed DS18S20 inside a thermowell from stirplates.com. The Thermowell is just the right size. The fit is loose enough to be able to slip the DS18S20 inside but tight enough to get good response.

Just thought i would share to give you other options. I am planing on using the DS18S20 with my HERMS system I am currently working on.


12" Stainless Thermowell from stirplates.com


Fit of DS18S20 inside Thermowell

Well done with the sensor! I'm not sure I understand how the DS18S20 works... My understanding was that the digital pins read either "high" or "low," so a number would have to be read in serially if only one pin was used? But that doesn't make a lot of sense... My SS tubing and ethernet cable are arriving tomorrow, and I plan on rebuilding my sensors then.

I've got the software side to an acceptable stopping point, at least for the moment. It is able to recall sensor and sample rate settings, and the user can choose which input goes with which sensor. There are a few more parameters I'd like to make available to the user, but they can wait for now. There are also some "best practice" issues I'll want to work out eventually. I'll try to post the updated code tomorrow.

screen2.jpg
 
Very nice Arduino work there. I downloaded your code and will be looking into it so I can learn a thing or two. I set up a fermenter using LM34 and an Arduino to control heater for the temp.

I recently started playing around with DS18S20. They are one wire devices so you can have mutltiple devices connected to a single Digital I/O pin. I successfully got 4 or these connected to one Digtial I/O pin.. I used some cat5 cable and placed DS18S20 inside a thermowell from stirplates.com. The Thermowell is just the right size. The fit is loose enough to be able to slip the DS18S20 inside but tight enough to get good response.

Just thought i would share to give you other options. I am planing on using the DS18S20 with my HERMS system I am currently working on.

Makes for more sophisticated firmware but a great idea, I'll certainly consider using these. Thanks.
Edit: Here is a link to hooking it up to the Arduino:
http://stuff.nekhbet.ro/2009/08/23/...ds18b20-temperature-sensors-with-arduino.html
 
My SS tubing and ethernet cable are arriving tomorrow, and I plan on rebuilding my sensors then.

For those of us that lack wiring skills, can you show a little detail of how you use the ethernet cable to connect to the sensor when you get to that part? I'd be interested to see how it works.

Everything is looking really good thus far.
 

Latest posts

Back
Top