Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Как обмануть родителей и не идти в школу? Есть простой рецепт. Берем градусник, нагреваем его при помощи фена или обогревателя до требуемой температуры 38 °C, имитируем хриплый голос и сопли, демонстрируем все обозначенное взрослым. Но получится ли провернуть такую операцию, если градусник цифровой? К счастью, да, я проверил это на медицинском термометре WT-03 BASE фирмы B.Well. Проверил теоретически, конечно, я же уже взрослый.
Ртутный градусник имеет интересное свойство запоминать максимальную температуру. В электронном термометре эту функцию заменяет программа. Есть некоторый начальный порог, что-то около 30 °C и если затем положить прибор в холодильник, то он покажет последнее максимальное значение. Нет необходимости удерживать требуемую для обмана температуру продолжительное время. Отлично.
В этой части продолжен обзор датчиков температуры, в фокусе внимания STLM75, DS18B20, AHT20 и BME280. Аналоговые датчики был рассмотрены в статье «Сравнение датчиков температуры. Часть 1, аналоговые», а измерения собраны в статье «Сравнение датчиков температуры. Часть 3, практика».
Датчик температуры и тепловой сторожевой таймер STLM75
Полезнейший бытовой прибор, электрический чайник, в большинстве случаев измеряет только одно пороговое значение – температуру кипения воды. И таких задач, когда нужно отключить нагревательный элемент, много. Тут на помощь приходит микросхема с функцией теплового сторожевого таймера, STLM75. Она может работать как термостат без использования цифрового интерфейса, пороговое значение после перезагрузки составляет 80°C. Сигнал выдается на выход nOS с открытым коллектором. Имеется возможность настроить прерывание от микросхемы, гистерезис и защиту от шума.
Микросхема достаточно просто настраивается, содержит всего четыре регистра для конфигурации и хранения данных. Поскольку адрес задается внешними выводами, имеется возможность объединить несколько ведомых на шине I2C.
Выводы по микросхеме STLM75:
Простой датчик температуры с интерфейсом I2C, выпускается в двух разных корпусах, легко конфигурируется;
Может применяться без контроллера как термостат, однако памяти в микросхеме нет, а значит настройки не сохраняются. Остается довольствоваться порогом в 80 °C по умолчанию.
Датчик температуры DS18B20
Аппаратная поддержка шины 1-Wire практически не встречается в микроконтроллерах, а датчик температуры DS18B20 с данным протоколом встречается повсеместно. Протокол разработан корпорацией Dallas Semiconductor (сейчас Maxim Integrated) и является зарегистрированной торговой маркой. Хотите аппаратный 1-wire – покупайте контроллеры MAX32620/MAX32621. К счастью, есть альтернативные сценарии, например GPIO + таймер или UART + резистор с диодом.
Узнать о том, как реализовать 1-Wire при помощи UART можно на сайте, поэтому приведу лишь краткие сведения. UART требуется сконфигурировать в полнодуплексном режиме, так как необходимо слышать свои передачи. Приём данных ведущим устройством организован как передача, в которую вмешивается ведомое устройство. Чтобы формируемые импульсы по временным характеристикам соответствовали требованиям 1-Wire, хорошо подходят скорости передачи: 9600 бит/с для формирования сигнала сброса и 115200 бит/с для передачи данных.
Используя разные скорости передачи и разные данные удается сымитировать слоты записи или чтения. Так, для формирования слота записи 0 следует передать байт 0x00 на скорости 115200 бит/с, а для формирования слота записи 1, передаём на скорости 115200 бит/с байт 0xFF. Для формирования слота чтения следует отправить байт 0xFF на скорости 115200 бит/с. То же самое мы делали для формирования слота записи 1. Но, в дополнение к этому, здесь необходимо проанализировать принятый байт, и если он не отличается от отправленного, значит получен слот чтения 1, иначе – слот чтения 0. Вероятно, более запутанно выглядит только уравнение Стейнхарта-Харта (см. раздел «Термистор MF52» части 1), в остальном датчик температуры DS18B20 великолепен.
Устройство имеет заявленную точность 0,5 °C, при этом разрешение настраивается программно, т.е. можно получить температуру с минимальным шагом в 0,0625 °C. Каждый датчик имеет уникальный серийный номер, а значит на одну линию можно повесить много устройств. Датчик может питаться как через отдельный провод, так и от линии связи. И даже имеется возможность настроить «тревожный» порог температуры, с сохранением настроек в память.
Точность показаний датчика меняется в рабочем диапазоне, наилучшая достигается в его середине. Метод повышения точности основан на методике, изложенной в «Application Note 208: Curve Fitting the Error of a Bandgap-Based Digital Temperature Sensor», дополнительную информацию можно найти на сайте.
Выводы по датчику температуры DS18B20:
Датчик удобен во многих отношениях: широкий рабочий диапазон, гибкая настройка, хорошая точность, возможность подключения нескольких датчиков на одну линию;
Интерфейс 1-Wire позволяет сэкономить ножки управляющего контроллера (если использовать GPIO), но требует некоторой сноровки при реализации;
Скорость измерения температуры зависит от настроенного разрешения, при 12-и битах может достигать 750 мс.
Датчик температуры и влажности AHT20
AHT20 – лидер среди испытуемых по заявленной точности измерений, ±0,3 °C в диапазон температур от 20 до 60 °C. Датчик отличается простотой команд управления, их всего три: инициализация, измерение, сброс. При запросе температуры и влажности возвращается байт статуса и контрольная сумма. Наличие CRC – большое преимущество многих цифровых датчиков, раз сумма сошлась, данные достоверны. Датчик AHT20 подключается к шине I2C.
Соотношения для расчета влажности и температуры для AHT20 также достаточно просты. К слову, это цифровой датчик, который сразу заработал, практически не пришлось разбираться с регистрами, адресами, таймингами. Жалко, что датчик засбоил при измерении отрицательных температур, свидетельства чего будут представлены в ходе экспериментов.
Датчик выпускается в корпусе размером 3х3 мм, ряд мер необходимо принять для его правильного размещения. Требования преимущественно относятся к измерениям влажности, которые необходимо производить при стабильной температуре. Отсюда разного рода ухищрения, как правильно разместить датчик на печатной плате.
Выводы по датчику AHT20:
Микросхема имеет хорошие характеристики при достаточно низкой цене;
Датчик имеет простую логическую модель и простые формулы пересчета показаний в температуру и влажность.
Датчик температуры SHT4x
Еще один интересный датчик температуры с выдающимися характеристиками - SHT4x. Корпус датчика всего 1,5 x 1,5 мм. В силу крайне малого размера его не удалось смонтировать на макетной плате. Но датчик был успешно применен в одной из задач и показал себя достойно. Заявленная точность измерений ±0,1 °C в диапазон температур от 20 до 60 °C.
За покупку микросхемы производитель наградит вас готовой программной библиотекой и необходимыми CAD моделями. Применять такой датчик уместно в микропотребляющих устройствах, SHT4x потребляет всего 0,4 мкА при частоте измерений 1 Гц.
Выводы по датчику SHT4x
Хорошее соотношение цена/характеристики;
Нацелен на микропотребляющие устройства;
Имеется качественная программная библиотека от производителя.
Датчик температуры, влажности и давления BME280
В первую очередь датчик BMP280 позиционируется для измерения влажности и давления, при вычислении которых необходимо компенсировать температурный дрейф.
Устройство имеет функционал конечного автомата с тремя состояниями: Sleep mode, Forced mode, Normal mode. Режимы отличаются временем в активном состоянии и соответственно энергопотреблением. Для фильтрации показаний давления в микросхеме реализован БИХ-фильтр (IIR - infinite impulse response), т.к. показания датчика давления существенно меняются при незначительных изменениях окружающих факторов. Например, закрытие двери или окна может привести к кратковременному росту показаний.
Точное измерение давление потребует некоторого знакомства с математическим аппаратом, датчик предоставляет прекрасную возможность для практики в этом направлении. Поэтому BME280 отличается от своих собратьев сложностью логической модели, каждая микросхема индивидуально калибруется, содержит в энергонезависимой памяти набор калибровочных констант. При использовании датчика эти калибровочные значения необходимо вычитать и применить для расчетов. Требование относится ко всем трем измеряемым параметрам.
Отдаю должное производителю, в документации содержится исчерпывающая информация по алгоритму вычисления P, H, T и даже приводится число машинных тактов, которые займет расчет на Cortex-M3. Тем не менее с этим датчиком пришлось немного повозиться. Как оказалось, проблема крылась в том, что после инициализации датчик переходит в режим Sleep. Ох уж эти микропотребляющие устройства…
Выводы по датчику BME280:
Уникальный функционал – измерение давление, влажности и температуры одной микросхемой;
Достаточно сложная модель устройства: несколько режимов работы, калибровочные константы, несколько способов вычисления результатов;
Самый дорогостоящий датчик среди испытуемых.
Цифровые датчики незаменимы
Там, где с аналоговыми датчиками начинаются трудности, в игру вступают датчики цифровые. До магазина вы дойдете пешком, до почты доберетесь на велосипеде, а до соседнего города на машине. Аналогично и с передачей сигнала, аналоговые линии связи подвержены воздействию шумов, провода содержат омическое сопротивление, на каждый датчик нужна отдельная линия связи. Не лучше ли протянуть один провод 1-Wire и не беспокоиться о помехозащищенности при передаче показаний?
В отличии от 1-Wire (~300 м), шина I2C (~1 м @ 100 кбит/с) не спроектирована для передачи данных на большие расстояния, но и рассмотренные датчики не спроектированы только для измерения температуры. Либо это функция термореле, либо измерение температуры и влажности, а в случае с BME280 ещё и давления. В следующей части представлено сравнение цифровых, а также аналоговых датчиков друг с другом. Наконец мы узнаем, кто хорош только на словах, а кто в деле.
Ресурсы
Документация на микросхему STLM75;
Документация на микросхему DS18B20;
Документация на микросхему AHT20;
Документация на микросхему SHT4x;
Документация на микросхему BME280;
Проверка аналога датчика DS18B20.