Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
Карта сайта | Пишите нам | В избранное | eng     

Внимание! У нас изменились номера телефонов. Звоните:
(495) 638-88-00, (499) 940-95-75, факс (499) 735-04-91;
+7(909) 638-88-00 и +7(903) 530-10-01 (Билайн).
       о фирме        электроника     обратная связь

Микроэлектронные проекты. Квашин Александр. Цифровой термометр (продолжение).

Введение

Архитектура MSC51 - это одна из самых распространенных архитектур. Микроконтроллеры, построенные на данном ядре, не имеют такое впечатляющее быстродействие как, например, экземпляры из относительно молодого семейства AVR, но в силу простоты написания программ для них и их распространенности, они уже не первый десяток лет являются стандартом микроконтроллера в своем классе. Так же, в статье подробно рассмотрены датчики DS18x2x, а так же приведена краткая сравнительная характеристика с датчиками от Analog Devices.
И по-прежнему, основная особенность этого термометра - это способность извлекать значение температуры с максимальным разрешением, которое только способен дать тот или иной датчик.

О датчиках температуры

При тщательном изучении датчиков, которые выпускает или когда либо выпускала фирма Dallas Semiconductor Corp был отмечен ряд различий датчиков с одинаковыми обозначениями семейств. Датчики DS18S20 выпускаемые в корпусах TO92, имеют то же семейство что и выпускавшиеся когда-то датчики DS1820 (в корпусах PR35). Хоть и относятся они к одному типу - о чем свидетельствует идентификатор семейства (0х10), но, по всей видимости, эти датчики сделаны по разным технологиям - это видно из представленных в документации графиков "типичной ошибки" на тот и другой. Это говорит о том, что внутри у них разные АЦП и, возможно, сами термочувствительные элементы разные. Кроме того, интерфейсы получения температуры с высоким разрешением - скорее всего, так же дадут разный результат. Испытано, что в корпусе TO92 градация температуры происходит с минимальным шагом в 1/16 градуса (так же как и для DS18B20). А в корпусе PR35, следует предположить, что разрешение будет как минимум 0.01 - как и в датчике DS1821. Еще раз прошу обратить внимание на то, что разрешение и точность - понятия разные.
Компания Analog Devices выпускает цифровые температурные датчики, которые конкурируют с далласовским семейством DS18x2x. Это приборы TMP03 и TMP04. Разрядность, с которой они позволяют извлекать температуру выше, чем у DS18x20, и приблизительно такая же как у DS1821. Основное отличие - это интерфейс, посредством которого происходит передача температуры из датчика в контроллер. Интерфейс более простой. Температура зашифрована в широтно-импульсной модуляции. И для получения значения температуры необходимо регистрировать параметры этой модуляции, а именно - время нахождения в 1 и время нахождения в 0, а потом - из специального соотношения вычисляется температура. Как дополнительную возможность - можно было бы реализовать алгоритм и для этого датчика, но в силу ограниченности памяти программ взятого контроллера, и, все же, малую распространенность таких датчиков, было решено не тратить на него усилия. Если же данная потребность для кого-нибудь возникнет - прошу высказаться по данному вопросу. Точность, которую дают эти датчики так же примерно совпадает с точностью датчиков от Dallas, а вот диапазон температур смещен до 150 градусов - что часто может являться хорошим аргументом в сторону выбора этого датчика.

О получении десятых и сотых долей градуса

Получить значения в градусах - это достаточно просто для датчиков DS18x2x. А вот извлечь десятые доли и, тем более, сотые - не так просто. И для разных датчиков - разный принцип их получения. Начнем с самого простого - DS18B20: доли градуса отдаются в этом датчике в виде 1/16 доли. Для отображения на индикаторе такое значение не годится, поэтому его необходимо преобразовать до десятых. Сделать это можно по следующей формуле:
Формула 1 (1)

где tцелое - целочисленное значение температуры преобразованное к типу "с плавающей точкой"; t1/16 - отделенное дробное значение температуры в типе "с плавающей точкой". В результате - получаем значение температуры с десятыми долями.
Для датчиков DS18S20 и DS1820 процедура более сложная. По умолчанию данные датчики отдают разрешение в полградуса. И чтобы получить более высокое разрешение - приходится оперировать внутренними регистрами АЦП датчика. Эти значение можно считать и по формуле получить значение температуры:
Формула 2 (2)

где COUNT_PER_C и COUNT_REMAIN - внутренние регистры АЦП.
Для датчиков DS1821 используется похожая формула что и для DS1820, но принцип считывания внутренних регистров совершенно иной и градация температурного регистра - единицы градуса, поэтому - в формуле есть соответствующие отличия
Формула 3 (3)

Градация температуры для данного датчика - сотые доли градуса.

Цифровой термометр

