Меню

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

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

DS1820, DS18S20, DS18B20 — популярные цифровые термодатчики фирмы DALLAS-MAXIM с однопроводным интерфейсом 1-Wire.

В связи с неоднозначностью маркировок и обилием схем на данных цифровых термодатчиках, появившихся в радиолюбительской литературе, считаю необходимым дать некоторые пояснения.

В данной статье рассматриваются только изделия в корпусе TO-92 как наиболее распространенные. Информацию по изделиям других корпусах смотрите в документации (data sheets).

Микросхема DS1820 снята с производства, для её замены рекомендуется микросхема DS18S20. Однако, следует обратить внимание на то, что микросхемы DS18S20 в корпусе TO-92 маркируются надписью «DS1820» (без буквы S). Новая микросхема DS18S20 программно совместима со старой DS1820 и, по заверению производителя, в большинстве случаев может быть непосредственной заменой старой DS1820. Возможно, маркировкой без буквы S производитель хотел указать на эту совместимость. Программная совместимость новой DS18S20 со старой DS1820 гарантированно обеспечивается если в программе применен алгоритм из data sheet.

Как видно из таблицы новая микросхема DS18S20 выполнена в стандартном корпусе TO-92, а старая DS1820 имела удлиненный корпус. По этому признаку Вы также можете убедиться, что продавцы Вам не «втюхивают» устаревшую микросхему.

Микросхема же DS18B20 всегда имеет соответствующую маркировку «DS18B20» и не может быть заменена на DS1820/DS18S20 и обратно без изменения программного кода.

Источник

DS1820 Arduino

Есть достаточно много интересных модулей и датчиков, которые можно использовать в разработках на платформе Arduino, и один из них – это конечно датчик температуры DS1820 разработанный компанией Dallas Semiconductor и приобретенная компанией Maxim Integrated Products в 2001 году.

Выпускается в разном исполнении

  • Просто датчик
  • Во влагозащищённом корпусе
  • В виде готового модуля

Датчик DS1820 – это не дорогой измеритель температуры с довольно хорошими характеристиками, уникальным 64 битным кодом, маленьким размером, не требующий дополнительной обвязки.
По сути, это даже не датчик, а маленький микропроцессор со своей памятью EEPROM в которую можно сохранить параметры контроля, заданные пользователем, а возможность получать данные по однопроводной линии связи, да на которую можно подвесить практически неограниченное количество датчиков, делает его практически не заменимым в разработках.

Характеристики
DS1820 (DS18S20, DS1821, DS18B20)

  • интерфейс 1-Wire. На один пин микроконтроллера можно подключить несколько датчиков.
  • Уникальный 64-битный серийный номер.
  • Напряжение питания 3,0 В — 5,5 В. Можно использовать линию связи и подключить по схеме паразитной связи двумя проводами (“parasite power”).
  • Диапазон измерения от -55°C до +125°C
  • Точность ± 0.5°C в диапазоне -10 . +85 °C.
  • Разрешение преобразования 9 — 12 бит. Задается пользователем.
  • Потребление тока 1,5мА
  • Время измерения, до 750 мс, при максимальном разрешении 12 бит.
  • Температура эксплуатации, °С 0. +55
  • Относительная влажность эксплуатации, % . 55
  • Производство Dallas / Maxim
  • Вес, г 10

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

Получает данные всего по одному проводу. На этот единственный провод возможно повесить огромное количество таких же датчиков, так как каждый DS1820 имеет свой уникальный 64-битный код.

Применяются для определения температуры в помещениях, на улице, в жидкостях (версия в влагозащищённом корпусе).

Типы корпусов датчика ds1820

  • GND – Общий провод (Земля)
  • D – Вывод данных. По нему так же подаётся питание при схеме с Паразитным питанием.
  • VDD – Питание от 3,3 до 5,5 Вольт. В схеме с паразитным питанием соединить с Общим проводом.

Подключение DS1820
По протоколу 1-Wire. Вывод данных подключается через подтягивающий резистор 4,7 кОм к питанию. Arduino, работающий здесь как Мастер, определяет есть ли устройства на шине и обменивается с ними данными используя уникальный 64 битный код каждого датчика.
Младшие восемь бит содержат код семейства микросхем DS18B20 28h.
Средний блок из 48 бит — это уникальный серийный номер устройства.
Старшие восемь бит — это циклический код (CRC) для всех предыдущих 56 битов.

