loading
This Instructable uses the work done by Jonathan Oxer and Hugh Blemings in the book  "Practical Arduino"  at:  
http://www.practicalarduino.com/  

and builds upon the work done by:
http://www.cheapvegetablegardener.com/  

using the homemade-waterproof digital thermometer design concept:  
http://www.cheapvegetablegardener.com/2010/01/homemade-waterproof-digital-thermometer.html

I needed a Stainless Steel DS18B20 (1-wire) probe that could be used in my aquaponics units that I build.  I have to use Stainless Steel as any other metals would have impact on fish health I use in my systems.  Using other designs and materials would work the same way.  I could not find any Stainless Steel DS18B20 probes when I first started this project, so I build my own at first.  Now I have found a source for these so I no longer need to build them.  This saves a lot of time and effort.  Now I can focus on plug-n-play assemblies  that are easy to incorporate into arduinos sketches and control units.


Step 1: Parts Used in INSTRUCTABLE

 
A -- DS18B20 Stainless Steel Temp Probe
      http://arduino-direct.com/sunshop/index.php?l=product_detail&p=151

B -- Needle Nose Piers

C --  Helping Hands

D --  EZ-RJ45 Modular Jack
        Jameco.com

E -- Leviton Category 5e Jacks - Model # M25-5G108-25W - Home Depot

F -- Heat Shrink Tubing

G -- Solder

H -- Soldering Station

I -- Cat 5 cable

J -- Wire Stripper tool

K -- Heat Gun - for Heat Shrink Tubing

L -- Punch Down Tool

M -- RJ45 jack holder plate

N -- Alligator clips

O -- Ardunio

P -- Cable Crimper

Step 2: Establishing Cat 5 Standard for Temp Sensors

In order to be consistent in reading sensors a standard must be established for the Cat 5 cable that I will be using. As it turns out some work has been done in this area. I just need to pull it together to make sense in my projects and be able to consistently achieve results across all sensors and match up with what is standard industry practice.

BACKGROUND:

As it turns out PoE (power-over-ethernet) is the established standard for this.

Early PoE systems were created by various companies with no particular standard in mind, so unfortunately there are a number of systems around that are not compatible with each other. Different companies used different voltages, different polarities, and different pin assignments – sometimes even varying between products manufactured by the same company!

Thankfully a standard has now been defined and modern PoE systems have converged to the point that they are mostly compatible. You can read about the standard, designated “802.3af” (2003) and the newer “802.3at” (2009), on Wikipedia. But even with the 802.3 standard it’s not all clear sailing, because the standard itself is quite painful to implement. It stipulates the use of up to 48V (more than typical components such as voltage regulators can handle) and a signalling scheme to allow the PD to tell the injector how much power it will require. Implementing a full 802.3 standards-compliant powered device is therefore far more complex than it really should be.

Many hobbyists therefore implement a simplified system that uses the same connections as the 802.3 standard, but runs at a lower voltage and doesn’t use a signalling scheme.

The most common PoE pin assignment typically used with 10/100base-T Ethernet (which only uses 2 of the 4 pairs in the cable for data) is as follows:

Pin Use Description
1 RX+ Receive data +
2 RX- Receive data -
3 TX+ Transmit data +
4 DC+ Power-over-Ethernet +
5 DC+ Power-over-Ethernet +
6 TX- Transmit data -
7 DC- Power-over-Ethernet -
8 DC- Power-over-Ethernet -

Reference of above material

http://www.freetronics.com/pages/power-over-ethernet-for-arduino

UNDERSTANDING Cat 5 CABLE:
TIA/EIA-568-B.1-2001 T568B Wiring[1]
Pin Pair Wire Color
1 2 1 Pair 2 Wire 1 white/orange
2 2 2 Pair 2 Wire 2 orange
3 3 1 Pair 3 Wire 1 white/green
4 1 2 Pair 1 Wire 2 blue
5 1 1 Pair 1 Wire 1 white/blue
6 3 2 Pair 3 Wire 2 green
7 4 1 Pair 4 Wire 1 white/brown
8 4 2 Pair 4 Wire 2 brown

STANDARD TO BE USED:

1 – RX (+) –Receive Data (+) —————- WHITE/ORANGE — none
2 – RX (-) – Receive Data (-) —————–ORANGE ————– YELLOW
3 – TX (+) – Transmit Data (+) —————WHITE/GREEN ——none
4 – DC (+) –Power-over-Eithernet (+) —– BLUE ——————  RED
5 – DC (+) –Power-over-Eithernet (+) —   WHITE/BLUE———-none
6 – TX (-) –  Transmit Data (-) ————— GREEN —————  none
7–  DC (-) – Power-over-Eithernet (-) ——WHITE/BROWN ——none
8 – DC(-) –  Power-over-Eithernet (-) ——BROWN —————  BLACK

This is the configuration I will be using going forward on all sensor conections. Should I need to double-up on a Cat5 cable I can use the WHITE/COLOR wires to accomplish this task.

Step 3: Temp Probe (DS18B20) -- Results Without Pull-up Resistor

Should a 4.7k resistor not be connected between the temp probe and the arduino you will get results from testing cthe probes like (picture 2).   You now know what reading you get if the 4.7K ohm pull-up resistor is not present or connected wrong or a connection has broken. The sketch can be downloaded below or you can copy it from this section. 


SKETCH – TO TEST PROBES

/*
Testing Sketch to test construction of temp probes using DS18B20 IC for Stainless Steel probes.
Sketch was created by Miles Burton and changed to display both C and F temperatures using the serial
monitor for display.

created on 11/20/10
by rik kretzinger version 1.3
*/

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into pin 8 on the Arduino
#define ONE_WIRE_BUS 8

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println(“Dallas Temperature IC Control Library Demo”);

