jump to navigation

Reading Two Temp Probes — DS18B20 June 14, 2011

Posted by rik94566 in aquaponic automation, aquaponics, arduino, CAT 5 Cable, DIY aquaponics, DS18B20, Hacks, indoor aquaponics, indoor gardens, indoor growing, Rj45 connector, sensor, Sensor Hub, Stainless Steel Temp Probe, Standards, Temperature Probe.
Tags: , , , , , , , , , , , , , , , ,
trackback

Reading two (2) DS18B20 Temperature Probes requires an added level of complexity.  You need to have a sketch that will accommodate the addition Temp Probe and report out  the readings.  You need to be able to tell each Temp Probe apart and know which probe is being read and when. Using the RJ45 2 jack hub I constructed I added the 4.7K ohm resistors and wired up both sides of the hub. This is the same as the 3-wire configuration test and talked about in prior blog discussions.

Hub wired up for testing

Here is what the connections look like on the arduino side of the test.

Arduino connections for 2 Temperature Probes

Next I need to build out the arduino sketch that I have been using for testing of all my connections.  Miles Burton talks about this in the code he supplies on his wiki regarding “Dallas Temperature Control Library”.  It can be found here:

http://www.milesburton.com/?title=Dallas_Temperature_Control_Library

Knowing this I went to work to creating a sketch that could read 2 probes.  So here is what I came up with.

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

created on 06/01/11
by rik kretzinger   version 2.1
*/

#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(“111111111111111111111111111111111111111111111111”);
Serial.println();
Serial.print(“Temperature for Probe 002 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();

Serial.print(“22222222222222222222222222222222222222222222222”);
Serial.println();
Serial.print(“Temperature for Probe 003 is:              “);
Serial.print(sensors.getTempCByIndex(1)); // 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(1)*1.8)+32));  // test this line
Serial.println(”  F”);
Serial.println();
Serial.println();
Serial.print(“END OF TEMP PRBOE READINGS THIS CYCLE”);
Serial.println();

}

I have my probes indexed as P002 and P003.  Knowing this the sketch calls out device (0) first probe (P_002) read and device (1) being the second device (P_003) being read.  So you need to know which is which.  This is because the library starts the device at “0” and build up from there, so the next one read will be “1”, the next one is “2” and so on.  I think you get the idea.

Here are my results from running the above sketch:

2 - Temp Probe readings

Comments»

1. Terry King - June 14, 2011

Nice work!

Can I use your example on the Arduino Info Wiki??
http://arduino-info.wikispaces.com/Brick-Temperature-DS18B20

Thanks, Terry
terry@yourduino.com

2. Rik - June 14, 2011

Terry,
Please do. This is part of why I am doing my Blog, (for others to benefit from my learning). So the more people that learn how to use these Temp Probes the better.


Leave a comment