Паразитное питание
Питание получается от подтягивающего резистора включенного между выводом D(Вывод данных, центральный вывод) и + питания 3,0 – 5,5 Вольт. GND и VDD необходимо соединить. Измерение температуры при этом немного снижается до +100 С. Если вам необходимо регистрировать температуру до +125С, то необходимо подключить внешнее питание. Часто печатают схемы с дополнительным полевым транзистором, но он не обязателен при работе с Arduino, потому что на выходах микроконтроллера достаточно силы тока.

Блок-схема датчика

Память датчика.
Включает в себя оперативную (SRAM) и энергонезависимую (EEPROM) память.
В EEPROM хранятся регистры TH, TL и регистр конфигурации.
Если функция тревожного сигнала не используется, то регистры TH и TL могут использоваться как регистры общего назначения.

Режим с внешним питанием.
Тут ничего сложного нет. Подключаете VDD к + источника 3,0 В — 5,5 В, а GND к общему проводу(земле).
Подключаете подтягивающий резистор между выводом D (Вывод данных, центральный вывод) и + питания.

Подключение DS1820 к Arduino

Выдержка из даташита.
Изменение резистора от длины кабеля, помех и сопротивления жил.

Конвертация температуры
Разрешающую способность преобразования датчика можно изменять с 9 до 12 битов. От этого зависит точность измерений и скорость определения температуры, соответственно 0.5 °C, 0.25 °C, 0.125 °C, 0.0625 °C. По умолчанию установлено 12 бит., так же по умолчанию датчик откалиброван в градусах Цельсия. Результат представлен как 16-разрядное число.
Эти данные, как и пороги тревожного сигнала хранятся в энергонезависимой память EEPROM.
Более подробно можно прочитать в datasheet ds1820 на русском языке
или на datasheet на английском

Принцип работы датчика
Основан на сравнении частоты 2-х генераторов. Частота первого постоянна, а второго изменяется в зависимости от изменения измеряемой температуры. При вычитании частоты первого генератора из второго получаем значение температуры.
При подаче питания датчик находится в Низком состоянии, состоянии ожидания. Микроконтроллер может запросить данные с датчика, отправив ему запрос. Датчик измерит температуру, сохранит её в 2 байтах регистра и снова уйдёт в состояние ожидания.

Тревожный режим
Значения находятся в регистрах Th и Tl и хранятся в EEPROM. При измерении температуры её значения сравниваются с Th и Tl и если они находятся в пределах, то всё в порядке, а если значения ниже чем Tl или выше Th то создаётся признак аварии.

Источник

Изучаем DS1820/DS18B20

Датчики температуры с однопроводным интерфейсом 1-WIRE были разработаны фирмой DALLAS SEMICONDUKTOR для использования совместно с микроконтроллерами. Впоследствие эти датчики стали выпускаться фирмой MAXIM. Каждый датчик температуры имеет 56-разрядный индивидуальный идентификационный код, поэтому по одному проводу может быть опрошено практически неограниченное число датчиков. Перед установкой таких датчиков в одну линию необходимо считать 64 разрядный код ROM (в него входит 56-битный номер датчика и 8 бит регистра контроля четности) для каждого датчика и учитывать его при программировании микроконтроллера. Передача 64 разрядов занимает много времени, поэтому в устройствах, использующих небольшое число датчиков, можно обойтись выделением отдельного выхода микроконтроллера для каждого датчика.

Термодатчики DS1820 (DS18S20, DS1821, DS18B20)имеют следующие технические характеристики:
— индивидуальный 64-битный идентификационный номер;
— напряжение питания от +3 до +5,5 В;
— измеряемая температура от -55 до + 125°С;
— погрешность измерения температуры в диапазоне -10. +85°С не более 0,5°С;
— в остальном диапазоне температур погрешность измерения не превышает 2°С;
— информация о температуре выдается 9-битным кодом;
— установка пороговых значений температуры по максимуму и минимуму,
— максимальное время преобразования температуры в код 750 мс;
— возможность питания от высокого уровня шины данных;
— термодатчики не требуют индивидуальной настройки при замене.

Принцип измерения температуры основан на сравнении частоты двух генераторов. Частота одного генератора не зависит от температуры, а частота второго изменяется с изменением температуры. Разность частот двух генераторов определяет значение температуры. Восьмиразрядный код температуры побитно, начиная с младшего бита, выводится в линию связи. Девятый бит определяет знак измеренной температуры. Если девятый бит единичный, то температура имеет знак минус, и наоборот. Передача каждого бита данных длится 60 мкс. Если длительность низкого уровня в линии от 1 до 15 мкс, то импульс идентифицируется как лог. 1. Лог. 0 идентифицируется при длительности низкого уровня в линии от 15 до 60 мкс.

