Программатор термометра/термостата 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 Бит 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 можно найти по ссылке:  DS1821.pdf .

Нужно отметить, что DS1821 имеет недокументированные команды A0h и 41h, которые позволяют уменьшить дискретность отсчетов температуры. Пример использования этих команд можно найти в Application Note 105 от фирмы Dallas ( 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=427Top=295COM port=2


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

 

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

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

Кроме термометра/термостата DS1821 существуют микросхемы термометров, самой популярной из которых сейчас является DS18S20, пришедшая на смену DS1820. Она имеет меньшую дискретность представления температуры (0.5°C), кроме того, обладает еще целым рядом дополнительных возможностей. Подробное описание DS18S20 можно найти по ссылке:  DS18S20.pdf . Однако работать автономно в режиме термостата она не может. Описанный адаптер позволяет подключить к COM-порту и названные термометры. Специальная программа ds1820.exe позволяет считать и отобразить показания термометра, а также считать серийный номер и запрограммировать два пользовательских байта.

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

 

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

Окно имеет следующие элементы управления: Поле Device ID, куда выводится код семейства однопроводного устройства. Для DS1820 и DS18S20 он равен 10h. Поле Device Name, где приводится расшифровка типа устройства. Поле Serial number, куда выводится серийный номер, записанный в ПЗУ. Поле CRC, где отображается результат проверки контрольной суммы (OK или FAIL). Поле TH / User byte 1, куда можно ввести значение в шестнадцатеричной форме, которое будет записано в регистр TH. Поле TL / User byte 2, куда можно ввести значение в шестнадцатеричной форме, которое будет записано в регистр TL. Кнопка Start запускает процесс измерения температуры. Преобразования выполняются периодически, а измеренная величина выводится в поле температуры. Дискретность представления составляет 0.1°C, что достигается дополнительными вычислениями. Кнопка Exit позволяет выйти из программы. Окно вверху имеет меню, состоящее из трех пунктов: Port, Utilites и Help.

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

Меню Utilites содержит три пункта: Read ROM – считывание содержимого ПЗУ (код семейства, серийный номер), а также считывание TH и TL. Start Conv. – дублирует кнопку Start основного окна. Write User Bytes – записывает значения TH и TL, которые введены в соответствующих полях.  

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

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

Download:  DS1821.zip (204 Kb) - архив с программой ds1821.exe и динамической библиотекой comapi32.dll.  Source21.zip (34 Kb) - архив с исходным текстом программы ds1821.exe на Delphi 5.  DS1820.zip (235 Kb) - архив с программой ds1820.exe и динамической библиотекой comapi32.dll.  Source20.zip (32 Kb) - архив с исходным текстом программы ds1820.exe на Delphi 5.

Автор проекта:
Ридико Леонид Иванович
e-mail: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript



[






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.