Микроконтроллеры

Датчик температуры ds18b20 и микроконтроллер

Данный проект состоит из датчика температуры ds18b20 и микроконтроллера. Вывод температуры осуществляется на символьный LCD дисплей размером 16x2. Значение температуры считывается с цифрового датчика ds18b20. В схеме используется микроконтроллер Atmega8515.

Цифровой датчик ds18b20 имеет температурный диапазон от -55 до +125 градусов по Цельсию, точность датчика составляет порядка 0.5 градуса. Подключение датчика осуществляется по 3м проводам, 2 из них это питание, а 3-й это линия данных.

Схеме подключения датчик температуры ds18b20 к микроконтроллеру

Схеме подключения датчик температуры

Код программы 

‘—————————————————————————————–
‘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
Cls
Cursor Off
Do
   1wwrite &HCC : 1wwrite &H44                              ‘ start measure
   Waitms 400                                               ‘ wait for end of conversion
   Read1820
   Wait 1
Loop
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
   Bd(1) = 1wread(9)
   Bd1 = Bd(1)
   Bd2 = Bd(2)
   Bd7 = Bd(7)
   Bd8 = Bd(8)
                                               ‘ read bytes in array
   1wreset                                                  ‘ reset the bus
      Tmp = Bd1 And 1
      If Tmp = 1 Then Decr Bd1                              ‘ 0.1C precision
          T = Bd1
          T = T * 50
          T = T – 25
          T1 = Bd8 – Bd7
          T1 = T1 * 100
          T1 = T1 / Bd8
          T = T + T1
          T1 = T / 100                                      ‘store tens
          T = T Mod 100                                     ‘store decimal number
          Cls
          Locate 1 , 3
          Lcd “Temperature”
          Locate 2 , 7
          Lcd T1 ; “.” ; T
End Sub

End 
 

Добавить комментарий


Защитный код
Обновить

Последние комментарии

Последнии темы форума

  • Нет сообщений для показа