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

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

В данном проекте используется весьма распространенный датчик измерения температуры ds18b20. Измеренная температура при помощи микроконтроллера Atmega8515 выводится на символьный дисплей 16x2.

ATmega8515 выбран потому, что он совместим по выводам с 8051 микроконтроллером. В этом проекте используется тактирование от внутреннего RC генератора, поэтому необходимо выставить фъюз биты для работы с внутренним генератором.

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

DS1820 Цифровой термометр обеспечивает 9-битные температурные измерения по Цельсию. DS1820 общается по 1-проводной шине, что по определению требует только одну линию данных (и землю) для связи с центральным микропроцессором. 

Он имеет диапазон рабочих температур от -55 ° C до + 125 ° C, и с точностью ± 0,5 ° C в диапазоне от -10 ° С до + 85 ° С.Кроме того, DS1820 можно запитыватся непосредственно от линии данных, устраняя необходимость использования внешнего источника питания.

Датчик ds1820 и микроконтроллер AVR

Программа микроконтроллера

‘—————————————————————————————–
‘copyright                : (c) 2008-2009, AVRprojects.info
‘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

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


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

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

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

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