Микросхема
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 |
-
Бит 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 снова перейдет в
режим термостата.
Рис. 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.
Окно имеет следующие элементы
управления:
-
Два поля для ввода значения TH: первое из этих
полей позволяет ввести температурный порог в градусах, второе - в
шестнадцатеричной форме.
-
Два аналогичных поля для ввода значения TL.
-
Кнопка 1-Wire позволяет вернуть DS1821 из
режима термостата в однопроводной режим.
-
Кнопка Thermostat позволяет записать введенные
пороги и перевести DS1821 в режим термостата.
-
Кнопка Start запускает процесс измерения
температуры. Для этого DS1821 должен находиться в однопроводном режиме.
Преобразования выполняются периодически, а измеренная величина выводится
в поле температуры.
-
Кнопка Exit позволяет выйти из программы.
Кроме того, окно вверху имеет
меню, состоящее из трех пунктов: 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.
|