Для начала работы с термодатчиком управляющий микроконтроллер должен инициализировать его посылом необходимых команд. Рассмотрим назначение команд, управляющих работой термодатчика.

Поиск ROM (Search ROM) [0xF0]

Команда выдается управляющим микроконтроллером для определения числа и типа термодатчиков, подключенных к одной линии.

Чтение ROM (Read ROM) [0x33]

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

Идентификация ROM (Match ROM) [0x55]

Команда выдается перед 64-битным идентификационным номером и подтверждает обращение именно к этому термодатчику. Все последующие команды будут восприниматься только одним датчиком до команды обнуления линии.

Пропуск ROM (Skip ROM) [0xCC]

Команда может использоваться, когда необходимо обратиться ко всем датчикам, расположенным на одной линии, или когда к линии подключен только один датчик. Общей для многих датчиков может быть команда начала преобразования температуры. При обращении к одному термодатчику команда позволяет упростить программу (следовательно, и время цикла) за счет того, что пропускается громоздкая подпрограмма идентификации кода и вычисления кода четности.

Поиск аварии (Alarm Search) [0xEC]

Действие команды аналогично команде «Поиск ROM», но отвечает на нее термодатчик, если измеренная температура выходит за пределы предварительных установок по максимуму и минимуму.

Начало преобразования температуры (Convert Т) [0x44]

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

Чтение блокнота (Read Scratchpad) [0xBE]

В блокноте содержится 8 байт информации (рис. 1). Если нужна информация только о температуре, то считывается 9 бит. Термодатчик будет выдавать информацию до тех пор, пока управляющий микроконтроллер не выдаст в линию нулевой импульс.

Рисунок 1. Карта памяти датчика DS1820

Запись в блокнот (Write Scratchpad) [0x4E]

После этой команды управляющий микроконтроллер должен послать два байта для записи в блокнот максимальной ТН и минимальной TL температуры ограничения по максимуму и минимуму. Все 16 бит необходимо передавать непрерывно без обнуления линии.

Копирование блокнота (Copy Scratchpad) [0x48]

После этой команды минимальная (TL) и максимальная (ТН) установленные значения температур переписываются в энергонезависимую память (EEPROM). После отключения напряжения питания записанные значения сохранятся в памяти.

Восстановление (Recall Е2) [0xB8]

Эта команда необходима для копирования значений температуры из EEPROM в рабочую зону блокнота. При выполнении восстановления термодатчик выдает в линию низкий уровень, а после окончания записи — высокий.

Питание от линии (Read Power Supply) [0xB4]

После этой команды термодатчик переходит к питанию от линии. В составе термодатчика имеется конденсатор, который заряжается от высокого уровня линии. Перед опросом термодатчика управляющим микроконтроллером необходимо выдержать время, необходимое для заряда конденсатора.

Передача данных по однопроводной шине выполняется импульсами нулевого уровня, но различной длительности лог. 0 и лог. 1. Импульс воспринимается как лог. 1, если его длительность не превышает 15 мкс (рис. 2). Если длительность импульса больше 15 мкс, то он воспринимается как лог. 0. Длительность одного бита информации принята равной 60 мкс. Отсюда и разброс возможных длительностей импульсов: лог. 0 — 1. 15 мкс, лог. 1 — 15. 60 мкс.

Рисунок 2. Временные диаграммы импульсов однопроводной шины

Для того чтобы термодатчик подготовить к приему информации, управляющий микроконтроллер должен послать в линию импульс обнуления (Reset) (рис. 54). Импульс обнуления должен иметь длительность 480. 960 мкс. В ответ на обнуление линии термодатчик посылает импульс присутствия (Presence). Если в устройстве не предусмотрено отключение датчика, то импульс присутствия для упрощения программы можно не проверять, а заполнить это время (около 100 мкс) паузой. Длительность импульса Presence может быть в пределах 60. 240 мкс.

Если к одной линии подключено несколько термодатчиков, то проверка импульса присутствия обязательна. Перед приемом каждого бита информации с датчика микроконтроллер управления должен послать короткий импульс готовности (запроса) длительностью 1. 3 мкс.

Обмен данными и командами начинается с младшего бита. Формат регистров термодатчика показан на рис. 3. Младший регистр температуры (LS) несет информацию о температуре. В нулевой бит записана информация о десятых долях температуры. Если нулевой бит единичный, то десятые доли равны 0,5°С. Старший регистр температуры (MS) содержит информацию о знаке температуры. Если значения регистра нулевые, то знак температуры положительный, и наоборот. Поскольку все биты регистра MS одинаковы, то достаточно считать только младший бит.

Рисунок 3. Форматы регистров термодатчика DS1820