Представляемый вниманию цифровой термометр разработан на базе предыдущего проекта с одноименным названием. Будет он интересен и тем, кто уже повторил его первый вариант. Основные отличия заключаются в том, что управляющая программа сильно модифицирована по сравнению с первой версией. А схемотехнических изменений - минимум. Поэтому модернизировать первоначальную версию можно простой сменой "прошивки".
Теперь поддерживаются датчики DS1820, DS18S20, DS18B20, DS1821, DS1822. При использовании DS1820 и DS1821 точность измерения составляет "до сотых долей" градуса при температурах от -9.99 до +99.99 и "до десятых" при температурах вне данного диапазона. При использовании других датчиков разрешающая способность ограничивается десятыми. Естественно, сотые доли, и, даже десятые, без калибровки не будут являться достоверными.
Одна из главных новинок - это поддержка большого количества датчиков на "одном проводе". Эта возможность заложена в самих датчиках. Все они (кроме DS1821) содержат уникальный номер, по которому к каждому из них можно обратиться и идентифицировать. То есть это некий "сетевой адрес", с помощью которого можно индивидуально работать с каждым из датчиков, включенных параллельно.

Предлагается несколько вариантов программы:
  1. Первый вариант сделан таким образом, что при включении производится поиск датчиков, логическая нумерация и запоминание их серийных номеров. Само собой, невозможно предсказать какой из датчиков будет иметь какой номер, это зависит только от того - что содержится в поле серийного номера. Максимальное количество датчиков, которое может быть подключено - 6. Измерение температуры производится по 5 секунд на каждый датчик. Опционально (Исполняемый код представлен в нескольких вариантах и некоторыми нюансами различается один от другого) индикация выбранного канала производится выводом на долю секунды номера, а после выдается сама температура. Если подключен только один датчик - то индикации номера канала не происходит (за ненадобностью). На выводы P3.1 и P3.2 выводятся сигналы, соответствующие выбранному датчику (см. по таблице) и это полезно использовать при количестве датчиков до 3-4. И для индикации канала можно использовать, например, двухцветный светодиод.
  2. №датчика P3.1(лог. уровень) P3.2(лог. уровень)
    1 0 1
    2 1 0
    3 0 0
    4 1 1
  3. Второй вариант программного кода работает аналогично первому варианту - но с выводом температуры в терминал - через вывод P3.1. А для того чтобы подсоединить к компьютеру потребуется переходник-преобразователь уровней (см. схему) - его можно встроить в штекер DB9. Ограничение по количеству датчиков - такое же - 6. Параметры связи 4800 бит/с, 8 бит, 2 стоп-бита. Для того чтобы не происходила путаница где какой датчик, реализована возможность контроля датчика по его уникальному серийному номеру, который передается вслед за значением температуры в виде 8 байтного числа, передаваемого текстом в шестнадцатеричной форме (Для этого следует подать логический 0 на вывод P3.2).

    переходник-преобразователь уровней

  4. Третья программа функционирует так же как и вторая, передает температуру в терминал, но реализована таким образом, что допускается "на ходу" подсоединять и отсоединять датчики, при этом автоматически происходит отслеживание их количества на шине. Кроме того, реализован принцип нехранения адресов в памяти процессора, это позволило подключить до 17(Это теоретическое заявление, практически испробовано 6 (из-за недостаточного их количества для тестирования)) датчиков . Эта программа работает несколько медленнее, чем предыдущая, так как необходимо тратить больше времени на поиск адреса требуемого датчика при каждом обращении к нему, зато позволяет подключить большее число датчиков.
Второй и третий вариант прошивки будет удобен для создания системы многоточечного измерения температуры с регистрацией значений либо стандартной терминальной программой (HyperTerminal) либо с помощью "собственного" приложения.
Подключать параллельно можно приборы DS1820, DS18S20, DS18B20, DS1822 в любой комбинации, но чтобы суммарное количество их не превышало 6 (для первого и второго вариантов) или до 17 (для третьего варианта). DS1821 допускается подключать только в одиночку для любых вариантов прошивок.

Описание схемы

Центральная часть устройства - микроконтроллер AT89C2051. Работает на частоте 12 МГц.

схема


Динамическая индикация: к порту P1 через токозадающие резисторы подключены катоды индикатора, а к порту P3 через транзисторные ключи (КТ3107 или подобные) - анодные переключатели. Динамическое обновление изображения индикатора осуществляется с частотой 100Гц на каждую цифру. Для того чтобы не терять яркость на "неактивные" (погашенные) позиции - производится индикация только на сегменты, которые активны - это существенно повышает яркость свечения - то есть, например, значение "-23.1" светится в два раза менее ярко, чем, скажем "4.3"
Датчик(и) подключен(ы) на линию P3.0. Длина провода допускается - до нескольких десятков метров. Испытания показали, что температура отдается без ошибок с длиной кабеля до 100 метров . Стабилизатор напряжения - сделан на КР142ЕН5А.
Устройство работает следующим образом: при включении питания происходит тест на наличие 1wire приборов на шине, при обнаружении таковых считываются так называемые laser-rom всех датчиков и при обнаружении нужных DS1820 или DS1822 - происходит регистрация их количества и далее - поочередный вывод на дисплей температуры каждого. Датчики инициализируются в 12-битный режим вывода значения температуры. Если таковые не обнаружены - то устройство переходит в режим работы с DS1821.

О реализации

Прибор питается от БП как от "Денди" или подобного (7-12В/150мА). В качестве резонатора применен миниатюрный керамический на 12МГц со встроенными конденсаторами. Все резисторы - SMD. У КР142ЕН5А спилена металлическая часть (для миниатюрности). Если питание осуществлять блоком с выходным напряжением 7-8 вольт, то можно вместо КР142ЕН5А применить малогабаритный стабилизатор 78L05. Разъем для датчика - 3.5мм jack, питания - миниатюрный круглый (марки не знаю). После сборки термометр работает сразу и без настройки.
Плата разведена под минимальные опции: не оформлен выход для последовательного порта и нет разводки под светодиоды на порт Р3.1, Р3.2 - так как это специфическая часть и сделать универсальную плату - значит потратить много места на плате на узлы, которые могут быть совершенно не нужны…
плата

Заключение

Устройство получилось очень простое для повторения. Термометр не обременен никакими дополнительными функциями. Вместо этого все усилия были направлены на "качество" самого термометра. Сотые и десятые доли, конечно, не очень полезны, да и точность их без калибровки под большим сомнением, но, без сомнения, придают оригинальность.

Основные технические характеристики:

Параметр Мин Тип Макс Единицы измерения
Диапазон измеряемых температур -55 - +125 Градусы цельсия
Напряжение питания 7 - 12 Прямое, В
Потребляемый ток - 150 - мА
Длина кабеля 0 3 100 м
Размеры платы - 82*34 - X(мм)*Y(мм)
Количество датчиков для 1го и 2го вариантов 1 - 6 штук
Количество датчиков для 3го варианта 1 - 17 штук

Управляющая программа

Для того чтобы Вы получили ту прошивку, которая вам больше всего подходит - введена следующая система обозначений: Termo_V_ABCDEFGH.hex - название файла с исполняемым кодом.
Описание опций:
  • V - вариант прошивки I, II или III
  • A - индикация номера канала
  • B - плавное гашение при переключении температуры
  • C - оптимизированная яркость индикации (увеличенная)
  • D - анимация при выводе номера канала
  • E - сотые доли с датчиком DS1820
О замене комплектующих: контроллер может быть AT89C2051 или AT89C4051 и в принципе - при электрическом и форматном согласовании - любой мокроконтроллер 51го семейства! Индикатор - любой с током на сегмент не более 20мА (при соответствующем изменении ПП и резисторов). Резонатор может быть и кварцевый на ту же частоту.

Проект скомпилирован в среде KEIL uVision 7ой версии.
Файлы проекта:
Схема.
PCB в формате PCAD2000.
Использованы материалы с сайтов www.atmel.com, www.dalsemi.com, www.analog.com

Автор проекта: Александр Квашин, E-mail: kan@galex.ru, kan35@yandex.ru .
 Разместите Ваш проект у нас на сайте и его смогут увидеть сотни посетителей в день. Ваши проекты присылайте вебмастеру.
Правила оформления проектов
  1. Необходимо наличие схемы, описания устройства и т.д. (для отдельных проектов - драйвера, программное обеспечение и их описание)
  2. Схемы и другие картинки должны быть в форматах .jpg или.gif. К ним обязательно должны идти подписи, поясняющие, что на данной схеме (картинке) изображено.
  3. Описание устройства - в форматах .doc, .txt или .html.
  4. Проект не должен нарушать чьих-либо авторских прав.
Ваши проекты присылайте вебмастеру
Приглашаем специалистов
В России кризис и увольнения персонала, а в Телесистемах, как обычно, не так как у всех: мы расширяем деятельность, набираем новых сотрудников и ищем новых партнеров.
Изделия для разработчиков
Программатор «PICPROG» «PICPROG» - универсальный промышленный программатор.
Копировщик PIC16x8x Копировщик PIC16x8x - тиражирование в автономном режиме.
Наши телефоны: (495) 638-88-00, (499) 940-95-75, факс (499) 735-04-91, мобильные: (903) 530-10-01 и (909) 638-88-00 (БиЛайн).
E-mail:

Copyright © ООО "Телесистемы", 1997 — 2024    Копируйте на здоровье! За ссылку на www.telesys.ru мы вам будем очень признательны.

Rambler's Top100