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

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

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

Temperature error

Рис. 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 может быть переведен в режим термостата, когда вывод данных становится управляющим выходом. При работе в режиме термостата измерения температуры идут друг за другом, каждое измеренное значение сравнивается с порогами, сохраненными в энергонезависимой памяти. Эти пороги задают требуемый гистерезис характеристики регулирования:

Thermostat histeresis

Рис. 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
  • Бит 1SHOT – режим одиночного измерения. Если этот бит равен 1, то DS1821 производит только одно преобразование при приеме команды «Запуск преобразования». Если он равен 0, то DS1821 после приема команды «Запуск преобразования» непрерывно производит преобразования до получения команды «Остановка преобразования». Тогда текущее преобразование завершается и цикл останавливается. В режиме термостата независимо от состояния этого бита преобразования производятся непрерывно. Бит имеет энергонезависимое хранение.
  • Бит POL – полярность выходного сигнала термостата. 1 – активный высокий уровень, 0 – активный низкий уровень. Бит имеет энергонезависимое хранение.
  • Бит T/R – режим при включении питания. 1 – режим термостата, 0 – однопроводной режим. Бит имеет энергонезависимое хранение.
  • Бит NVB – занятое состояние энергонезависимой памяти. 1 – идет запись, 0 – запись завершена. Процесс записи в энергонезависимую память занимает до 10 мс. Запись происходит при передаче в DS1821 любого параметра, который имеет энергонезависимое хранение.
  • Бит TLF – флаг понижения температуры. Устанавливается в 1, если температура становится ниже порога, сохраненного в TL. Это состояние бита сохраняется до тех пор, пока он не будет очищен записью в него 0. Бит имеет энергонезависимое хранение.
  • Бит THF – флаг превышения температуры. Устанавливается в 1, если температура становится выше порога, сохраненного в TH. Это состояние бита сохраняется до тех пор, пока он не будет очищен записью в него 0. Бит имеет энергонезависимое хранение.
  • Бит DONE – конец преобразования. 1 – преобразование закончено, 0 – идет преобразование.

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

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

Toggle mode

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

Если выводы питания и данных находятся в состоянии низкого уровня более чем примерно 10 сек, то термометр является обесточенным. При следующем включении питания его состояние будет определяться битом T/R.

Рассматривать здесь протокол однопроводной шины не имеет смысла, так как он уже рассмотрен во многих статьях (например, «Компьютерный термометр» на этом сайте). Следует лишь отметить, что в отличие от большинства других однопроводных устройств, 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, а также для перевода его в режим термостата и обратно служит специальная программа. Она работает под Win95/98/ME/NT/2K/XP. Микросхема DS1821 подключается к COM-порту компьютера через адаптер, схема которого приведена в окне помощи программы.

Adapter schematic

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

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

Adapter

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

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

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

ds1821.exe

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

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

  • Два поля для ввода значения температуры перехода выхода от НИЗКОГО логического уровня к ВЫСОКОМУ (Output LO to HI point): первое из этих полей позволяет ввести температурный порог в градусах, второе – в шестнадцатеричной форме.
  • Два аналогичных поля для ввода значения температуры перехода выхода от ВЫСОКОГО логического уровня к НИЗКОМУ (Output HI to LO point).
  • Кнопка 1-Wire позволяет вернуть DS1821 из режима термостата в однопроводной режим.
  • Кнопка Thermostat позволяет записать введенные пороги и перевести DS1821 в режим термостата.
  • Кнопка Recall NVM позволяет прочитать записанные значения из энергонезависимой памяти.
  • Кнопка Start запускает процесс измерения температуры. Для этого DS1821 должен находиться в однопроводном режиме. Преобразования выполняются периодически, измеренная величина выводится в поле температуры.
  • Кнопка Exit позволяет выйти из программы.

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

Меню Port в развернутом виде показано на рисунке ниже.

Menu Port

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

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

Error No Device

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

Меню Utilites дублирует кнопки основного окна.

Menu Utilites

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

Для программирования DS1821 в режим термостата необходимо набрать значения порогов, а затем нажать кнопку Thermostat. При этом значения порогов будут записаны, а в регистре статуса будет установлен бит T/R. Поскольку питание не выключалось, DS1821 все еще будет находиться в однопроводном режиме. Это позволяет, например, проверить записанные значения порогов с помощью команды Recall NVM. Если сейчас питание DS1821 выключить, то при следующем включении он будет находиться в режиме термостата.

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

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

Для хранения установок программа использует ini-файл, который создается в том же директории, где расположен exe-файл. В ini-файле содержится информация о положении окна программы и номер используемого COM-порта:

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

Для работы с COM-портом программа пользуется функциями API через специальную «оберточную» динамическую библиотеку comapi32.dll. Обмен с однопроводными устройствами идет довольно медленно из-за удивительно долгого (порядка 200 миллисекунд!) процесса переключения скоростей COM-порта (вызов функции SetCommState с измененным значением поля BaudRate структуры DCB). Это весьма неприятное свойство Windows API.

Downloads:
ds1821.zip (201 kB) - программа для работы с термометром/термостатом DS1821.
ds1821_source.zip (34 kB) - исходный текст программы.
comapi32_source.zip (13 kB) - исходный текст библиотеки comapi32.dll.
Ридико Леонид Иванович www.leoniv.diod.club e-mail: wubblick@yahoo.com