Программатор термометра/термостата DS1821.

Довольно часто на практике возникает задача термостатирования какого-либо объекта. Раньше для решения этой задачи требовалась довольно громоздкая аналоговая схема, содержащая несколько десятков элементов. В настоящее время такая задача может быть решена значительно проще. Если требуемая точность поддержания температуры составляет единицы градусов, а рабочая температура не выходит из диапазона –55..+125°C, то она может быть решена с помощью цифрового термометра/термостата DS1821.

Микросхема DS1821, выпускаемая фирмой Dallas (теперь это уже MAXIM), может работать в режиме термометра или в режиме термостата. В первом из этих режимов DS1821 обеспечивает измерение температуры в диапазоне –55..+125°C с дискретностью 1°C. Самым привлекательным является то, что такой термометр уже откалиброван на заводе, гарантированная точность составляет ±1°C в диапазоне 0..+85°C и ±2°C во всем диапазоне рабочих температур. Типичная кривая ошибки измерения температуры приведена на рисунке.

Рис. 1. Типичная кривая ошибки термометра DS1821.

Считывание значений производится с помощью однопроводного интерфейса (1-WireTM) фирмы DALLAS, поэтому данный режим еще называют однопроводным. Температура считывается как 8-битное число в дополнительном коде. Например, +125°C соответствует код 7Dh, +25°C – 19h, 0°C – 00h, -1°C – FFh, -25°C – E7h, -55°C – C9h, аналогично для других значений температуры. С помощью специальных команд DS1821 может быть переведен в режим термостата, когда вывод данных становится управляющим выходом. При работе в режиме термостата измерения температуры идут постоянно, каждое измеренное значение сравнивается с порогами, сохраненными в энергонезависимой памяти. Эти пороги задают требуемый гистерезис характеристики регулирования:

Рис. 2. Гистерезис характеристики регулирования термостата.

Полярность выходного сигнала программируется с помощью бита POL регистра статуса. Когда температура превышает порог, сохраненный в регистре TH, выход переходит в активное состояние. Обратный переход произойдет тогда, когда температура станет ниже порога TL. Выход термостата представляет собой выход с открытым стоком, который допускает втекающий ток до 4 мА. Для проведения программирования DS1821 должен находится в однопроводном режиме. В таком режиме термометры поставляются производителем. У DS1821 всего доступно 4 регистра: TH, TL, регистр температуры и регистр статуса. Первых два регистра служат для сохранения порогов термостата. Регистр температуры может быть считан для получения результата последнего измерения температуры. Регистр статуса задает режим работы DS1821 и позволяет определить его состояние. Регистры TH, TL и регистр статуса являются энергонезависимыми, т.е. они хранят свои значения даже при отключенном питании. Формат представления температуры для регистров TH, TL и регистра температуры одинаков. Регистр статуса имеет следующий формат: 

D7

D6

D5

D4 

D3

D2

 D1

 D0

DONE

1

NVB

 THF

TLF

T/R

POL

1SHOT

При следующем после программирования включении питания режим работы DS1821 будет определяться битом T/R регистра статуса. Если он установлен, DS1821 будет работать в режиме термостата. В этом режиме DS1821 не может вести обмен по однопроводной шине. Поэтому никакими командами, передаваемыми по шине, вывести DS1821 из режима термостата невозможно. Для осуществления этой операции предусмотрена специальная процедура, с помощью которой можно временно перевести DS1821 в однопроводной режим, что позволяет, например, изменить пороги термостата. Если же при этом сбросить бит T/R, то при следующем включении питания DS1821 уже больше не будет находиться в режиме термостата. Для перевода DS1821 в однопроводной режим из режима термостата необходимо на вывод питания подать 0В в то время, когда вывод данных находится в состоянии высокого логического уровня. Затем на вывод данных нужно подать 16 импульсов. После этого можно снова подать питание, и DS1821 окажется в однопроводном режиме. Если указанную процедуру повторить, то DS1821 снова перейдет в режим термостата.

Рис. 3. Процедура выхода из режима термостата.