Регистры установки ограничения температуры Тh, Tl несут информацию только о целых значениях температуры. В седьмом бите записывают информацию о знаке температуры. При отрицательной температуре в седьмой бит необходимо записать единицу.

В табл. 1 приведен пример принимаемых кодов при различных температурах. Для того чтобы получить значение температуры при минусовых температурах, необходимо принятую информацию перевести в дополнительный код. Для перевода в дополнительный код необходимо принятый код инвертировать и прибавить единицу. Например, для значения 1111 1111 получим 0000 0001, т.е. 0,5°С, но со знаком минус.

Подключение термодатчика к микроконтроллеру показано на рис. 4. Шина данных должна быть подключена к плюсу питания через резистор номиналом 4,7 кОм, поскольку выходной транзистор датчика имеет открытый сток. При питании датчика от шины данных вывод 3 остается свободным.

Рисунок 4. Схема подключения термодатчика к микроконтроллеру AVR

В режиме питания от шины данных перед приемом информации требуется максимальная пауза длительностью 750 мс, хотя у меня датчик работал и при длительности паузы, равной 500 мс. В каждом конкретном случае необходима экспериментальная проверка выбранной длительности паузы.

Если необходима повышенная точность измерения температуры, а быстродействие системы не имеет значения, то ее можно рассчитать по формуле:

Т = Тu — 0,25 + (CUNT_PER — COUNT_REMAIN)/COUNT_PER,

где Тu — измеренная температура в °С; COUNT REMAIN, COUNT_PER — 6 и 7 байты блокнота (рис. 53). В документации на термодатчик не указана точность значений вычисленных температур, поэтому радиолюбителям советую провести экспериментальную проверку.

Вообще, если необходима точность измерения температуры 0,5°С за пределами диапазона -10. +85°С, то необходимо делать поправку на точность измерения температуры для каждого датчика. Для этого экспериментально сравнивают показания температуры вашей системы с показаниями образцового термометра. Полученную относительную погрешность программно прибавляют со своим знаком к измеренному значению.

Микроконтроллерные термодатчики DS18B20, как упоминалось выше, отличаются повышенной точностью измерения температуры. Формат регистров термодатчика показан на рис. 5. Младший полубайт регистра LS предназначен для передачи данных температуры с максимальной точностью, т. е. 0,0625°С. Если точность измерения температуры будет в два раза меньше, то все данные сдвинутся на разряд вправо, а в нулевом бите будет информация 2(в минус третей степени). Если будет установлена точность измерения температуры, равная 0,5°С, то формат регистров температуры ничем не будет отличаться от формата регистров термодатчика DS1820.

В табл. 2 показан пример данных при различных температурах, измеренных с максимальной точностью измерения.

Точность измерения температуры термодатчиком DS18B20 задается при его инициализации установкой пятого и шестого бита регистра конфигурации (рис. 5). В табл. 3 показаны устанавливаемые значения битов регистра конфигурации при различной точности измерения и максимальном времени преобразования температуры. Реально это время может быть значительно меньшим.

Рисунок 5. Формат регистров термодатчика DS18B20

При подаче управляющим микроконтроллером команды 0x4E (запись в блокнот) подряд передаются 3 байта. Первым передается байт установки ограничения температуры по максимуму (Тh), вторым — по минимуму (Tl), а третьим — байт конфигурации. Назначение других команд ничем не отличается от назначения команд термодатчика DS1820.

Последовательность действий управляющего микроконтроллера при считывании температуры с одного термодатчика DS1820:
1) послать сигнал обнуления линии (480. 960 мкc);
2) принять импульс присутствия или заполнить время паузой (60. 240 мкc);
3) послать команду пропуска идентификации 0xCC;
4) послать команду начала преобразования 0x44;
5) пауза не менее 500 мкc для завершения процесса преобразования;
6) обнулить линию;
7) послать команду пропуска идентификации 0xCC;
8) послать команду считывания блокнота 0xBE;
9) принять 9 байт;
10) выделить и проанализировать бит десятых долей градуса;
11) проанализировать бит знака;
12) если знак отрицательный, то перевести значение температуры в дополнительный код.

Последовательность действий управляющего микроконтроллера для датчика DS18B20 отличается посылом байта конфигурации с любыми значениями температур ограничения. Кроме того, необходимо вводить вычисления долей градуса с установленным весом (точностью).

Во второй части пример практического применения датчиков DS18B20.

Теоретический материал был взят из книги Н. И. Заеца «Радиолюбительские конструкции на PIC микроконтроллерах»

Источник

Читайте также:  Замена датчика дроссельной заслонки лада веста
Adblock
detector