Малаток-меню
Авторизация

Наш опрос
Оцените мой сайт

Всего ответов: 48
Мини-чат
200
Статистика


Наш линк
Malatok.at.ua
Полезные ссылки
Это может быть интересно
[
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Stalker753, Викр, Дмытрохан  
Форум » РАДИОТЕХНИКА » Полезные устройства » Опрос большого количества датчиков DS18B20 в Bascom-AVR
Опрос большого количества датчиков DS18B20 в Bascom-AVR
incubus Дата: Суббота, 14.12.2013, 22:17 | Сообщение # 1
Почетный друг сайта
Группа: Модераторы
Сообщений: 190
Награды: 4
Репутация: 200
Замечания: 0%
Статус: Офлайн
Датчики 18B20 от фирмы Dallas хороши тем, что подключаются по шине 1-Wire и занимая всего один вывод
микроконтроллера, можно обработать большое количество устройств.
Bascom-AVR тоже имеет в своем инструментарии команды, позволяющие легко
работать с большим числом устройств 1-wire. В этом примере будет
приведен опрос 4 датчиков 18B20, висящих на одной линии.
  Каждому устройству протокола 1-wire при производстве присваивается уникальный
идентификационный код, который позволяет определять устройство на шине. Ведущее устройство (микроконтроллер в нашем случае) при сканировании шины
записывает номера найденных устройств и при опросе начинает опрос в
порядке очереди начиная с наименьшего адреса устройства. 

 В Bascom-AVR поиск устройств ведется по командам

Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()
Dsid3(1) = 1wsearchnext()

 Переменным Dsid1, Dsid2, Dsid3  присвоятся значения адреса найденных устройств. Затем по этим адресам будут опрашиваться устройства. 
        

$regfile = "m8def.dat"
$crystal = 1000000

Config Lcdpin=Pin, Rs=Portb.7,E=Portb.6,Db4=Portb.5,Db5=Portb.4,Db6=Portb.3,Db7=Portb.2
Config Lcd = 16 * 2
Cursor Off
Cls

Config 1wire = Portc.2

Dim Ss As String * 6
Dim I1 As Integer
Dim I2 As Integer
Dim I3 As Integer
Dim I4 As Integer
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim Dsid3(8) As Byte
Dim Dsid4(8) As Byte

Deflcdchar 0 , 232 , 244 , 232 , 227 , 228 , 228 , 227 , 224   'градус Цельсия      
Deflcdchar 1 , 31 , 27 , 19 , 27 , 27 , 27 , 17 , 31          'символ 1 
Deflcdchar 2 , 31 , 17 , 21 , 29 , 27 , 23 , 17 , 31           'символ 2
Deflcdchar 3 , 31 , 17 , 29 , 25 , 29 , 29 , 17 , 31            'символ 3 
Deflcdchar 4 , 31 , 23 , 21 , 21 , 17 , 29 , 29 , 31            'символ 4

'считываем адреса устройств на шине 1-Wire 
Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()
Dsid3(1) = 1wsearchnext()
Dsid4(1) = 1wsearchnext()

Do
   1wreset                                             'запускаем опрос всех датчиков
   1wwrite &HCC
   1wwrite &H44

Waitms 750

'после ожидания начинаем считывать датчики
'---------------------------------
   1wreset
   1wwrite &H55
   1wverify Dsid1(1)                   'адрес первого датчика 
   1wwrite &HBE
   I1 = 1wread(2)
'---------------------------------
   1wreset
   1wwrite &H55
   1wverify Dsid2(1)                      'адрес второго датчика 
   1wwrite &HBE
   I2 = 1wread(2)
   '------------------------------
   1wreset
   1wwrite &H55
   1wverify Dsid3(1)                      'адрес третьего датчика
   1wwrite &HBE
   I3 = 1wread(2)
'---------------------------------
   1wreset
   1wwrite &H55
   1wverify Dsid4(1)                  'адрес четвертого датчика
   1wwrite &HBE
   I4 = 1wread(2)

   Gosub conversion

   Cls
   Locate 1 , 1
   Lcd Chr(1) ; Ss ; Chr(0)

   I1 = I2

   Gosub Conversion

   Locate 2 , 1
   Lcd Chr(2) ; Ss ; Chr(0)

   I1 = I3

   Gosub Conversion

   Locate 1 , 9
   Lcd Chr(3) ; Ss ; Chr(0)

   I1 = I4

   Gosub Conversion

   Locate 2 , 9
   Lcd Chr(4) ; Ss ; Chr(0)

Loop

End

Conversion:
 I1 = I1 * 10
 I1 = I1 \ 16
 Ss = Str(i1)
 Ss = Format(ss , "0.0")
Return

  Очередь по которой будут сканироваться датчики и выводится показания, зависят только от уникального номера устройства. Но если потребуется опрашивать датчики только в определенном порядке, тогда нужно будет узнать уникальные
номера, и отправлять их в нужном порядке. 




 
 Скачать проект в Proteus

 А здесь представляем вашему вниманию двухканальный термометр с возможностью фиксировать максимумы/минимумы температур.


С дураком спорить бесполезно!
 
Форум » РАДИОТЕХНИКА » Полезные устройства » Опрос большого количества датчиков DS18B20 в Bascom-AVR
  • Страница 1 из 1
  • 1
Поиск:
Новый ответ
Имя:
Текст сообщения:
Опции сообщения:
Код безопасности:
Яндекс.Метрика
24 log 24 LOG statistick
счетчик посещений
Если вы видите это,
то ваш браузер устарел
и не поддерживает технологий
CSS 3.0