Если выводы питания и данных находятся в состоянии низкого уровня более чем примерно 10 сек, то термометр является обесточенным. При следующем включении питания его состояние будет определяться битом T/R. Рассматривать здесь протокол однопроводной шины не имеет смысла, так как это уже сделано во многих статьях (например, «Имитатор электронных ключей IButton», Схемотехника, №1 2000 г.). Следует лишь отметить, что в отличие от большинства других однопроводных устройств, DS1821 не имеет адресации, что не позволяет подключать несколько таких устройств на одну шину или использовать совместно с ним другие однопроводные устройства. В таблице ниже приведены команды, которые может воспринимать DS1821. 

Описание команды

Код команды

КОМАНДЫ ПРЕОБРАЗОВАНИЯ ТЕМПЕРАТУРЫ

Запуск преобразования

EEh

Остановка преобразования

22h

Чтение температуры

AAh

КОМАНДЫ ТЕРМОСТАТА

Запись TH

01h

Запись TL

02h

Чтение TH

A1h

Чтение TL

A2h

Запись статуса

0Ch

Чтение статуса

ACh

Команды чтения TL и TH предназначены для того, чтобы иметь возможность проверить содержимое этих регистров перед тем, как DS1821 будет переведен в режим термостата. Подробное описание DS1821 можно найти по ссылке:  http://pdfserv.maxim-ic.com/arpdf/DS1821.pdf . Нужно отметить, что DS1821 имеет недокументированные команды A0h и 41h, которые позволяют уменьшить дискретность отсчетов температуры. Пример использования этих команд можно найти в Application Note 105 от фирмы Dallas ( http://pdfserv.maxim-ic.com/arpdf/AppNotes/app105.pdf ). Для программирования порогов DS1821, а также для перевода его в режим термостата и обратно служит специальная программа ds1821.exe, работающая под Windows, которая описана ниже. Микросхема DS1821 подключается к COM-порту компьютера через адаптер, схема которого приведена на рисунке, где показано окно помощи программы.

Рис. 4. Принципиальная схема адаптера.

Схема адаптера не так проста, по сравнению, например, с адаптером DS9097 фирмы Dallas. Это связано в первую очередь с тем, что хотелось иметь общую «землю» компьютера и однопроводной шины. Адаптер обеспечивает на входе RXD порта компьютера лишь однополярные уровни, что, строго говоря, не соответствует спецификации RS-232C. Однако большинство портов с такими уровнями работают нормально. Вместо указанных на схеме МОП-транзисторов можно применить близкие по параметрам транзисторы других типов. Например, в качестве n-канальных транзисторов подойдут КП501, КП505. В принципе, можно применить и биполярные транзисторы, добавив в базы ограничительные резисторы. Конструктивно адаптер выполнен в корпусе разъема D-SUB-25.

Рис. 5. Внешний вид адаптера.

Разъем паяется прямо на плату, которая входит между рядами контактов. Другая сторона платы выполнена удлиненной и выходит за пределы корпуса разъема. В эту часть платы впаян 3-х контактный винтовой терминал.

Рис. 6. Рисунок печатной платы адаптера.

Вид главного окна программы показан на рисунке ниже.

Рис. 7. Вид главного окна программы ds1821.exe.

Окно имеет следующие элементы управления:

Кроме того, окно вверху имеет меню, состоящее из трех пунктов: Port, Utilites и Help. Меню Port в развернутом виде показано на рисунке.

Рис. 8. Меню Port в развернутом виде.

Это меню позволяет открыть один из четырех портов COM1 – COM4. Кроме того, меню позволяет закрыть порт и выйти из программы. В списке активны только доступные порты (т.е. те, которые физически присутствуют и не заняты в данный момент другими приложениями). Когда порт открывается, проверяется наличие на этом порту адаптера (достаточно соединения TXD – RXD). Если адаптер не обнаружен, выводится соответствующее сообщение:

Рис. 9. Сообщение об ошибке при отсутствии адаптера.

