Bookmark and Share

Thursday, 29 July 2010

Temperature Indicator project

his project indicates the temperature from a 1 wire temperature sensor DS1820 and display it over an LCD display. The circuit uses Atmega8515 and 16x2 LCD display.

Atmega8515 is selected because it is pin compatible with 8051 Microcontroller. ATmega uses the inbuilt RC oscillator for this project, so select the fuse bits for internal oscillator of 8mhz.

About DS1820

The DS1820 Digital Thermometer provides 9–bit centigrade temperature measurements and has an alarm function with nonvolatile user-programmable upper and lower trigger points. The DS1820 communicates over a 1-wire bus that by definition requires only one data line (and ground) for communication with a central microprocessor. It has an operating temperature range of –55°C to +125°C and is accurate to ±0.5°C over the range of –10°C to +85°C. In addition, the DS1820 can derive power directly from the data line (“parasite power”), eliminating the need for an external power supply.

Circuit Diagram


'copyright : (c) 2008-2009,
'purpose : DS1820 / DS18S20 Temperature Indicator

$regfile = "m8515.dat" ' specify the used micro
$crystal = 8000000 ' used crystal frequency

Declare Sub Read1820

Config 1wire = Portd.7
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0

'Temp variables
Dim Bd1 As Byte
Dim Bd2 As Byte
Dim Bd7 As Byte
Dim Bd8 As Byte

Dim I As Byte , Tmp As Byte
Dim T As Integer , T1 As Integer
Dim Bd(9) As Byte 'Scratchpad 0-8 72 bits incl CRC, explanations for DS1820
'Sc(1) 'Temperature LSB
'Sc(2) 'Temperature MSB
'Sc(3) 'TH/user byte 1 also SRAM
'Sc(4) 'TL/user byte 2 also SRAM
'Sc(5) 'config also SRAM x R1 R0 1 1 1 1 1 - the r1 r0 are config for resolution - write FF to byte for 12 bit - others dont care
'Sc(6) 'res
'Sc(7) 'res
'Sc(8) 'res
'Sc(9) '8 CRC

'DALLAS DS1820 ROM and scratchpad commands''''''''''''''''''''''''''1wwrite....
'&H 33 read rom - single sensor
'&H CC skip rom
'&H BE read scratchpad
'&H 44 convert T

' Main loop
Cursor Off
1wwrite &HCC : 1wwrite &H44 ' start measure
Waitms 400 ' wait for end of conversion
Wait 1
End 'end program

'Read the DS1820 by skipping the ROM checking, since we are using only 1 sensor

Sub Read1820 ' reads sensor ans calculate ' T for 0.1 C
1wreset ' reset the bus
1wwrite &HCC ' read internal RAM
1wwrite &HBE ' read 9 data bytest
(1) = 1wread(9)
= Bd(1)
= Bd(2)
= Bd(7)
= Bd(8)
' read bytes in array
1wreset ' reset the bus
= Bd1 And 1
If Tmp = 1 Then Decr Bd1 ' 0.1C precision
= Bd1
= T * 50
= T - 25
= Bd8 - Bd7
= T1 * 100
= T1 / Bd8
= T + T1
= T / 100 'store tens
= T Mod 100 'store decimal number
Locate 1 , 3
Lcd "Temperature"
Locate 2 , 7
Lcd T1 ; "." ; T
End Sub


1 comment:

  1. Digital thermometers are a quick, simple and effective way of obtaining temperature information. It can measure an object’s temperature from a distance. The benefits of this thermometer include the fact that it can be used to measure the temperature of objects such as motors, computer parts, transformers, and other equipment, even while these parts are in operation. Thanks a lot.