Датчик температуры DS18B20: система команд

Система команд цифрового термометра DS18B20

Шина 1-Wire
Система команд DS18B20

В этой статье мы кратко рассмотрим  организацию  общения  устройств  по  шине 1-Wire и полностью изучим функциональные команды и команды ROM цифрового термометра DS18B20.

Система команд датчика температуры DS18B20


Шина 1-Wire

Шина 1-Wire имеет по определению только единственную линию данных. Шина 1-Wire требует внешнего подтягивающего резистора номиналом около 5 кОм. Таким образом, неактивное состояние для 1-Wire шины — логическая единица. Если по какой-нибудь причине обмен данными по шине должен быть приостановлен, шину НУЖНО оставить в неактивном состоянии. Если шина будет переведена в низкое состояние на время более чем 480 мкс, то все компоненты на шине будут сброшены (инициализированы). Сопротивление резистора надо выбирать из компромисса между сопротивлением используемого кабеля и внешними помехами. Сопротивление резистора может быть от 5,1 до 1 кОм. Для кабелей с высоким сопротивлением жил надо использовать более высокое сопротивление. А там где присутствуют промышленные помехи – выбирать более низкое сопротивление и использовать кабель с более большим сечением провода. Для телефонной лапши (4 жилы) для 100 метров необходим резистор 3,3 кОм. Если вы применяете «витую пару» даже 2 категории длина может быть увеличена да 300 метров. А при использовании схемы с внешним драйвером до 600. На практических примерах общения микроконтроллера и датчика вы более полно поймете смысл работы данной шины.


Система команд датчика DS18B20

В этом разделе мы изучим команды цифрового термометра DS18B20 и управление устройствами по шине 1-Wire. Все команды делятся на два типа: команды ROM и функциональные команды.

Команды ROM:

SEARCH ROM [F0h]  — (ПОИСК ROM)
Если в нашей конструкции используется более одного датчика, то с помощью этой команды мы идентифицируем (считываем) коды ROM (уникальный 64-разрядный код) всех датчиков подключенных к шине. Эта команда позволяет микроконтроллеру определить номера и типы подчиненных устройств (это могут быть не только DS18B20 но и другие устройства, которые общаются по шине 1-Wire), чтобы потом мы могли выдавать команды нужному устройству.

READ ROM [33h] — (ЧТЕНИЕ ROM)
Если в нашей конструкции используется только один датчик, то этой командой мы напрямую считываем код ROM подключенного устройства. Эту команду нельзя использовать если подключено более одного датчика.

MATCH ROM [55h] — (СООТВЕТСТВИЕ ROM)
Команда соответствия ROM, сопровождаемая последовательностью кода ROM на 64 бита позволяет устройству управления шиной (микроконтроллеру) обращаться к определенному подчиненному устройству (датчику) на шине. Только подчиненное устройство, которое точно соответствует 64 битам последовательности кода ROM, ответит на функциональную команду от главного устройства. Все другие подчиненные устройства на шине будут ждать импульса сброса (после которого можно выбрать следующее устройство).

SKIP ROM [CCh] — (ПРОПУСК ROM)
Главное устройство может использовать эту команду, чтобы обратиться ко всем устройствам на шине одновременно. Например, главное устройство может заставить, чтобы все DS18B20 на шине, начали одновременно температурные преобразования. Для этого необходимо выдать на шину команду Пропуска ROM [CCh] сопровождаемую командой Температурного преобразования [44h]

ALARM SEARCH [ECh] — (ПОИСК ТРЕВОГИ)
Операция этой команды идентична операции команды Поиска ROM за исключением того, что только датчики с установленным флажком аварии ответят. Эта команда позволяет главному устройству определять, какие датчики испытали сигнальное состояние в течение недавнего температурного преобразования. После каждого цикла Поиска Тревоги (то есть, команда Alarm Search, сопровождаемая обменом данных), устройство управления шиной должно произвести инициализацию.

Функциональные команды DS18B20:

После того, как устройство управления шиной обработало команду ROM, чтобы обратиться к датчику, с которым оно желает связаться, устройство управления может формировать одну из команд функции DS18B20. Эти команды позволяют выполнить функции записи или чтения оперативной памяти DS18B20, инициализировать температурные преобразования или определить режим электропитания.

