Довольно часто на практике возникает задача термостатирования какого-либо объекта. Раньше для решения этой задачи требовалась довольно громоздкая аналоговая схема, содержащая несколько десятков элементов. В настоящее время такая задача может быть решена значительно проще. Если требуемая точность поддержания температуры составляет единицы градусов, а рабочая температура не выходит из диапазона –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