Меню Utilites в основном дублирует кнопки основного окна. Имеется только один новый пункт: Recall NVM. Он позволяет считать из DS1821 значения TH и TL, которые в нем сохранены. Для этого DS1821 должен находиться в однопроводном режиме.

Рис. 10. Меню Utilites в развернутом виде.

Для программирования DS1821 в режим термостата необходимо в полях TH и TL набрать значения порогов, а затем нажать кнопку Thermostat. При этом значения порогов будут записаны, а в регистре статуса будет установлен бит T/R. Поскольку питание не выключалось, DS1821 все еще будет находиться в однопроводном режиме. Это позволяет, например, проверить  записанные значения порогов с помощью команды Recall NVM. Если сейчас питание DS1821 выключить, то при следующем включении он будет находиться в режиме термостата. Для изменения порогов DS1821, который уже находится в режиме термостата, можно просто набрать в полях новые значения и нажать кнопку Thermostat. При этом DS1821 будет временно переведен в однопроводной режим, и будут записаны новые значения порогов. Если сейчас питание DS1821 выключить, то при следующем включении он будет находиться в режиме термостата и работать с новыми порогами. Программа не содержит в явном виде управления битом полярности выхода POL. Управление производится значениями TH и TL. Дело в том, что значение TL, большее, чем TH, практического смысла не имеет. Поэтому в регистр TH всегда записывается большее значение, а в TL – меньшее. Но если ввести TL большее, чем TH, это вызовет изменение полярности выхода (активным уровнем станет 0). Поэтому поле TH фактически означает температуру, при которой выход переключается в состояние высокого уровня, а TL – низкого. Меню Help содержит рисунок принципиальной схемы адаптера и сведения о разработчике программы. Для хранения установок программа использует ini-файл, который создается в том же директории, где расположен exe-файл. В ini-файле содержится информация о положении окна программы и номер используемого COM-порта:
 

[General]
Left=427
Top=295
COM port=2


Если в существующем ini-файле указан номер COM-порта, который на момент запуска программы занят или отсутствует, выводится специальное сообщение:

Рис. 11. Сообщение об ошибке при недоступности порта.

Для работы с COM-портом программа пользуется функциями API через специальную «оберточную» динамическую библиотеку comapi32.dll. Обмен с однопроводными устройствами идет довольно медленно из-за удивительно долгого (порядка 200 миллисекунд!) процесса переключения скоростей COM-порта (вызов функции SetCommState с измененным значением поля BaudRate структуры DCB). Это весьма неприятное свойство API. Кроме термометра/термостата DS1821 существуют микросхемы термометров, самой популярной из которых сейчас является DS18S20, пришедшая на смену DS1820. Она имеет меньшую дискретность представления температуры (0.5°C), кроме того, обладает еще целым рядом дополнительных возможностей. Подробное описание DS18S20 можно найти по ссылке:  http://pdfserv.maxim-ic.com/arpdf/DS18S20.pdf . Однако работать автономно в режиме термостата она не может. Описанный адаптер позволяет подключить к COM-порту и названные термометры. Специальная программа ds1820.exe позволяет считать и отобразить показания термометра, а также считать серийный номер и запрограммировать два пользовательских байта. Вид главного окна программы показан на рисунке.

Рис. 12. Вид главного окна программы ds1820.exe.

Окно имеет следующие элементы управления:

Окно вверху имеет меню, состоящее из трех пунктов: Port, Utilites и Help. Меню Port и Help, а также структура ini-файла идентичны описанным выше для программы ds1821.exe. Меню Utilites содержит три пункта:

Рис. 13. Меню Utilites программы ds1820.exe в развернутом виде.

Описанный адаптер также подходит для считывания электронных ключей IButton и для подключения других однопроводных устройств. Если программировать DS1821 не требуется, ключ на p-канальном транзисторе, который управляет питанием, можно исключить. Именно такая схема приведена в окне помощи программы ds1820.exe.

Download:

Автор проекта: Ридико Леонид Иванович
e-mail: wubblick@yahoo.com

Назад