Главная » Статьи » Как подключить

Работа с датчиком температуры DS18b20. Делаем термометр

  Для измерения температуры в бытовых целях хорошо подходят цифровые датчики DS18B20. Эти датчики способны измерять температуру в пределах от -55 до 125 °C, с заявленной точностью от производителя в 0,5 °C. Для большинства гражданских нужд такой диапазон и такая точность измерения вполне приемлема (какую-нибудь систему термоконтроля собрать или еще чего). Поэтому решил попрактиковаться с этим датчиком, обязательно пригодится.


 Работает датчик по однопроводному интерфейсу 1-Wire. Здесь я описывать этот протокол не буду, так как информации и так достаточно. Для нас самое важное, что нужно знать на первом этапе - лишь то, что сигнальный провод необходимо подтягивать к шине питания подтягивающим резистором номиналом примерно 4,7к. Если длина сигнального провода увеличивается, необходимо снижать сопротивление подтягивающего резистора. Читал о том, что датчик соединяли с МК проводом длинной 90 метров, для исправной работы датчика сопротивление резистора составило 3к. 

  У себя для освоения работы с датчиком использовал микроконтроллер Atmega32 и выводил показания на двухстрочный алфавитно-цифровой ЖКИ. 

  Что касается программной части, в Bascom-AVR имеется библиотека работы с протоколом 1-Wire. Ее и задействуем. В программе полученные результаты с датчика немного корректируются, иначе при отрицательных температурах результат будет ложным на 1 градус, и нулевая температура выводится без знака.

 


$regfile = "m32def.dat"
$crystal = 1000000          ' 1 MHz


 '*** Конфигурируем ЖКИ
Config Lcd = 16 * 2
Config Lcdpin = Pin, Rs=Portc.5, E=Portc.4, Db4=Portc.0, Db5=Portc.1, Db6=Portc.2, Db7 = Portc.3

 ' ***Конфигурируем однопроводную шину

Config 1wire = Portb.7

 ' *** Заводим переменные

Dim Byte0 As Byte
Dim Byte1 As Byte
Dim Sign As String * 1
Dim T As Byte
Dim T1 As Byte
Dim T2 As Byte


Cls
Cursor Off

 
 '***ОСНОВНАЯ ПРОГРАММА

Do                         ' начало цикла

1wreset

If Err = 1 Then            'если при опросе небыло ответа ставим флаг ошибки

Cls

Rem датчик
Rem не подключен
Lcd " гaїАёє "             ' выводим надпись об отсутствии датчика
Locate 2 , 1
Lcd " Ѕe ѕoгє»ЖАeЅ"

Wait 1

Else                       ' иначе, если ошибки не было, продолжаем опрос датчика

1wwrite &HCC               ' Выдаем команду чтения ПЗУ
1wwrite &H44               ' Запуск измерения

Waitms 750                 ' Ждем окончания преобразования

1wreset
1wwrite &HCC
1wwrite &HBE               ' Команда чтения ОЗУ датчика


Byte0 = 1wread()           ' Читаем нулевой байт

Byte1 = 1wread()           ' Читаем первый байт

If Byte1 > 248 Then        ' Проверка на отрицательность температуры
Byte0 = &HFF - Byte0
Byte1 = &HFF - Byte1
Sign = "-"

Else
Sign = "+"
End If

T1 = Byte0 / 16           ' Сдвигаем нулевой байт вправо на 4 бита (2*2*2*2=16)
T2 = Byte1 * 16           ' Сдвигаем первый байт влево на 4 бита (2*2*2*2=16)

T1 = T1 + T2              ' Формируем результат для вывода на дисплей


 ' *** Коррекция полученных значений

If Sign = "-" Then        ' для корректного вывода отрицательных температур
 T1 = T1 + 1
End If

If Sign = "+" And T1 = 0 Then     ' убираем знак "+" с нулевой температуры
 Sign = " "
End If

Cls

' *** Выводим результат на дисплей

Rem Температура
Lcd " Teјѕepaїypa"                ' тут пишем что измеряем

Locate 2 , 6
Lcd Sign ; T1 ;                   ' выводим знак и температуру на дисплей
Locate 2 , 9

Lcd Chr(223) ; "C"                ' Сhr(223) - символ "градус"

Cursor Off

End If

Wait 1                            ' ждем 1 секундy

Loop                              ' повторяем цикл

End

 

  Датчик не подключен, выводится соответствующее сообщение:

 

  А это с подключенным датчиком, при комнатной температуре:

 

Ниже можете скачать исходник, файл в протеусе и откомпилированный файл:

Скачать

Ссылка на датчик 

 
Категория: Как подключить | Добавлено: 13.03.2011
Просмотров: 62630 | Комментарии: 35 | Теги: 18b20, датчик, ЖКИ, 1-Wire | Рейтинг: 4.8/6
Всего комментариев: 35« 1 2
5 exersizze   (24.08.2011 19:17) [Материал]
ага, в протеусе не работает, в железе все отлично.

4 Aleks8383   (24.08.2011 18:58) [Материал]
Щас попробовал в Протесе свою програмку,выдаёт кракозябли .Это так и должно быть?в железе всё нормально будет?

3 Aleks8383   (24.08.2011 18:50) [Материал]
Ясно ,спасибо сразу и не заметия её.

+1   Спам
2 exersizze   (24.08.2011 18:33) [Материал]
в конце статьи есть ссылка на скачивание программы для конвертации в кириллицу
http://avrproject.ru/publ....-1-0-11

1 Aleks8383   (24.08.2011 11:56) [Материал]
Если не секрет откуда русский алфавит брали?Программка для перевода есть?

1-30 31-35
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






авторизация
Логин:
Пароль: