• Arduino KY-001 Temperature sensor module

Introduction

The Arduino has many uses, one op the more popular is use of temperature sensors. For this the Dallas Onewire DS18820 is most used. In this example we go to use this onewire chip and make a scatch for reading the temperature.

With this temperature sensor you can get the temperature in your room, car, whatever.

Product

As in the past the temperature sensor output is analog, we need to add additional A / D And D / A chip into Line conversion, for Arduino resources are not abundant external interface is a big challenge at the same time Utilization is not high. The new DS18B20 Temperature Sensor Module is a good solution for this, it use a unique bus line and economic package that make this sensor a good DIY component,

Specifications

  1. the module uses a single-bus digital temperature sensor DS18B20, the external power supply voltage Range is 3.0 V to 5.5 V, No standby power. Measurement temperature range of -55 ° C to +125 ℃, Fahrenheit equivalent 67 ° F to 257 ° F, -10 °C to +85 ° C range accuracy of ± 0.5 ° C.
  2. the temperature sensor is a programmable resolution of 9 to 12 temperature conversion to 12-bit digital format With a maximum of 750 milliseconds formula User definable nonvolatile temperature alarm settings.
  3. each DS18B20 contains a unique serial number, can be with a plurality ds18b20s Exists in a bus. Temperature sensor can be placed at different places in the detected temperature.

Notes

  1. because the ordinary transistor DS18B20 and looks similar, we'll be sure to note when using Be careful not to regard it as a generalPass transistor used to avoid damage;
  2. in order to prevent damage to the DS18B20 and makes it does not work, we should ensure that the powerLine and ground not reversed.
  3. the relevant technical data on the bus did not mention a single number that can be linked to how much DS18B20, But in practical applications are not as many, and we should pay attention to.
  4. there is a connection DS18B20 bus length limitations that should be taken in the long-distance communication Consider bus distributed capacitance and resistance Impact resistant.
  5. instructions for use Identify DS18B20 Temperature Sensor Module power lines, ground, and data Lines, power lines, ground points connected to the Arduino test board +5 V, GND port number Data bus connected to the digital port.

Preparation

  • Arduino controller × 1
  • DS18B20 Temperature Sensor Module × 1
  • USB data cable × 1
  • download and install the OneWire libary

Connecting

  • Pin - = connect to Arduino GND
  • Pin (middel) = connect to arduino +5V
  • Pin S = Signal, in this example connect to Arduino Digital port 10

When everything is right connected on the module there is a led that blinks if the sensor is read.

Example Code

#include <OneWire.h>
 
// DS18S20 Temperature chip i/o
OneWire ds(10); // on pin 10
 
void setup(void) {
// initialize inputs/outputs
// start serial port
Serial.begin(9600);
}
 
void loop(void) {
 
//For conversion of raw data to C
int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;
 
byte i;
byte present = 0;
byte data[12];
byte addr[8];
 
if ( !ds.search(addr)) {
Serial.print("No more addresses.\n");
ds.reset_search();
return;
}
 
Serial.print("R=");
for( i = 0; i < 8; i++) {
Serial.print(addr[i], HEX);
Serial.print(" ");
}
 
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.print("CRC is not valid!\n");
return;
}
 
if ( addr[0] == 0x10) {
Serial.print("Device is a DS18S20 family device.\n");
}
else if ( addr[0] == 0x28) {
Serial.print("Device is a DS18B20 family device.\n");
}
else {
Serial.print("Device family is not recognized: 0x");
Serial.println(addr[0],HEX);
return;
}
 
ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end
 
delay(1000); // maybe 750ms is enough, maybe not
// we might do a ds.depower() here, but the reset will take care of it.
 
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
 
Serial.print("P=");
Serial.print(present,HEX);
Serial.print(" ");
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
Serial.print(data[i], HEX);
Serial.print(" ");
}
Serial.print(" CRC=");
Serial.print( OneWire::crc8( data, 8), HEX);
Serial.println();
 
//Conversion of raw data to C
LowByte = data[0];
HighByte = data[1];
TReading = (HighByte << 8) + LowByte;
SignBit = TReading & 0x8000; // test most sig bit
if (SignBit) // negative
{
TReading = (TReading ^ 0xffff) + 1; // 2's comp
}
Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25
 
Whole = Tc_100 / 100; // separate off the whole and fractional portions
Fract = Tc_100 % 100;
 
 
if (SignBit) // If its negative
{
Serial.print("-");
}
Serial.print(Whole);
Serial.print(".");
if (Fract < 10)
{
Serial.print("0");
}
Serial.print(Fract);
 
Serial.print("\n");
//End conversion to C
}

There are no reviews for this product.

Write a review

Note: HTML is not translated!
    Bad           Good

Arduino KY-001 Temperature sensor module

  • Product Code: Arduino
  • Availability: 7
  • 98 LE