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: aquaponic automation, aquaponics, arduino, arduino sketch, automation, CAT 5 cable, DIY aquaponics, DS18B20, electronics, hacks, indoor aquaponics, indoors aquaponics, microcontroller, Miles Burton, rik kretzinger, Temp Probe, Temperature Probe
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.
Here is what the connections look like on the arduino side of the test.
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:
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
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.