В статье приведено описание барометра-термометра-гигрометра на основе МЭМС-датчика BME280, микроконтроллера EFM8SB20F16 с внешним кварцевым резонатором ZM1610 и DES E-ink-дисплея GDEW029M06 с диагональю 2,9 дюйма и разрешением 128х296 пикселов с питанием от литиевого элемента типоразмера AA ER14505 номинальным напряжением 3,6 В, ёмкостью 2,4 А·ч, который обеспечивает непрерывную работу прибора в течение как минимум десяти лет. Помимо цифровых значений давления, температуры и влажности, выводимых на экран один раз в десять минут, на нём построена гистограмма суточного изменения давления за восемь дней с погрешностью не более ± 1 с/сутки.
Цифровые значения атмосферного давления, температуры и влажности, измеренные прибором, который описан автором в статье [1], дают представление об этих параметрах только на текущий момент. Если температура и влажность в помещении меняются относительно слабо, то давление день ото дня может изменяться очень существенно. Для метеозависимых людей этот параметр имеет важное значение, но особенно необходимо знать его изменение с течением времени. Более наглядно представить это изменение позволяет гистограмма давления, измеренного на текущий момент и за всю предыдущую неделю. По такой гистограмме можно отследить тенденцию изменения давления, на основании которой можно в некоторой степени спрогнозировать этот параметр, что для метеозависимых людей часто является жизненно необходимым. В приборе, описанном в предлагаемой статье, помимо значений давления, температуры и влажности, отражающихся на экране в цифровом виде, построена такая гистограмма давлений.
Кроме того, в новом приборе сделаны несколько усовершенствований. Во-первых, элемент CR2477 ёмкостью 1 А·ч с номинальным напряжением 3 В, применённый в [1], заменён более мощным ЕР14505 ёмкостью 2,4 А·ч с номинальным напряжением 3,6 В. Это, в свою очередь, потребовало применения микропотребляющего стабилизатора STLQ015M30R с выходным напряжением 3 В, с током потребления не более 1 мкА и падением напряжения не более 10 мВ при токе 10 мА. Причина замены состоит в следующем. Выходное напряжение элемента CR2477 при токе нагрузки около 4 мА, когда DC-DC-преобразователь контроллера E-ink-дисплея работает в активном режиме, уменьшается приблизительно на 0,2 В. Кроме того, с течением времени выходное напряжение гальванического элемента, хоть и незначительно, но всё-таки также уменьшается. Оба этих эффекта сказываются на снижении контрастности изображения на дисплее. При использовании элемента ЕР14505 совместно со стабилизатором STLQ015M30R его выходное напряжение 3 В остаётся постоянным, и оба этих эффекта уже не влияют на контрастность изображения. Кроме того, применённый элемент ER14505H-LD/PHR-02P уже оборудован двухпроводным кабелем с разъёмом на конце, которым его просто подключают к плате устройства. В связи с этим в конструкции устройства вообще отсутствуют какие-либо дополнительные провода, поэтому существенно упрощается изготовление устройства и повышается надёжность его работы.
Во-вторых, в новом приборе, как указано выше, помимо цифровых значений давления, температуры и влажности, на экране отображается гистограмма значений давления за текущий день и за всю предыдущую неделю, т. е. восемь столбцов. Это потребовало применения несколько более мощного микроконтроллера (МК) EFM8SB20F16 с удвоенной, по сравнению с МК EFM8SB10F8 [1], программной памятью (16 кБпротив 8 кБв EFM8SB10F8). Кроме того, в EFM8SB20F16 внешняя оперативная память (xdata) увеличена до 4 кБ (против 256 байт в EFM8SB10F8). И наконец, МК EFM8SB20F16 оборудован двумя интерфейсами SPI: SPI0 и SPI1, что позволило управлять BME280 и контроллером дисплея от двух разных интерфейсов SPI. А это, в свою очередь, существенно упростило разводку платы устройства и уменьшило её габариты.
В-третьих, для лучшего восприятия информации применён более габаритный 2,9-дюймовый DES E-ink-дисплей GDEW029M06 размерами 79х36,7х х1,22 мм с разрешением 128x296 пикселов, оснащённый встроенным контроллером UC8151. Помимо очень высокой контрастности, сохраняемой даже при отрицательных температурах, этот дисплей отличается сниженным до двух секунд временем обновления изображения (против пяти секунд в [1]). Этот дисплей и был выбран в предлагаемой разработке.
В-четвёртых, в новый прибор добавлен часовой кварцевый резонатор частотой 32768 Гц по следующей причине. Дело в том, что гистограмма давления меняется ровно в полночь каждые сутки, и, естественно, точность часов в этом случае имеет существенное значение. В приборе [1] использован внутренний генератор RTC (16 кГц) МК, который имеет погрешность около 5%. Если показания прибора [1] меняются в среднем каждые пять минут, то ничего криминального не произойдёт, если они будут меняться, например, каждые четыре минуты или каждые шесть минут. При использовании внутреннего генератора погрешность по времени - около двух минут в сутки, что составляет 60 минут или один час в месяц, 12 часов в год и сутки за два года, что неприемлемо много, поскольку гистограмма давления уже не будет меняться ровно в полночь. В новом приборе использован часовой кварцевый резонатор, имеющий погрешность по частоте примерно ±20 ppm. В этом случае, как нетрудно подсчитать, погрешность RTC составит не более двух секунд за сутки, одну минуту в месяц и двенадцать минут в год, что более приемлемо.
В устройстве, схема которого показана на рис. 1, объединены сразу три узла: микропотребляющий с током потребления не более 1 мкА стабилизатор STLQ015M30R (DA1) с выходным напряжением 3 В, МК EFM8SB20F16G-A-QFN24 (DD1) и узел для прямого подключения дисплея: DC-DC-преобразователь на транзисторе S11308EDL (VT1), диодах PMEG3010EJ (VD1-VD3), катушке индуктивности SH3018 (L1), конденсаторах (C6-C17), резисторах (R3, R4) и разъёме FPC24/0.5mm (X2), к которому подключают шлейф дисплея.
Рис. 1.
Конденсаторы C3 и C5 положены для штатной работы стабилизатора DA1, конденсаторы C2 и C4 - для штатной работы МК DD1. RC-цепь R1R2C1 предназначена как для штатной работы МК при включении питания - она затягивает низкий уровень сигнала RST, требующийся по штату работы, на время зарядки конденсатора C1, так и в режиме программирования по интерфейсу C2 с помощью сигналов RST и C2D - резистор R2 даёт возможность легко управлять сигналом RST от этого интерфейса. Эти два сигнала (RST и C2D) и общий провод выведены на штыревой разъём ХР1, к нему ответным гнездом подключают кабель сопряжения с USB-DEBUG-адаптером, который, в свою очередь, сопрягается с компьютером по интерфейсу USB. Схему сопряжения можно найти в [2]. Питание на плату подают со штыревого разъёма WB-02 (X1). К нему ответным гнездом PHR-02 подключают двухпроводный кабель от элемента ER14505-LD/PHR-02P, которым он оборудован. Добавлен часовой кварцевый резонатор ZM1610 (ZQ1) частотой 32768 Гц с нагрузочной ёмкостью 12,5 пФ по причине, описанной выше.
Все резисторы и керамические конденсаторы (кроме C6 и C7) - для поверхностного монтажа типоразмера 0603, C6 и C7 - типоразмера 0805. Вместо STLQ15M30R можно использовать стабилизатор TPS78230DDCR в том же корпусе SOT23-5, по выводам совместимый с STLQ15M30R, с тем же выходным напряжением 3 В, но с вдвое меньшим током потребления (0,5 мкА против 1 мкА у STLQ15M30R). Кварцевый резонатор выполнен также в корпусе для поверхностного монтажа типоразмера 1610 (1,6x1 мм), который приблизительно равен размерам резистора 0603.
Программа для МК в уже готовом загрузочном формате (EFM8SB20F16G-A-QFN24_7.hex) приведена в дополнительных материалах к статье на сайте журнала. МК можно запрограммировать вышеприведённым способом с помощью USB-DEBUG-адаптера. Однако для тех, кто хочет самостоятельно написать свою программу, автор хотел бы поделиться некоторыми её моментами, в основном связанными с изменёнными, по сравнению с [1], портами МК и выводом информации на дисплей.
Рис. 2.
Конфигурация портов для SPI0 и SPI1 (рис. 2) соответствует МК DD1 на схеме рис. 1. Для обоих интерфейсов SPI сигналы SCK и MOSI настраиваются как цифровые выходы, а сигналы MISO - как цифровые входы. Порты P0.1 (CSB), P0.5 (RES), P0.6 (D/C) и P0.7(CSD) настраиваются как цифровые выходы, а порт P0.4 (BUSY) - как цифровой вход. Кроме того, при написании подпрограмм с использованием SPI1 все соответствующие регистры необходимо именовать для SPI1: для вывода байта - использовать SPI1DAT и SPI1CN0_SPIF, при входе и выходе в/из sleep-режима необходимо использовать регистр SPI1CN0 для запрета и разрешения SPI1 (для справки - см. [3]). Скорость обмена по обоим интерфейсам SPI - 5 Мбод.
Рис. 3.
Таймер RTC настраивается в соответствии с рис. 3. Следует обратить внимание, что нагрузочную ёмкость (Load Capacitance Programmed Value) для кварцевого резонатора необходимо установить ту, что указана в его справочном листке (datasheet), в данном случае - 12,5 пФ. Также необходимо установить частоту для кварцевого резонатора, равную 32768 Гц. Для по-лучения десятиминутного интервала измерений (Actual Alarm Period) потребуется установить значение, загружаемое в счётчик RTC (Alarm Programmed Value), равное 19660800. Остальные настройки на рис. 3, на взгляд автора, в комментариях не нуждаются. При таких настройках погрешность по времени составила около одной секунды в сутки.
Здесь следует заметить, что автор проверял эту погрешность по своим наручным кварцевым часам, которые также имеют свою погрешность. Запустив программу за пять секунд до полуночи, т. е. в 23:59:55, на следующие сутки, т. е. через 24 часа, автор стал наблюдать, когда сменится информация на дисплее и построится второй столбец гистограммы, равный первому. Это произошло ровно в 23:59:56. На следующие сутки - в 23:59:57 и так до семи суток, когда был построен последний, восьмой столбец гистограммы. Другими словами, RTC, по сравнению с наручными часами, отставали примерно на одну секунду в сутки. Далее, проверив погрешность наручных часов по сигналам точного времени, передаваемым по радио, автор получил, что эти часы спешат примерно на одну секунду в сутки. Отсюда был сделан вывод, что RTC идут даже более точно, чем наручные часы. Этот довольно странный вывод немало удивил автора. То ли кварцевый резонатор попался хорошо настроенный, то ли ещё что-то, но факт остаётся фактом...
В программе установлены следующие назначения портов для соответствующих сигналов (табл. 1). В табл. 1 "EPD" - сокращение от E-Paper (электронная бумага) Display. Остальные настройки такие же, что и в [1].
Таблица 1
sbit CSB = Р0^1; // - для ВМЕ | ||||
sbit CSD = Р0^7; // - для EPD | ||||
sbit D_C = Р0^6; // - для EPD | ||||
sbit RSTD = Р0^5; // - для EPD | ||||
sbit BUSY = Р0^4; // - для EPD |
Теперь по выводу информации на дисплей. Этот вывод условно можно разделить на три типа.
Первый тип - вывод цифровых значений и их размерностей для давления, температуры и влажности. Эта информация, как и в [1], выводится в три строки. В первой (верхней) строке выводятся давление и его размерность, например "751 мм/Hg". Во второй (средней) строке выводятся температура (со знаком) и её размерность, например "+25 оС". В третьей (нижней) строке выводится символ влажности (капля с делениями), само значение влажности и символ %, например " 25 %".
Все символы трёх строк расположены строго один над другим и выводятся так же, как это описано в [1], поэтому, чтобы не повторяться, объяснение подобного вывода не приводится. Для символов выбран шрифт Clarendon жирный размером 37, где каждый символ выводится в поле 40x31 пиксел, причём реальные высота и ширина символа не превышают 36 и 31 пикселов соответственно. Это позволяет выводить символы без горизонтальных пробелов с расстоянием между ними по вертикали в четыре пиксела.
Второй тип вывода - это своеобразная "картинка", в которой отражаются вертикальные координаты гистограммы с минимальным (720), средним (750) и максимальным (780) значениями давления в мм рт. ст. Эти значения были выбраны в связи с тем, что, по данным многолетних наблюдений, минимальное давление в Москве (709 мм рт. ст.) было зафиксировано 25 ноября 1973 г., максимальное (782 мм рт. ст.) - 14 декабря 1944 г., а среднее давление - 750 мм рт. ст.. Реальный интервал давлений, который показывал прибор, существенноуже: от 725 до 774 мм рт. ст., поэтому минимальные и максимальные значения давления и выбраны 720 и 780 мм рт. ст. соответственно. Для получения "картинки" использована хорошо известная программа LCD Font Maker v3.92. В этой программе подобная "картинка" была буквально нарисована, а нарисовать цифры "0", "2", "5", "7" и "8" не составляет большого труда. Далее специальной опцией поворота эта картинка была повёрнута на 90о (рис. 4). После этого опцией настройки формата вывода (сиреневая стрелка, рис. 4) был выбран формат слева-направо и сверху-вниз (рис. 5), а опцией кодировки картинки (красная стрелка, рис. 4) получены её коды (рис. 6). Далее, нажав на кнопку "Export" (красная стрелка, рис. 6) и назвав нужный файл, можно получить все коды картинки, которые затем уже вставить в программу в виде массива. Если этот массив выводить подряд, то за счёт встроенного в контроллер дисплея инкрементирования и декрементирования счётчиков строк и столбцов все пикселы картинки выведутся туда, куда нужно. Размеры картинки 128x31 пиксел, т. е. она строго вписывается в дисплей по вертикали (128), а расстояния между большими делениями в пикселах (20) соответствуют 10 мм рт. ст., т. е. каждые два пиксела соответствуют 1 мм рт. ст.
Рис. 4.
Рис. 5.
Рис. 6.
Продолжение следует
Автор: А. Кузьминов, г. Москва