Программатор термометра/термостата 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 и регистра температуры одинаков. Регистр статуса имеет следующий формат:
Для перевода DS1821 в однопроводной режим из режима термостата необходимо на вывод питания подать 0 В в то время, когда вывод данных находится в состоянии высокого логического уровня. Затем на вывод данных нужно подать 16 импульсов. После этого можно снова подать питание, и DS1821 окажется в однопроводном режиме. Если указанную процедуру повторить, то DS1821 снова перейдет в режим термостата. Рис. 3. Процедура выхода из режима термостата. Если выводы питания и данных находятся в состоянии низкого уровня более чем примерно 10 сек, то термометр является обесточенным. При следующем включении питания его состояние будет определяться битом T/R. Рассматривать здесь протокол однопроводной шины не имеет смысла, так как он уже рассмотрен во многих статьях (например, «Компьютерный термометр» на этом сайте). Следует лишь отметить, что в отличие от большинства других однопроводных устройств, DS1821 не имеет адресации, что не позволяет подключать несколько таких устройств на одну шину или использовать совместно с ним другие однопроводные устройства. В таблице ниже приведены команды, которые может воспринимать DS1821.
Команды чтения 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-порту компьютера через адаптер, схема которого приведена в окне помощи программы. Рис. 4. Принципиальная схема адаптера. Схема адаптера не так проста, по сравнению, например, с адаптером DS9097 фирмы "Dallas". Это связано в первую очередь с тем, что хотелось иметь общую «землю» компьютера и однопроводной шины. Адаптер обеспечивает на входе RXD порта компьютера лишь однополярные уровни, что, строго говоря, не соответствует спецификации RS-232. Однако большинство портов с такими уровнями работают нормально. Вместо указанных на схеме МОП-транзисторов можно применить близкие по параметрам транзисторы других типов. Например, в качестве n-канальных транзисторов подойдут КП501, КП505, а в качестве p-канальных - КП507. В принципе, можно применить и биполярные транзисторы, добавив в базы ограничительные резисторы сопротивлением около 10 кОм. Конструктивно адаптер можно выполнить в корпусе разъема D-SUB-25 или D-SUB-9. Рис. 5. Внешний вид адаптера. Разъем паяется прямо на плату, которая входит между рядами контактов. Другая сторона платы выполнена удлиненной и выходит за пределы корпуса разъема. В эту часть платы впаян 3-х контактный винтовой терминал. Вид главного окна программы показан на рисунке ниже. Рис. 7. Вид главного окна программы ds1821.exe. Окно имеет следующие элементы управления:
Меню Port в развернутом виде показано на рисунке ниже. Рис. 8. Меню Port в развернутом виде. Это меню позволяет открыть один из четырех портов COM1 – COM4. Кроме того, меню позволяет закрыть порт и выйти из программы. В списке активны только доступные порты (т.е. те, которые физически присутствуют и не заняты в данный момент другими приложениями). Когда порт открывается, проверяется наличие на этом порту адаптера с установленным термометром DS1821. Если термометр не обнаружен, выводится сообщение об ошибке. Такое же сообщение будет выведено и том случае, если подключен термометр, запрограммированный в режим термостата, ведь в таком режиме он не может осуществлять обмен по однопроводной шине. В этом случае DS1821 нужно перевести в однопроводной режим с помощью кнопки 1-Wire. Рис. 9. Сообщение об ошибке при отсутствии адаптера. Меню 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. |
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
Download: | ||||||||||||||||||||||||||||||||||||||||
ds1821.zip (201 Kb) - программа для работы с термометром/термостатом DS1821. | ||||||||||||||||||||||||||||||||||||||||
ds1821_source.zip (34 Kb) - исходный текст программы. | ||||||||||||||||||||||||||||||||||||||||
comapi32_source.zip (13 Kb) - исходный текст библиотеки comapi32.dll. | ||||||||||||||||||||||||||||||||||||||||
Ридико Леонид Иванович
e-mail: |