ЦИФРОВОЙ ИЗМЕРИТЕЛЬ ТЕМПЕРАТУРЫ
Исполнитель: Ильин Александр, 641 об
Научный руководитель: Русинов Владислав Леонидович Оборудование
ARDUINO NANO
Датчики температуры: DS18B20
Описание
DS18B20 это цифровой измеритель температуры, с разрешением преобразования 9 - 12 разрядов и функцией тревожного сигнала контроля за температурой. Параметры контроля могут быть заданы пользователем и сохранены в энергонезависимой памяти датчика.
DS18B20 обменивается данными с микроконтроллером по однопроводной линии связи, используя протокол интерфейса 1-Wire.
Питание датчик может получать непосредственно от линии данных, без использования внешнего источника. В этом режиме питание датчика происходит от энергии, запасенной на паразитной емкости.
Диапазон измерения температуры составляет от -55 до +125 °C. Для диапазона от -10 до +85 °C погрешность не превышает 0,5 °C.
У каждой микросхемы DS18B20 есть уникальный серийный код длиной 64 разряда, который позволяет нескольким датчикам подключаться на одну общую линию связи. Т.е. через один порт микроконтроллера можно обмениваться данными с несколькими датчиками, распределенными на значительном расстоянии. Режим крайне удобен для использования в системах экологического контроля, мониторинга температуры в зданиях, узлах оборудования.
Рисунок 1 - Датчик температуры DS18B20
Об особенностях DS18B20:
Для однопроводного интерфейса 1-Wire достаточно одного порта связи с контроллером.
Каждое устройство имеет уникальный серийный код длиной 64 разряда.
Возможность подключения нескольких датчиков через одну линию связи.
Нет необходимости во внешних компонентах.
Возможность получать питание непосредственно от линии связи. Напряжение питания в пределах 3,0 В … 5,5 В.
Диапазон измерения температуры -55 ... +125 °C.
Погрешность не превышает 0,5 °C в диапазоне -10 ... +85 °C.
Разрешение преобразования 9 … 12 бит. Задается пользователем.
Время измерения, не превышает 750 мс, при максимально возможном разрешении 12 бит.
Рисунок - Блок схема
На рисунке блок-схема датчика DS18B20. 64-битное ПЗУ (ROM) хранит уникальный серийный код устройства.
Оперативная память содержит:
значение измеренной температуры (2 байта);
верхний и нижний пороговые значения срабатывания тревожного сигнала (Th, Tl);
регистр конфигурации (1 байт).
Через регистр конфигурации можно установить разрешение преобразования термодатчика. Разрешение может быть задано 9, 10, 11 или 12 бит. Регистр конфигурации и пороги тревожного сигнала содержатся в энергонезависимой памяти (EEPROM).
В микросхеме DS18B20 для обмена данными использует специализированный протокол 1-Wire корпорации Dallas. Для линии связи требуется слабый подтягивающий резистор т.к. все устройства физически подключены к одной общей шине и используют выход с тремя состояниями или выход типа открытый сток. В этой системе с одной шиной, микроконтроллер (мастер) определяет наличие устройств на шине и обменивается с ними, используя уникальный адрес для каждого устройства - 64-разрядный код. Т.к. каждый термодатчик имеет уникальный код, то число устройств, подключенных к шине, практически ни чем не ограничено.
Другая особенность DS18B20 - работать без внешнего источника питания. Питание происходит через подтягивающий резистор шины и вывод DQ, во время высокого уровня шины. Сигнал высокого уровня заряжает через вывод DQ внутренний конденсатор (Cpp), энергией которого и питается микросхема при низком уровне линии связи. Этот метод в спецификации протокола 1-Wire называется "паразитное питание". Ничего не мешает использовать и внешнее питание для DS18B20. Подается оно на вывод Vdd.
Режим - измерение температуры.
Основная функция DS18B20 - преобразование температуры датчика в цифровой код. Разрешение преобразования задается 9, 10, 11 или 12 бит. Это соответствует разрешающей способность - 0,5 (1/2) °C, 0,25 (1/4) °C, 0,125 (1/8) °C и 0,0625 (1/16) °C. При включении питания, состояние регистра конфигурации устанавливается на разрешение 12 бит.
После включения питания DS18B20 находится в низко-потребляющем состоянии покоя. Чтобы инициировать измерение температуры мастер (микроконтроллер) должен выполнить команду ПРЕОБРАЗОВАНИЯ ТЕМПЕРАТУРЫ. После завершения преобразования, результат измерения температуры будет находиться в 2 байтах регистра температуры, и датчик опять перейдет в состояние покоя.
Если DS18B20 включен по схеме с внешним питанием, то мастер может контролировать состояние команды конвертации. Для этого он должен читать состояние линии (выполнять временной слот чтения), по завершению команды, линия перейдет в высокое состояние. Во время выполнения команды конвертации линия удерживается в низком состоянии.
При питании от заряда паразитной емкости, такой способ не допустим, т.к. во время операции преобразования на шине необходимо удерживать высокий уровень сигнала для питания датчика.
DS18B20 измеряет температуру в градусах по шкале Цельсия. Результат измерения представляется как 16-разрядное, знаковое число в дополнительном коде. Бит знака (S) равен 0 для положительных чисел и равен 1 для отрицательных. При разрешении 12 бит, у регистра температуры все биты значащие, т.е. имеют достоверные значения. Для разрешения 11 бит, не определен бит 0. Для 10-битного разрешения не определены биты 0, 1. При разрешении 9 бит, не достоверное значение имеют биты 0, 1 и 2. В таблице 2 показаны примеры соответствия цифровых кодов значению температуры.
Для вычисления температуры надо:
При положительном значении ( S=0 ) код перевести в десятичный и умножить на 0,0625 °C.
При отрицательном значении ( S=1 ) сначала необходимо перевести дополнительный код в прямой. Для этого надо инвертировать каждый разряд двоичного кода и прибавить 1. А затем перевести в десятичный и умножить на 0,0625 °C.
Рисунок - Вид сверху
Рисунок - Вид спереди