КОНВЕРТИРОВАТЬ ТЕМПЕРАТУРУ [44h]
По этой команде начинается температурное преобразование (определение температуры), результаты которого заносятся в 2-х байтовый температурный регистр.
При этом:
— при питании датчика от внешнего источника, микроконтроллер, после подачи команды на преобразование, может считывать состояние шины — если на шине «0» — преобразование еще идет, если на шине «1» — преобразование закончено и можно считывать данные.
в режиме паразитного питания такой номер не проходит, не получиться определить когда будет закончено преобразование и считывать данные можно будет только через определенный промежуток времени (примерно чуть менее 1 секунды). Это происходит потому, что в режиме паразитного питания, после подачи команды на преобразование, в пределах не позже 10 мкс (максимум) шину необходимо перевести в высокое состояние для питания датчика.

ЗАПИСЬ В ПАМЯТЬ [4Eh]
Эта команда позволяет устройству управления записывать 3 байта данных в память DS18B20.  Первый байт данных записывается в регистр (TH), второй байт записывается в регистр  (TL), и третий байт записывается в регистр конфигурации.  Данные должны быть переданы наименьшим значащим битом вперед.
Для датчиков температуры с паразитным питанием все три байта ДОЛЖНЫ быть записаны командой КОПИРОВАНИЕ ОЗУ В ПЗУ [48h] прежде, чем устройством управления будет сгенерирован импульс сброса, иначе данные будут потеряны.

ЧТЕНИЕ ПАМЯТИ  [BEh]
Эта команда позволяет устройство управления читать содержание ПАМЯТИ. Передача данных начинается с наименьшего значащего бита байта 0 и продолжается до 9-ого байта (байт 8 — циклический контроль избыточности). Устройство управления может выполнить сброс, чтобы закончить чтение в любое время, если необходимо только часть данных.

КОПИРОВАНИЕ  ОЗУ В ПЗУ [48h]
Эта команда копирует содержание  регистров TH, TL и регистра конфигурации (байты 2, 3 и 4) в ПЗУ. Если устройство используется в режиме паразитного питания, то в пределах не позднее 10 мкс (максимально) после подачи этой команды устройство управления должно установить высокий уровень на шине и поддерживать его в течении не менее 10ms.

ПОВТОРНАЯ ЗАГРУЗКА [B8h]
Эта команда повторно загружает значения регистров TH, TL и данные регистра конфигурации с ПЗУ и размещает данные в байты 2, 3, и 4, соответственно, в памяти. Главное устройство может контролировать процесс загрузки ОЗУ из ПЗУ считывая состояние шины после команды ПОВТОРНАЯ ЗАГРУЗКА. Если на шине логический «0» — это значит идет операция перезагрузки, если логическая «1» — операция выполнена. Операция ПОВТОРНАЯ ЗАГРУЗКА выполняется автоматически при включении питания, данные доступны сразу после включения питания.

ВИД ЭЛЕКТРОПИТАНИЯ ДАТЧИКА [B4h]
Главное устройство генерирует эту команду, чтобы определить, используют DS18B20 на шине паразитное питание. Если после подачи команды на шине присутствует логический «0» — это значит, что DS18B20 использует паразитное питание. Иначе DS18B20 использует внешнее питание.


Предыдущая статья:
Устройство датчика температуры DS18B20
Следующая статья:
1. Подключение DS18B20 к микроконтроллеру и программирование работы с датчиком
2. Микроконтроллер AVR и датчик DS18B20: программирование работы


Примечание: к этой записи прикреплена форма для оценки. Чтобы оценить её, зайдите на сайт.
Система команд датчика DS18B20
Полное писание функциональных команд и команд ROM DS18B20
Published by: Мир микроконтроллеров
Date Published: 02/05/2015

Один ответ к “Датчик температуры DS18B20: система команд”

Здравствуйте, подскажите пожалуйста каким обменом данных сопровождается команда ALARM SEARCH [ECh] — (ПОИСК ТРЕВОГИ), я понимаю как ее отправить, но что после нее я должен принять от датчика, данные. В даташите говорится о флаге тревоги и о том, что при достижение кого-го то предела, которые выставляются в регистрах TH и TL. Как в них пределы записать я тоже знаю. Но вот чего я должен от датчика принять и как с этим работать я пока не понимаю. Заранее спасибо

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *