No Image

Датчик температуры с цифровым выходом

СОДЕРЖАНИЕ
117 просмотров
12 декабря 2019

STMicroelectronics

Роман Криночкин (г. Винница)

У компании STMicroelectronics есть все интегральные решения для промышленного измерения температуры – преобразователи, датчики температуры и цифровые термометры. Они находят применение в разнообразных производственных процессах, медицине и измерительных приборах. Предлагаемая статья поможет выбрать температурные датчики с аналоговым (LM135/235/335; STLM20) и цифровым (STLM75 и STTS75) выходами.

Во многие микроконтроллеры компании STMicroelectronics (ST) встроен термочувствительный элемент, подключенный к одному из каналов АЦП, позволяющий проводить измерение окружающей температуры без дополнительных компонентов. Однако такой подход, несмотря на простоту и дешевизну, имеет существенные недостатки: измерения производятся только в месте установки самого микроконтроллера, а температурная характеристика чувствительного элемента может существенно меняться от одного экземпляра устройства к другому (сдвиг может достигать десятков градусов). Поэтому производитель рекомендует использовать встроенный сенсор в основном для определения изменения температуры, а не для измерения ее абсолютного значения, т.к. последнее сопряжено со значительными ошибками и не может быть выполнено с большой точностью.

Основные параметры некоторых серий температурных датчиков от SТ приведены в таблице 1.

Таблица 1. Сравнительная характеристика температурных датчиков ST

Одним из основных типов аналоговых температурных датчиков, выпускаемых компанией STMicroelectronics, является серия LM135/235/335. Это полупроводниковые сенсоры, особенностью которых является наличие калибровочного вывода, что дает возможность корректировать разброс параметров приборов (рис. 1) [1].

Рис. 1. Способ подключения LM135/235/335 с калибровкой температурной погрешности

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

Таблица 2. Параметры сенсоров серии LM135/235/335

В дальнейшем сигнал температурного сенсора может быть оцифрован с помощью АЦП, встроенных во многие современные микроконтроллеры (МК). Такой подход удобен тем, что МК также берет на себя организацию дополнительной функциональности в зависимости от конкретной задачи, например, отображение температуры на дисплее, запись журнала с результатами периодических измерений, интерфейс с компьютером и т.п. Именно такое решение и предлагается компанией ST в Рекомендациях по применению AN2278 «Применение сенсоров температуры на примере ST LM135» [2]. Отметим, что теоретически максимально достижимое температурное разрешение по этой схеме составляет приблизительно 0.45 °С (используется 10-битный АЦП). Также существует серия LM134/234/334 — температурозависимые источники тока.

Другим базовым аналоговым сенсором является STLM20 с ультранизким потреблением, среди ключевых особенностей которого можно выделить:

  • Погрешность 0.5…1.5 °С (при 25 °С);
  • Диапазон измерений –55…130 °С;
  • Ультранизкое потребление – до 8 мкА.

Ключевым отличием данного датчика от LMx35 является нелинейность выходной характеристики, поэтому температурная погрешность возрастает ближе к краям диапазона измерения вплоть до ±2.5 °С при 130 °С. Также отсутствует возможность калибровать датчик. Однако и сфера применения данного прибора специфична – он пригодится главным образом в портативных устройствах благодаря ультранизкому потреблению, малым габаритам (всего 1×1.3 мм в корпусе UDFN-4L) и относительно неплохой изначальной точности 0.5…0.75 °С в наиболее часто востребованном диапазоне 0…30 °С. Кроме того для STLM20 необходимо использовать всего два вывода.

Изменение напряжения на выходе сенсора составляет 2.33…0.87 В в диапазоне –40…85 °С. При прямом использовании 8-битного АЦП, обычно встраиваемого в недорогие МК, разрешение по температуре составляет около 1.667 °С, что часто может быть недостаточным. В рекомендациях по применению AN2468 «Увеличение разрешения аналоговых температурных датчиков» [3] компания ST предлагает использовать схему, основанную на двух операционных усилителях (рис. 2).

Рис. 2. Способ увеличения разрешения аналоговых датчиков

Первый из них расширяет динамический диапазон выходного сигнала в 10 раз (фактически просто усиливает в 10 раз), а второй добавляет постоянное смещение (+17.67 В) для того, чтобы выходной сигнал мог оставаться в пределах 0…5 В. Таким образом возможно получить температурное разрешение порядка 0.1 В (с учетом усреднения). Платой за это, однако, является сужение диапазона измерений.

