Steven G. Craft
Published

Temperature Sensors

The purpose of this project is to two DS18B20 temperature sensors, with one outside and one inside.

IntermediateWork in progress1.5 hours924
Temperature Sensors

Things used in this project

Hardware components

Photon
Particle Photon
×1
Temperature Sensor
Temperature Sensor
×2
Resistor 4.75k ohm
Resistor 4.75k ohm
×1
Breadboard (generic)
Breadboard (generic)
×1
Jumper wires (generic)
Jumper wires (generic)
×1

Story

Read more

Schematics

DS18B20 - wiring.png

Code

Dual-Temp

C#
It uses a address scanner to look for multiple sensors and includes a one wire app.
// This #include statement was automatically added by the Particle IDE.
#include "OneWire/OneWire.h"

//#include <OneWire.h> 

int DS18S20_Pin = 3 and 4; //DS18S20 Signal pin on digital 3

//Temperature chip i/o
OneWire ds(DS18S20_Pin); // on digital pin 2

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

void loop(void) {
 float temperature = getTemp();
 Serial.println(temperature);

 delay(3000); //just here to slow down the output so it is easier to read
 


}

float getTemp(){
 //returns the temperature from one DS18S20 in DEG Celsius

 byte data[12];
 byte addr[8];

 if ( !ds.search(addr)) {
   //no more sensors on chain, reset search
   ds.reset_search();
   return -1000;
 }

 if ( OneWire::crc8( addr, 7) != addr[7]) {
   Serial.println("CRC is not valid!");
   return -1000;
 }

 if ( addr[0] != 0x10 && addr[0] != 0x28) {
   Serial.print("Device is not recognized");
   return -1000;
 }

 ds.reset();
 ds.select(addr);
 ds.write(0x44,1); // start conversion, with parasite power on at the end

 byte present = ds.reset();
 ds.select(addr);  
 ds.write(0xBE); // Read Scratchpad

 
 for (int i = 0; i < 9; i++) { // we need 9 bytes
  data[i] = ds.read();
 }
 
 ds.reset_search();
 
 byte MSB = data[1];
 byte LSB = data[0];

 float tempRead = ((MSB << 8) | LSB); //using two's compliment
 float TemperatureSum = tempRead / 16;
 
 return TemperatureSum;

}

Credits

Steven G. Craft

Steven G. Craft

1 project • 2 followers
Current junior at University of North Carolina at Charlotte seeking a degree in Mechanical Engineering

Comments