Всё по DS18(B/S)20.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Всё по DS18(B/S)20.

Сообщение ibiza11 »

Спойлерахахахаха DS18B20, такой DS18B20 :))) :))) :))) подпись к картинке - огонь!!!
Ставим плюсы: )
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Мдя... Вот оно, доверие криворуким студентам, делающим всё за "бутылку пиво". И не дай бог в такие руки попадётся разработка какого-нибудь регулятора для опасного объекта :facepalm:
Аватара пользователя
Coldheart
Прорезались зубы
Сообщения: 244
Зарегистрирован: Пт сен 10, 2010 20:39:32
Откуда: Украина Луганская обл.

Re: Всё по DS18(B/S)20.

Сообщение Coldheart »

Долго уже читаю эту ветку.. Возник один вопрос..
А что, на Асме еще никто не пытался DS18B20 приручить?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Всё по DS18(B/S)20.

Сообщение Gudd-Head »

Coldheart писал(а):А что, на Асме еще никто не пытался DS18B20 приручить?

Почему никто? :)
Да и какая, по-большому счёту разница, СИ или АСМ?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Gerik_PP
Открыл глаза
Сообщения: 59
Зарегистрирован: Вт ноя 07, 2006 14:14:16
Откуда: пос. Правдинский
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Gerik_PP »

Умею только на Асме.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Всё по DS18(B/S)20.

Сообщение akl »

Как вариант, правда с "паразитным" питанием.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

В сети полно примеров с DS на АСМ. Вот, как вариант, библиотека 1-wire на АСМе, с примером чтеня температуры - дынс
Аватара пользователя
Coldheart
Прорезались зубы
Сообщения: 244
Зарегистрирован: Пт сен 10, 2010 20:39:32
Откуда: Украина Луганская обл.

Re: Всё по DS18(B/S)20.

Сообщение Coldheart »

Gudd-Head писал(а):Да и какая, по-большому счёту разница, СИ или АСМ?

Для меня ближе и приятней Асм(на данном этапе изучения МК).
Даташтину перечитал раз 5, данный раздел форума тоже пересмотрел.
Как работает - понятно, как обращаться - тоже.
А откуда ноги растут у алгоритма работы с датчком не совсем понятно, тем более на Асме.
А здесь в основном примеры на СИ.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Всё по DS18(B/S)20.

Сообщение Gudd-Head »

Coldheart писал(а):А откуда ноги растут у алгоритма работы с датчком не совсем понятно, тем более на Асме.

Опять же, какая разница? Даёте ресет, посылаете адресную команду и исполняемую команду. При необходимости принимаете байты. Например:

Код: Выделить всё

rcall OneWire_reset;
rcall OneWire_SkipROM;
rcall OneWire_ConvertT;

rcall OneWire_reset;
rcall OneWire_SkipROM;
rcall OneWire_ReadScratchpad;

rcall OneWire_read_byte;
...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
IM1
Грызет канифоль
Сообщения: 268
Зарегистрирован: Вт фев 16, 2010 12:10:38
Откуда: Воронеж, Россия

Re: Всё по DS18(B/S)20.

Сообщение IM1 »

Coldheart писал(а):Для меня ближе и приятней Асм(на данном этапе изучения МК).
Даташтину перечитал раз 5, данный раздел форума тоже пересмотрел.
Вот, посмотрите рабочий проект на TINY-13 с подробными комментариями. Все функции, включая подсчет КС. Правда на ЖК индикаторе от кассового аппарата, но для изучения датчика роли большой не играет. Если интересно, то могу выложить весь проект в 4 студии со схемами и картинками.

ПС
На вопросы отвечу.
Вложения
ter1.asm
(11.79 КБ) 245 скачиваний
Chelovek
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Пт дек 02, 2011 16:31:40

Re: Всё по DS18(B/S)20.

Сообщение Chelovek »

Помогите разобраться с датчиком DS18b20. Ничего понять не могу. Как организовать связь между МК avr и датчиком на ассемблере? Я понял только то , что для начала нужно проверить подключен ли датчик, а дальше идет чтение, если подключен один датчик это команда чтения, если несколько то поиск. Но так же можно менять разрешение температуры, имеются регистры которые следят за максимальным и минимальным значением температуры. Дальше что делать я не знаю.
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение RoboC »

А что на пост выше это не к АВР асм?Там и коменты вроде есть :) . В сети есть русское описание датчика.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Chelovek
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Пт дек 02, 2011 16:31:40

Re: Всё по DS18(B/S)20.

Сообщение Chelovek »

Читал я описание датчика. Там есть команды и их описание, но как их использовать я не понял. Для начала нужно найти датчик, определить что он подключен. Но как?
Аватара пользователя
IM1
Грызет канифоль
Сообщения: 268
Зарегистрирован: Вт фев 16, 2010 12:10:38
Откуда: Воронеж, Россия

Re: Всё по DS18(B/S)20.

Сообщение IM1 »

Chelovek писал(а):Читал я описание датчика. Там есть команды и их описание, но как их использовать я не понял. Для начала нужно найти датчик, определить что он подключен. Но как?
Читайте асм файл. Все работает, честное слово. Не надо искать датчик, если он один. Разрядность по умолчанию 12 бит, тоже ничего делать не надо. Стартуйте. Читайте датчик. Проверяйте КС, можете не проверять, но это не есть хорошо. Потом преобразуйте результат из двоичной формы в десятичную и на экран. Все.
Вложения
Вид изнутри.jpg
(44.15 КБ) 421 скачивание
Термометр.jpg
(25.5 КБ) 263 скачивания
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Всё по DS18(B/S)20.

Сообщение Gudd-Head »

Кто какой малый подтягивающий резистор ставил вместо 4,7 кОм? Тут вроде про 680 Ом говорили?...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Chelovek
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Пт дек 02, 2011 16:31:40

Re: Всё по DS18(B/S)20.

Сообщение Chelovek »

Не могу я разобраться. Пересмотрел код раз 10. Что обозначает CRC? По описанию какой-то контроль избыточности. Какая последовательность действий при работе?
1) Прочитать значение с датчика
2) узнать + или -
3) обработка целой и дробной части
4) вывод на индикацию
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Gudd-Head писал(а):Кто какой малый подтягивающий резистор ставил вместо 4,7 кОм? Тут вроде про 680 Ом говорили?...
Я 680 Ом ставил. Работает уже год, вроде проблем нет никаких.
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение RoboC »

Chelovek писал(а):Не могу я разобраться. Пересмотрел код раз 10. Что обозначает CRC? По описанию какой-то контроль избыточности. Какая последовательность действий при работе?


Сначала делаем это( reset):
На шине должно быть одно ведущее устройство (master-ВАШ МК) и одно или несколько ведомых (slave- DS18B20). При начале обмена данных, ведущий должен проверить наличие на шине хоть кого-то. Для этого мастер на протяжении 480мкс должен удержать логический ноль на шине (так называемый Reset pulse), «отпустить» шину минимум на 60мкс и посмотреть какой уровень присутствует на линии данных. Если это низкий уровень – на шине есть устройство 1-wire. Если высокий – шина пуста.

Пусто - входим, не пусто дальше делаем это:
Далее следует передать байт-команду устройствам. Для этого ознакомимся с принципом передачи данных по 1-Wire. Передача байта разбита на так называемые временные слоты (60-120мкс), один временной слот служит для передачи одного бита. Данные передаются последовательно, начиная с младшего бита.
передаем команды Skip Rom, Convert T
Ждем 1.1Сек(это зависит от установленной разрядности в ДС18Б20)
Добавлено:делаем еше раз Reset pulse
Команды Skip Rom, Read Scratchpad
Читаем 9 байт первые 2 -байты температуры, последний- контрольная сумма(КС или CRC)
Считаем КС полученых байт(кроме последнего) и сравниваем с контрольной суммой(последний байт)
Если сошлось - обрабатываем 2 байта температуры и выводим на индикацию.

680 Ом - чтоб просто подогреть датчик :)?
Последний раз редактировалось RoboC Пт мар 29, 2013 08:28:29, всего редактировалось 1 раз.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Аватара пользователя
IM1
Грызет канифоль
Сообщения: 268
Зарегистрирован: Вт фев 16, 2010 12:10:38
Откуда: Воронеж, Россия

Re: Всё по DS18(B/S)20.

Сообщение IM1 »

Chelovek писал(а):Не могу я разобраться. Пересмотрел код раз 10.
Вам все пытаемся объяснить, что нет ничего сложного. Вот и RoboC расписал по пунктам. Собственно вот этот кусок ассемблера делает все в бесконечном цикле:

Код: Выделить всё

iii4:
; Работа:
   rcall   Init1wire
   ldi      outByte, 0xcc      ; Skip Rom
   rcall   rw_byte
   ldi      outByte, 0x44      ; Convert T
   rcall   rw_byte
; задержка 1,3 сек
iii5:
   tst      count1
   brne   iii5
   rcall   Init1wire
   ldi      outByte, 0xcc      ; Skip Rom
   rcall   rw_byte
   ldi      outByte, 0xbe      ; Read Scratchpad
   clr      crc
   rcall   rw_byte
   rcall   rd_byte            ; T LSB
   mov      r6, outByte
   rcall   do_crc            ; вычисляем crc
   rcall   rd_byte            ; T MSB
   mov      r7, outByte
   rcall   do_crc            ; вычисляем crc
   ldi      temp2, 7
iii6:
   rcall   rd_byte   
   rcall   do_crc            ; вычисляем crc
   dec      temp2
   brne   iii6
   tst      crc
   brne   err
   rcall   cel
   rcall   mem_ind
   ldi      yl, 0x60   
   rcall   ind_mem            ; выводим память на индикатор
   ldi      temp, time
   mov      count1, temp      ; заряжаем счетчик
   rjmp   iii4
Единственное отличие у меня от канонического, я не проверяю наличие датчика на линии (ответ устройства), т.к. Контрольная Сумма не совпадет в случае обрыва датчика и вместо температуры на индикаторе будет "Error". Что, по моему понятию, достаточно.
Спрашивайте лучше прямо по строкам, что непонятно. Так продуктивнее будет.
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: Всё по DS18(B/S)20.

Сообщение a_skr »

RoboC писал(а):передаем команды Skip Rom, Convert T
Ждем 1.1Сек(это зависит от установленной разрядности в ДС18Б20)
Команды Skip Rom, Read Scratchpad

вполне достаточно 750 миллисекунд ожидания. хотя, существует мнение, что чем реже читать - тем меньше датчик будет нагреваться от этого самого чтения.
и перед "Skip Rom, Read Scratchpad" еще один "reset pulse".
Ответить

Вернуться в «Периферия»