Перейдем к цифровым датчикам. Двумя основными приборами этого типа являются STLM75 и STTS75. Первый из них является «pin-to-pin» заменой для датчиков LM75. Это CMOS-сенсор со встроенным сигма-дельта АЦП (9 бит) и контроллером интерфейса I 2 C для связи с микроконтроллером. Основные области применения, рекомендуемые производителем — персональные компьютеры, системы управления температурой, индустриальные контроллеры. Максимальное разрешение 0.5 °С. Типичная погрешность ±2…3 °С во всем температурном диапазоне, время преобразования 150 мс. Напряжения питания сенсоров 2.7…5.5 В. Встроенный АЦП откалиброван таким способом, что результат на цифровом выходе прибора определяется в градусах Цельсия. Связь по протоколу I 2 C организована так, что по одной шине может быть подключено до восьми STLM75, при этом адрес устройства задается комбинацией потенциалов на трех адресных входах датчика.

Кроме того, интересной особенностью данного прибора является возможность работы в режиме термостата. В два внутренних регистра записываются температуры порогов срабатывания и отключения, при достижении которых один из выводов микросхемы (O.S. – Overlimit signal) переводится в активное или, соответственно, пассивное состояние (O.S. – вывод с открытым стоком). Кстати, для устранения случайных промахов достижение порогов определяется по результатам не одного, а заданного числа измерений (от 1 до 5).

Читайте также:  Бантик из органзы своими руками мастер класс

STTS75 имеет похожие характеристики и функционирование. Основными отличиями являются более высокое разрешение по температуре (за счет 12-битного оцифровывания может достигать 0.0625 °С); более низкое энергопотребление (при прочих равных – около 75 мкА); а также другое время преобразования (в зависимости от разрешения 85…680 мс). Типичная схема включения сенсоров приведена на рис. 3, функциональная схема на рис. 4 [4].

первичные преобразователи, микросхемы, готовые модули

Интегральные датчики температуры компании Microchip

Интегральные датчики температуры компании Microchip – недорогие микросхемы, совмещающие на одном кристалле первичный преобразователь температуры, АЦП с разрешением до 13 бит, схему обработки сигналов, калибровочную таблицу и интерфейсы I 2 C/SMBus.

Многие температурные датчики с прямым преобразованием сигнала в цифровую форму могут функционировать в качестве термостата. Пользователь может сам устанавливать контрольные точки с гистерезисом. Некоторые из этих термостатов могут быть запрограммированы для автономной работы.

Одно- и двухпроводные приборы могут быть использованы для многоточечного мониторинга температуры, то есть множество датчиков может быть подключено к одной и той же шине.

Датчики делятся на следующие типы:

Компания Microchip предлагает широкий спектр локальных интегральных датчиков температуры с цифровым или аналоговым выходным сигналом, а также температурные переключатели. Производятся датчики серий: AT30Tx, EMC1x, MCP9x, MIC и TC.

Датчики температуры такого типа имеют встроенный диод для локального измерения температуры. Основные области их применения — это персональные компьютеры и ноутбуки, промышленность и встраиваемые измерительные устройства.

Интегральные датчики MicroChip серий AT30Tx, EMC1x, MCP9x, MIC и TC позволяют измерять температуру в диапазоне -55..+125 °С с типовой точностью 0.2..1 °С и разрешением 9..12 бит. Локальные датчики температуры выпускаются в корпусах QFN, DFN, SOIC, SOP и WLCSP.

Некоторые датчики доступны со встроенным EEPROM. Например датчик AT30TSE004A имеет встроенное последовательное EEPROM, устроенное как 2 банка 256 х 8 бит (2 Kbit х 2) и обладающее реверсивной защитой от записи программ а также защитой от записи для каждого килобитного блока.

Для некоторых интегральных датчиков температуры, например AT30TSE758A, доступна отладочная плата ATIO1-XPRO.

  • Совместимость с заголовками расширений Xplained Pro
  • Автоопределение платы в Atmel Studio
  • SPI: Запись данных на microSD
  • PWM: контрольный светодиод и фильтрованный вход ADC
  • ADC: оптический датчик и фильтрованный в ADC PWM сигнал
  • UART: петлевой интерфейс через штыревой разъём
  • I 2 C: Датчик температуры со встроенным EEPROM
  • GPIO: доступен отдельный GPIO на 100-мм штыревом разъёме

ДАТЧИКИ ТЕМПЕРАТУРЫ С ЦИФРОВЫМ ВЫХОДОМ