// Start up the library
sensors.begin();
}

void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print(“Requesting temperatures…”);
delay(1000);
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println(“DONE”);
delay(1000);

Serial.print(“Temperature for Device 1 is: “);
Serial.print(sensors.getTempCByIndex(0)); // Why “byIndex”? You can have more than one IC on the same bus.
// 0 refers to the first IC on the wire.
Serial.println(“ C”);
Serial.print(“FAHRENHEIT CONVERSION “);
Serial.print(((sensors.getTempCByIndex(0)*1.8)+32)); // test this line
Serial.println(“ F”);
Serial.println();
}

Step 4: DS18B20 Temp Probe -- Connections on Wrong Side of Resistor

If your connections are wrong when working with the Stainless Steel Probe the read out results will not make sense. One possible mistake can be if you connect the signal wire (yellow wire) to the power side (red wire) of the resistor.

This connection configuration will lead to the results shown picture 2 (sketch running)

Test with the Sketch provided with this instructable.

Step 5: Temp Probe --DS18B20 -- 3 Wire Configuration and Tested

DS18B20 Stainless Steel Temp probe connected using a 3 wire configuration. This set up uses BLACK – RED – YELLOW leads out of the temp probe and connected to the CAT 5 cable on wires ORANGE - BLUE - BROWN

Correct reading were generated with this configuration. This result comes from sketch that provided. Should get the same results shown in picture 2 of the sketch running in this step.

Step 6: Temp Probe -- DS18B20 -- 2 Wire Configuration and Tested

DS18B20 Stainless Steel Temp probe connected using a 2 wire configuration. This set up uses BLACK – YELLOW  leads out of the temp probe and connected to the CAT 5 cable on wires ORANGE - BLUE - BROWN

Correct reading were generated with this configuration. This result comes from sketch that provided. Should get the same results shown in picture 2 of the sketch running in this step.

Step 7: DS18B20 Temp Probe -- CAT 5 Hook-up

It is time to connect the DS18B20 temperature probe to a CAT 5 cable. This will allow yuo to create a BUS for as many temperature probes as you will need.

WIRE CONNECTIONS:

Temp Probe ——– CAT 5

RED ===== BLUE

YELLOW ===== ORANGE

BLACK ===== BROWN

Only thing left to do now is add shrink tubing to the connection between the probe and cable and place a RJ45 connector to the end of the CAT 5 cable. It is now possible to make probes as long as you want and have a standard way to connect the probes to an arduino for reporting temperatures.

Make sure to test the probe and connections and make sure the probe is working correctly.

Step 8: Build the DS18B20 -- RJ45 Testing Plug

The DS18B20 temp probe connected to CAT 5 cable with RJ45 jack unit is now compete. But I don’t know if all the connections are working. So it is time to test the completed assembly. The only way to accomplish this task is to construct a RJ45 female plug with a CAT 5 cable end.

Purchased a RJ45 female connector at Home Depot as I like this brand of connector. It is easy to use and I get consistent results. Lowes sells a different type connector, but it will work just the same. Use the 3 wire standard configuration with the CAT 5 cable (ORANGE-BLUE-BROWN). Cut away all other wires of the CAT 5 so there will be no confusion as to connections to be made. Also stripped the wire ends to allow for clips to be attached.

Testing the assembly is now the next step. To do this, use a multimeter set to the conductivity mode. The multimeter probes can be used either way for testing. You will get the same results.

Test each wire with the correct position inside the RJ45 female plug. When you touch the probe ends to the correct points the multimeter will beep. Should this not happen you will need to redo the connections. Keep testing until you get consistent results. Once you are sure all connections are working move on to test the completed DS18B20 temp probe assembly.  (see picture 2)

Step 9: Completed DS18B20 -- Temp Probe Assembly & Fully Tested Now

Now that we have completed the Stainless Steel (DS18B20) Temp Probe with CAT 5 cable and RJ45 jack assembly you are ready to perform the finial test. Using the RJ45 female connector you just completed in the last step, you are ready to test. In the first picture you can see what the testing should like.

Again use the arduino sketch provided with this instructable to test all the connections.

Picture 2 shows you the results you will get when the full assembly is working correctly.

Picture 3 shows you results when there is a problem with the assembly connections.  So you will have to work backwards and determine where the problem is and fix it and re-test until the assembly is working correctly.
<p>you say: </p><p>Why &ldquo;byIndex&rdquo;? You can have more than one IC on the same bus.<br><br>// 0 refers to the first IC on the wire.<br><br>I could be wrong but I was under the impression the DS18B20 needed to be called by its unique ID if you use more than one, after all your software has no idea which DS18B20 is 'first' on the wire</p>
<p>You could be right about this - this instructable was an early effort to understand the DS18B20 platform on my part. I pulled the sketch from early work that Miles Burton had done. If you go to my blog at <a href="http://www.rik94566.wordpress.com"> www.rik94566.wordpress.com </a> you will find more updated information regarding the DS18B20. There is code there for reading up to 10 probes. Hope this will help you. </p>
<p>Thanks, I already have some code to do that, once you know what the internal ID numbers are (there is code for that too). I was just wondering if I had missed something :-)<br>Nice blog</p>
<p>Additional DS18B20 information here:</p><p>http://arduino-info.wikispaces.com/Brick-Temperature-DS18B20</p>
Above instructor table is great collection and good designing of this article ,thanks for sharing about this article.very nice performance.<a href="http://webhostingreview.info/">web hosting review </a>

About This Instructable

38,318views

50favorites

License:

More by rik:RUNNING Arduino IDE on RPi @ 800 X 480 Resolution 800 X 480 - 5" HDMI Display - Using Jessie With Pixel -  Resolution Issue aquaponic BALCONY GARDEN 
Add instructable to: