В статье приведены принципиальная схема, разводка платы и конструкция барометра-гигрометра-термометра на базе хорошо известного MEMS-датчика BME280 (компании Bosch Sensortec), нового 51-совместимого микропотебляющего микроконтроллера (МК) EFM8SB10F8 (Silicon Laboratories) и ЖКИ RND0007-PAN-#00 (Raystar Optronics) – обновленный аналог популярных ЖКИ TI8148 и TIC55. Для питания устройства используется распространенная литиевая батарейка CR2477 (таблетка) с напряжением 3 В емкостью 1 А•ч, которой хватает на время непрерывной работы прибора, как минимум, 5 лет при обновлении показаний атмосферного давления, влажности и температуры раз в 5 минут.
Введение
Барометры-гигрометры-термометры на базе BME280 широко распространены. Однако все они либо требуют отдельного сетевого источника питания, либо достаточно емких аккумуляторов, нуждающихся в частой перезарядке. Изредка можно найти в Интернете подобные устройства с питанием от таблеточных батареек, однако срок их работы недолог, и батарейки часто требуется менять. Такое положение вещей объясняется тем, что все эти устройства для своей работы потребляют значительную энергию, понизить которую не позволяют три причины.
Во-первых, в большинстве случаев, в таких устройствах используют широко распространенные 32- (и более) разрядные МК (в одноплатных компьютерах типа Arduino Uno, Raspberry Pi и т.п.), STM32 и им подобные, потребляющие значительный ток (десятки мА).
Во-вторых, хотя BME280 позволяет производить обмен данными с МК по двум интерфейсам – SPI и I2C, в 99% случаев связь МК с BME280 производится по двухпроводному интерфейсу I2C или SMBus (что почти одно и то же), имеющему скорость обмена на порядок ниже скорости SPI и требующему достаточно низкоомных нагрузочных резисторов, подключенных к питанию, которые также потребляют значительный ток (до нескольких мА). Низкая скорость обмена по интерфейсу I2C объясняется двумя причинами: во-первых, просто из-за своей физической реализации и, во-вторых, – из-за достаточно сложного протокола обмена, требующего как относительно большего времени работы МК, так и большей его программной памяти (по сравнению с интерфейсом SPI). Протокол же обмена по интерфейсу SPI очень прост. Для вывода байта требуется записать его в специальный регистр SPI0DAT, дождаться бита (флага) окончания обмена и сбросить этот бит. Для ввода байта необходимо записать в этот же регистр ничего не значащий фиктивный (подставной – dummy) байт, также дождаться установки флага окончания обмена и сбросить этот флаг. Введенный байт будет содержаться в том же регистре SPI0DAT. Всё остальное сделают аппаратные средства МК и BME280 (подробно – см. далее). Более примитивного протокола обмена вообще трудно придумать. Отсюда следует высокая скорость работы интерфейса SPI и простота программирования, что определяет минимум программной памяти на свою реализацию. Интерфейс I2C целесообразно использовать, когда к МК подключено несколько устройств на одну и ту же двухпроводную шину. В этом и заключается его преимущество перед интерфейсом SPI. Но если к МК подключена всего одна микросхема BME280, использование интерфейса I2C является просто бессмысленным (если не сказать безграмотным). Здесь может возникнуть вопрос: а причем здесь высокая скорость обмена по SPI между МК и BME280 (до 10 Мбод/с, что для I2C недоступно), и зачем вообще она нужна? Дело в том, что в «спящем» состоянии (так называемый sleep-режим) BME280 потребляет ток всего 0.1 мкА, и большинство МК также потребляют ток не более нескольких мкА. Предположим, обновление информации в МК и BME280 происходит раз в 5 минут (более частое обновление информации бессмысленно, поскольку за такое время ни атмосферное давление, ни влажность, ни температура существенно не поменяются). При обмене информацией МК с BME280 (в нормальном режиме работы) потребление энергии как МК, так и BME280 существенно возрастает (потребление тока может достигать единиц мА). Вот поэтому, чем больше скорость обмена, тем меньше времени потратится на эту связь, и меньше времени уйдёт на потребление большого тока как МК, так и BME280, прежде чем они возвратятся обратно в микропотребляющий sleep-режим (что существенно удлинит срок службы батарейки).
В-третьих, устройства, потребляющие большой ток, – это средства отображения измерительной информации. В подавляющем числе устройств, использующих BME280, в качестве таких средств применяются светодиодные индикаторы, потребляющие до десятков, а то и сотен мА. Реже используются матричные OLED-дисплеи (20 – 50 мА). Иногда можно найти устройства, где используются матричные ЖК-дисплеи, потребляющие ток до нескольких мА. В то же время имеются семисегментные ЖКИ, потребление тока которых составляет всего несколько мкА (максимум до десяти мкА), но устройств МК с BME280, использующих такие ЖКИ, крайне мало и они, как правило, используют МК с достаточно высоким потреблением тока.
Здесь необходимо добавить, что в последнее время в широкой продаже появились дисплеи, которые получили название «электронная бумага» – E-paper или «электронные чернила» – E-inc. Это матричные дисплеи с разрешением 158×158 или 200×200 пикселов (наиболее дешевые и востребованные варианты). Потребление тока у них существенно выше (до нескольких мА), чем у ЖКИ, но только во время обмена информацией с МК. Зато когда обмена нет, эти дисплеи вообще ничего не потребляют, т.е. они сохраняют информацию на экране даже при выключении питания и, причем, достаточно долгое время (до нескольких месяцев и более). Кроме того, некоторые из таких дисплеев имеют возможность обновлять информацию не всего экрана, а только определенной его области, что существенно снижает их энергопотребление (здесь комментарии излишни). Применительно к BME280 это означает, что можно, например, вывести в определенную область экрана слова «Давление», «Влажность», «Температура» один раз, а обновлять только цифровые значения этих физических величин в другой области экрана. Матричное строение таких дисплеев, конечно, требует большего объёма как программной, так и оперативной памяти по сравнению с примитивным обменом с ЖКИ, и «потянет» ли МК EFM8SB10F8 с программной памятью всего 8 КБ и оперативной 128 байт (data) плюс 512 байт «внешней» (xdata) – еще неизвестно (по подсчетам автора, скорее всего, да). Если нет, можно использовать похожий МК EFM8SB20F16 (16 КБ программной памяти и 4 КБ xdata), который по стоимости не отличается от EFM8SB10F8 (и даже немного дешевле). Автор сейчас экспериментирует с этими дисплеями. Но это, как говорят, уже другая история.
Таким образом, резюмируя вышесказанное, можно отметить, что имеются три проблемы, не позволяющие использовать BME280 в устройствах на базе МК с батарейным питанием и достаточно долгим сроком эксплуатации. В настоящей статье приведено устройство, где все эти три проблемы сняты.
Дальнейшее изложение построено следующим образом. Вначале приводится принципиальная схема устройства, далее кратко описаны его программные средства, затем показана разводка и внешний вид его платы, после этого рассказано о конструкции устройства и результатах его работы.
Принципиальная схема устройства
Как видно из Рисунка , схема устройства достаточно проста. В качестве МК используется EFM8SB10F8G-A-QFN20 (DD1) в корпусе QFN20 размером 3×3 мм. Потребление тока МК в sleep-режиме составляет 0.5 мкА (SB в названии МК – сокращение от Sleepy Bee). BME280 сопрягается с МК по 4-проводному (для BME280) интерфейсу SPI сигналами MISO, MOSI, SCK и CSB. Последний сигнал используется в качестве выбора кристалла (Chip Select – CS). Для МК это 3-проводный SPI (без использования сигнала NSS, выставляемого автоматически в 4-проводном режиме после передачи/приёма каждого байта). Сигнал CSB устанавливается в программе ”вручную” тогда, когда это требуется (в начале и в конце обмена при передаче или приёме байта или массива байтов).
Рисунок 1. | Принципиальная схема устройства. |
С МК ЖКИ сопрягается с помощью трех сигналов: DIN (данные), DCLK (сигнал, стробирующий данные) и LOAD (сигнал, кратковременно изменяющий своё состояние с «лог. 0» на «лог. 1» и обратно и предназначенный для защелкивания всех полученных ЖКИ данных. Эти три сигнала, питание (+3 В) и «земля» выведены на 5-штырьковый разъем X1. К этому разъему одним концом – 5-контактной вилкой X1' подключается кабель связи с ЖКИ, а второй его конец непосредственно припаян к контактам ЖКИ – схема в правом верхнем пунктирном прямоугольнике на Рисунке 1.
Питается плата от 3-вольтовой таблеточной литиевой батарейки CR2477-PCN2 диаметром 24 мм и толщиной 7.7 мм с приваренными контактами (вместо нее можно использовать обычную батарейку CR2477 и батарейный отсек для нее). Емкость таких батареек 1 А•ч. Для этого на плате предназначен 2-контактный штыревой разъем X2. К этому разъему одним концом – 2-контактной вилкой X2' – подключается 2-проводный кабель, который своим вторым концом припаян либо к контактам, надеваемым на контакты батарейки, либо к контактам батарейного отсека. Схема этого кабеля питания показана в пунктирном прямоугольнике в правой нижней части Рисунка 1.
Программироваться МК может двумя способами.
Первый вариант программирования МК – с помощью USB DEBUG адаптера, который сопрягается с компьютером по интерфейсу USB, а с МК – по 2-проводному интерфейсу C2. Для этого предназначен 3-контактный штыревой разъем X3, на который выведены два сигнала: RST/C2CK, C2D и «земля». Для сопряжения используется кабель, который одним концом (ответная 3-контактная вилка) подключается к разъему X3, a второй его конец подключается к разъему USB DEBUG адаптера с интерфейсом C2. Схему такого кабеля можно найти в [1]. Цепочка R1R2C3 используется для штатной работы интерфейса C2 и штатной работы МК при включении питания (Power On Reset – POR).
Второй вариант программирования МК – по интерфейсу RS232 с помощью COM-порта компьютера (COM1). Для сопряжения используется 4-контактный штыревой разъем X4, на который выведены 2 сигнала: TxD, RxD, питание (+3 В) и «земля». К этому разъему подключается преобразователь уровней интерфейса RS232-TTL, а к нему – кабель сопряжения с COM-портом компьютера. Все схемы и подробное описание этого режима программирования можно найти в [2]. Для перевода МК в этот режим программирования необходимо замкнуть перемычкой (джампером) контакты 1-2 разъема X3.
Конденсаторы C1, C2, C4 и C5 – блокировочные; они предназначены для штатной работы DD1 и DD2.
Как видно из вышеизложенного, схема не отличается особой сложностью, а потому плата устройства легко разводится и имеет габариты всего 11×14 мм (см. далее).
Литература
- Кузьминов А. Ю. Связь между компьютером и микроконтроллером. Современные аппаратные и программные средства. М.: «Перо». 2018.
- Кузьминов А. Программирование микроконтроллеров EFM8 с помощью встроенного загрузчика программ. Радио. 2018. № 12.