Интегральные датчики температуры с цифровым интерфейсом – один из самых востребованных продуктов категории датчики температуры для приложений, в которых не требуется высокая точность измерения или широкий температурный диапазон. Датчики такого типа обладают низкой стоимостью и выпускаются в различных корпусах.

Датчики AT30Tx

Датчики температуры серии AT30Tx унаследованы компанией Microchip от компании Atmel, они различаются точностью измерения, температурным диапазоном, параметрами питания, цифровым разрешением, наличием встроенной EEPROM и типом корпуса.

Продолжаем серию материалов об особенностях применения различных датчиков и чувствительных элементов.

Герой сегодняшней статьи, на первый взгляд, не представляет собой ничего особенного — мало ли мы видели цифровых датчиков температуры. Однако у серии TSic есть два необычных свойства: действительно высокая точность (до ±0.07°C у старшей модели) и малоизвестный однопроводной интерфейс ZACwire.

Под катом подробно описываем номенклатуру стандартных датчиков TSic и кастомные решения, разбираемся в особенностях коммуникационного протокола, смотрим примеры программ для МК. Словом, делаем всё чтобы убедить уважаемого читателя в том что датчики TSic стоят своих денег.

TSic — это серия цифровых датчиков температуры, которые в прошлом выпускались под брендом ZMDI, а сейчас принадлежат швейцарской компании IST AG.

Чувствительным элементом датчика служит высокоточный источник опорного напряжения с выходом, пропорциональным температуре (bandgap reference with a PTAT (proportional-to-absolute-temperature). Как и другие интегральные датчики температуры, TSic также содержит АЦП, схему обработки сигнала, EEPROM с данными для калибровки и выходной интерфейс.

Между собой стандартные модели датчиков TSic различаются рабочим диапазоном температур, точностью, типом выходного сигнала и корпусом.

Рабочий диапазон температур и точность

Датчики TSic 20x и TSic 30x имеют рабочий диапазон температур от -50 до +150°C и три «зоны точности». На графике показана максимальная погрешность датчиков на различных диапазонах температуры.

Датчики TSic 50x предназначены для более узкого диапазона температур — от -10 до +60°C. На участке повышенной точности шириной 40 градусов датчики TSic 50x обеспечивают точность ±0.1°C, на остальном диапазоне — ±0.2°C.

Самый дорогой высокоточный датчик TSic — это модель TSic 716. На узком 20-градусном участке этот элемент обеспечивает ±0.07°C.

Отличием датчика TSic 716 также является более высокая разрядность (разрешение). Если в датчиках TSic 206, TSic 306 и TSic 506 встроен 11-битный АЦП, то TSic 716 оснащен 14-разрнядным преобразователем.
Таким образом, разрешение датчиков TSic 206 и TSic 306 составляет ,
разрешение TSic 506 составляет ,
разрешение TSic 716 составляет .

Читайте также:  Двери фабрики браво отзывы

Кастомная калибровка

Выше описаны стандартные исполнения датчиков TSic, однако диапазон повышенной точности любого из датчиков TSic может быть «сдвинут» при производстве элемента. Так, например, под заказ доступны датчики TSic 50x с повышенной точностью на участке от -10 до 30°C или от 13 до 53°C. Аналогично для других моделей TSic.

Корпус

Датчики серии TSic выпускаются в корпусах SOP-8 и TO92, распиновка доступна в документации.

Кроме того, существует возможность поставки датчиков TSic в нестандартных корпусах, с разного рода кабелями, коннекторами, контактными площадками и так далее. Тут всё обсуждается индивидуально, но сразу скажу, что для использования этой возможности совершенно не обязательно иметь проект на сотни датчиков в год.

Подключение датчика

Для подключения любой модели TSic понадобятся соединения по питанию и земле, а также одна сигнальная линия.

Рабочее напряжение датчика — от 3 до 5.5В. Часто датчик удобнее запитать от одного из GPIO управляющего контроллера. Во-первых, это позволяет свести к нулю энергопотребление датчика вне цикла измерений, а во-вторых, упрощается детектирование начала посылки, если используется датчик TSic с цифровым выходом.

В случае питания датчика от ножки контроллера производитель рекомендует позаботиться об исключении влияния шумов и добавить на линию питания RC-цепочку.

Выходной сигнал

Датчики TSic 20x, TSic 30x и TSic 50x могут иметь аналоговый, ратиометрический или цифровой выход. В первом случае напряжение на выходе изменяется от 0 до 1 В пропорционально температуре среды, во втором случае — от 10 до 90% от напряжения питания. Датчики с цифровым выходом используют протокол ZACWire, о котором мы подробно поговорим чуть ниже.

Во всех трёх случаях выходной сигнал пропорционален температуре, т.е. для расчета температуры используются простые формулы.

Для датчиков TSic с аналоговым выходом:

Для датчиков TSic с ратиометрическим выходом:

Для датчиков TSic с цифровым выходом:

где

  • — температура, °C
  • — выходное напряжение датчика, В
  • — напряжение питания, В
  • — выходной цифровой сигнал
  • — верхняя граница диапазона рабочих температур, °C
    = +150°C для TSic 20x и TSic 30x, = +60°C для TSic 50xF и TSic 716
  • — нижняя граница диапазона рабочих температур, °C
    = -50°C для TSic 20x и TSic 30x, = -10°C для TSic 50xF и TSic 716

Примеры сигналов на выходе датчиков TSic приведены в таблице.

Для датчиков TSic 20x / TSic 30x
Измеряемая температура, °C Аналоговый выход Ратиометрический выход Цифровой выход
-50 0.000В 10% V +
(0.5В при V + =5В)
0x000
-10 0.200В 26% V +
(1.3В при V + =5В)
0x199
0.250В 30% V +
(1.5В при V + =5В)
0x200
+25 0.375В 40% V +
(2.0В при V + =5В)
0x2FF
+60 0.550В 54% V +
(2.7В при V + =5В)
0x465
+125 0.875В 80% V +
(4.0В при V + =5В)
0x6FE
+150 1.000В 90% V +
(4.5В при V + =5В)
0x7FF
Для датчиков TSic 50xF / TSic 716
11-бит
(TSic 506F)
14-бит
(TSic 716)
-10 0.000В 10% V +
(0.5В при V + =5В)
0x000 0x0000
0.143В 21.4% V +
(1.07В при V + =5В)
0x124 0x0924
+25 0.500В 50% V +
(2.5В при V + =5В)
0x3FF 0x01FF
+60 1.000В 90% V +
(4.5В при V + =5В)
0x7FF 0x3FFF

Чаще всего, впрочем, выбирают датчики с цифровым выходом, это позволяет не задумываться о влиянии схем обработки аналогового сигнала на точность измерений. При этом цифровой датчик TSic использует столько же ножек МК, сколько и аналоговый датчик, плюс он немножко дешевле.

Очевидный минус датчика TSic с цифровым выходом — нестандартный интерфейс, для которого на ваш МК ещё нет готовой библиотеки. Очевидный плюс — этот интерфейс очень простой.

Протокол ZACWire

ZACWire — однопроводной протокол, использующий кодировку, напоминающую Манчестерскую.

Датчик с заранее определенной частотой передаёт данные о температуре — два восьмибитных пакета данных. Каждый из пакетов начинается стартовым битом и заканчивается битом чётности. В зависимости от модели датчика, в каждой посылке либо 11, либо 14 значащих разрядов, первым идет старший бит.

Пассивным состоянием лини данных является высокий уровень. Каждый бит посылки TSic начинается со спада сигнала и занимает 125 микросекунд. Состояние линии данных фиксируется на середине этого интервала — если по прошествии 62.5 мксек со спада сигнала на линии высокий уровень, то записываем логическую «1», если низкий, то логический «0». Коэффицент заполнения в первом случае равняется 75%, в втором — 25%.

Коммуникационный интерфейс ZACWire не использует отдельного тактового сигнала, поэтому отсчёт тактов производится на стороне микроконтроллера.

Стартовый бит также начинается со спада сигнала, но имеет коэффициент заполнения 50%. Стартовый бит может использоваться как для детектирования начала посылки, так и для измерения длительности такта, если она не известна заранее: временной период между спадом и фронтом стартового бита равен Tstrobe — времени, по истечении которого нужно проверять состояние линии при чтении очередного бита.

Читайте также:  До скольки можно шуметь в квартире 2018

С другой стороны, для стандартных датчиков TSic значение Tstrobeизвестно заранее
и равно 125 / 2 = 62.5 мксек, поэтому на практике стартовый бит просто детектируют и пропускают.

Биты чётности декодируются так же, как и биты данных. В отсутствии внешних помех и небольшой длине соединения (до 2 метров) контроль целостности, как правило, не требуется. Между окончанием первого пакета и вторым стартовым битом на линии установлен высокий уровень.

Чтобы внести окончательную ясность, рассмотрим осциллограмму пакета данных датчика TSic 306.

Посылка начинается со стартового бита, далее идут незначащие биты данных, которые всегда равны «0», далее идут старшие биты данных — «011», далее бит чётности, соответственно равный «0». Второй пакет начинается через один период (Tstrobe * 2) и содержит стартовый бит, восемь младших бит данных «00011000» и бит чётности, соответственно равный «0».

В результате получаем на выходе 01100011000bin = 792dec и по приведенной выше формуле вычисляем значение температуры.

Если говорить о частоте, с которой датчик TSic передаёт такие посылки с данными, то она устанавливается при производстве компонента и не может быть изменена по ходу использования датчика. Для моделей TSic 206, TSic 306, TSic 506 частота равляется 10 Гц, для TSic 716 — 1 Гц. Под заказ доступны датчики с нестандартной частотой измерений — 250, 10, 1 и 0.1 Гц.

Если задача не предполагает опроса датчика с максимально возможной частотой и на микроконтроллере есть свободная линия, то имеет смысл использовать эту линию для питания датчика. Таким образом, каждый раз когда требуется получить данные с датчика, можно подать питание на датчик и ожидать спада на линии данных — стартового бита первого пакета. Между подачей питания на TSic и передачей посылки пройдет менее 85 микросекунд, а после приёма двух пакетов данных питание датчика можно отключить.

Именно такой способ подключения датчика использовался вашей покорной слугой.

В порядке эксперимента я подключаю две стандартные модели TSic 306 TO92 и TSic 506 TO92 к отладочной плате EFM32ZG-STK3200. По нажатию на кнопку на датчик подаётся питание, принимается одна посылка с данными о температуре, данные обрабатываются, результат выводится на установленный на плату LCD дисплей, после чего датчик от питания отключается.

Отладочная плата EFM32ZG-STK3200 выпускается компанией Silicon Labs (SiLabs)
для работы с микроконтроллерами EFM32 Zero Gecko.

EFM32 Zero Gecko — младшая серия семейства EFM32. Эти микроконтроллеры построены на базе ядра ARM Cortex-M0+, имеют стандартный набор встроенный периферии и разные интересные модули для снижения энергопотребления контроллера. Мы уже публиковали на хабре подробную статью об особенностях этой платформы и средствах отладки для EFM32 Zero Gecko.

Сегодня мы вообще не будем касаться специфических программных и аппаратных компонентов EFM32, предназначенных для контроля и снижения энергопотребления. Вместо этого будем использовать самые базовые компоненты и режимы их работы, чтобы полученный алгоритм было проще перенести на богомерзкий STM портировать на другие микроконтроллерные платформы.

Итак, от МК нам понадобятся

  • Три GPIO: подключенный к кнопке PC9 и свободные PC0 и PC1 для линий питания и данных TSic
  • Таймер для тактирования линии данных TSic
  • SPI для работы со встроенным дисплеем. SPI я упоминаю просто для порядка, т.к. вся работа с выводом данных проводится с помощью SiLabs-овской библиотеки glib, содержимое которой мне не очень интересно

На отладочной плате, соответственно, мы используем

  • Микроконтроллер EFM32ZG222F32
  • USB-отладчик SEGGER J-Link USB
  • Механическую кнопку PB1
  • Разъем expansion header, на котором доступны нужные GPIO и земля
  • Дисплей 128×128 пикселей — исключительно симпатичный LCD

Итак, по прерыванию от кнопки подаём на датчик питание, принимаем посылку и отключаем питание. Если при приёме данных возникла ошибка — выдаём соответствующее сообщение, иначе вычисляем температуру в градусах Цельсия и показываем результат на LCD.

Здесь пора отметить, что рассмотренный в этой статье код — совершенно не оптимален. То есть совсем-совсем не оптимален. Ниже вы увидите, как фронты и спады сигнала детектируются с помощью while, как временные интервалы отсчитываются без использования прерываний и прочая, прочая.

Причина такого подхода — желание рассмотреть максимально простой и понятный пример, в котором не будет использоваться вообще никаких специфических для конкретного микроконтроллера функций.

Итак, функция приёма данных receiveTSicData() — это приём двух пакетов данных, вычленение из каждого из них бита чётности и проверка целостности для обоих пакетов.

Функция readTSicPacket(), возвращающая currentTSicPacket, может выглядеть следующим образом.

Настройки самого микроконтроллера и таймера слишком сильно зависят от используемой платформы, чтобы приводить их в тексте статьи про датчик.

Функции проверки целостности и вычисления температуры в градусах Цельсия также не представляют собой совершенно ничего примечательного.

Комментировать
117 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector