Это вторая часть статьи о барометре-гигрометре-термометре на базе MEMS-датчика BME280 (компании Bosch Sensortec), нового микропотребляющего 51-совместимого микроконтроллера (МК) EFM8SB10F8 (Silicon Laboratories) и ЖКИ-модуля H1313 на базе контроллера HT1616 (Holtek). В этой части рассмотрены программирование и конструктивные особенности прибора.
1-я часть статьи закончилась на рассмотрении проблемы с потерей содержимого регистра с адресом 0xF7. Решение проблемы можно осуществить двумя способами. Первый способ – после выполнения подпрограммы записи адреса 0xF7 сразу же прочитать содержимое SPI0DAT (это и будет содержимое адреса 0xF7), а затем уже осуществить чтение подпрограммой чтения, в результате чего получим содержимое адреса 0xF8, и далее прочитать остальные байты стандартным образом. Второй способ состоит в том, что вначале следует записать (подпрограммой записи) не адрес 0xF7, а адрес на единицу меньше, т.е. адрес 0xF6, а затем уже прочитать все 9 байт. Оба способа, как выяснилось, работают, однако второй, по мнению автора, более предпочтителен, поскольку он позволяет воспользоваться стандартными подпрограммами чтения и записи по SPI. Ниже приведён фрагмент основной программы, где показано, как это сделать. Во-первых, вначале следует установить совмещение (объединение) 4-байтного числа (uint32_t dw) с массивом из 4 однобайтных чисел (uint8_t b[3]) с 4 элементами: b[0], b[1], b[2] и b[3]. Это совмещение требуется, чтобы, с одной стороны, иметь возможность работы с 4-байтным числом (например, ADC_P) для расчётов давления по формулам, приведённым в справочном листке (с учётом калибровочных коэффициентов), с другой – производить однобайтное чтение по интерфейсу SPI (он, как известно, однобайтный). Такое совмещение приводит к тому, что массив из 4 однобайтных чисел b[3] и одно 4-байтное число dw перераспределяют одно и то же место в памяти. Другими словами, массив b[3] строго определяет число dw, и наоборот, dw строго определяет массив b[3]. Это совмещение приведено ниже.
union {
uint8_t b[3];
uint32_t dw;
}ret;
Ниже приведён фрагмент основной программы, в котором осуществляется чтение начиная с адреса 0xF6 (BME280_REG_PRESS_MSB – 1), т.е. на единицу меньше адреса старшего байта давления (в начале программы установлена директива #define BME280_REG_PRESS_MSB 0xF7). Самый старший элемент массива (ret.b[3]) не используется, поэтому он должен быть обнулён.
ret.b[3] = 0x00;
outspi(BME280_REG_PRESS_MSB - 1); //адрес 0xF6
ret.b[2] = inspi(); //содержимое 0xF7.
ret.b[1] = inspi(); //содержимое 0xF8.
ret.b[0] = inspi(); //содержимое 0xF9.
adc_P = (ret.dw >> 4) & 0xFFFFF;
.
.
.
Таким образом, прочитав все три байта, можно получить правильные показания АЦП (ADC_P) из числа ret.dw. Остальные 6 байт для температуры и влажности читаются аналогично.
Кстати, в справочном листке BME280 в качестве примера приведена последовательность (по времени) многократного чтения по SPI (SPI multiple byte read), как раз начиная с регистра с адресом 0xF6 (figure 13 из datasheet).
С учётом вышесказанного на рис. 1 приведён этот рисунок со скорректированными адресами.
Теперь по поводу вывода информации на ЖКИ. Подобный ЖКИ ранее применялся в стационарных телефонных (и кассовых) аппаратах, приставках для АОН и других устройствах. Выпускался он в огромных количествах. Названий у этого ЖКИ также очень много: КО-4B, КО-4В2, HT1611, HT1613, НТ1616 и др. О его программировании подробно написано в справочном листке на контроллер, например, HT1616C (Timer with Dialer Interface, компании Holtek). Хотя выпуск этого ЖКИ давно прекращён, его легко купить (например, на Авито и др. подобных ему сайтах). Кроме того, можно также легко купить б/у приставку для АОН (не дороже 100–300 руб.) и изъять из неё этот ЖКИ. В ЖКИ встроены часы, которые могут показывать время (часы, минуты и секунды) при определённом состоянии управляющего сигнала HK (см. рис. 1 первой части статьи), однако этот режим в приборе не используется (но такая возможность сохранена). Программируется этот ЖКИ достаточно просто, однако, на взгляд автора, имеются две проблемы, вызывающие некоторые затруднения в программировании на C51 вывода информации на этот дисплей. Первая проблема: как программно вывести байт через какой-либо порт МК, вторая – каким образом получить десятичные цифры для вывода на ЖКИ, например, 16-разрядного числа.
Вначале о 1-й проблеме. Она может быть решена двумя способами. Первый способ – использовать аппаратный SPI и подпрограмму вывода по SPI для BME280, рассмотренную ранее. Но в этом случае в связи с разными скоростями обмена для BME280 (5 Мбод) и ЖКИ (максимум 0,5 Мбод, т.е. на порядок меньше), а также разными настройками (в частности, полярности и фазы), придётся каждый раз при выводе информации на ЖКИ и BME280 изменять эти настройки, что очень неудобно.
Второй способ – вывести байт в ЖКИ «вручную», т.е. программным способом. Каким образом это можно сделать достаточно просто? Как ни странно, но на ассемблере такой вывод не вызывает затруднений. Если имеется байт, и его требуется вывести последовательно через какой-либо порт, например P0.1, то такая процедура хорошо известна: байт сдвигается влево через бит переноса C, в котором появляется старший бит байта, т.е. 7-й бит. Далее порту P0.1 присваивается значение бита переноса C, и для записи в периферийное устройство (ЖКИ) он стробируется импульсом CLK через какой-либо второй порт, например, P0.2. Для передачи следующего бита байт сдвигается влево ещё раз, в C попадает уже 6-й бит, и эта процедура повторяется 7 раз, пока не выведется весь байт. Но в C51 нет такого понятия, как бит переноса C. Как здесь быть? К счастью, в C51 имеется «лазейка», которая позволяет вывести байт подобным образом. Здесь необходимо напомнить, что в области памяти МК EFM8SB10 есть 16 байт с побитовой адресацией (нам хватит и одного). Эта область памяти именуется как bdata. Адресация каждого бита байта из области bdata происходит точно так же, как это принято для портов МК. Например, для бит DI и CLK, выводимых с портов P0.1 и P0.2 соответственно, эта адресация приведена ниже.
sbit DI = P0^1;Если назначить какой-либо байт, например, BYTEIO из области bdata, и конкретный бит BITIO, как, например, 7-й бит BITEIO, то такое назначение на C51 будет выглядеть так:
sbit CLK = P0^2;
bdata uint8_t BYTEIO;Если теперь присвоить выводимому через порт P0.1 биту DI значение BITIO, простробировать каждый выводимый бит сигналом CLK (изменяя его значение с лог.0 на лог.1 и обратно с задержкой 10 мкс) и сдвигать байт BYTEIO циклически влево на 1 бит командой _crol_(BYTEIO,1), то для вывода всего байта получим следующую достаточно простую процедуру (т.е. подпрограмму «ручного» вывода байта):(/p)
sbit BITIO=BYTEIO^7;
void OUTBLCD(uint8_t OUTB){//Вывод байта в ЖКИ uint8_t j; BYTEIO=OUTB; for (j=0;j<8;j++){ DI=BITIO; CLK=1; DEL10US(); CLK=0; DEL10US(); BYTEIO=_crol_(BYTEIO,1); } }
Теперь о том, как получить десятичные цифры для вывода 16-разрядного числа.
Пусть имеется 16-разрядное число, например, давление P, которое в результате расчётов по формулам для BME280 равно 751 мм рт. ст. В МК это число представлено в двоичном виде, что в 16-ричном виде соответствует числу 0x02ef. Как получить цифры «7», «5» и «1» из этого числа и как их вывести на ЖКИ? Эта задача решается также достаточно просто.
Для этого в области памяти программ (code) необходимо завести массив M[12], состоящий из 12 элементов, коды которых соответствуют кодам выводимых цифр (эти коды приведены в справочном листке (datasheet) на контроллер):
code uint8_t M[12]=
{//”0” “1” “2” “3” “4” “5” “6” “7” “8” “9” blank “-”
0x0a,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x00,0x0f};
Если внимательно приглядеться к этому массиву, то можно обнаружить, что код того или иного элемента массива соответствует его номеру в массиве, или, другими словами, его индексу (например, i, в массиве M[i]). Например, код цифры «0» (0x0a) содержится в 0-м элементе массива, код числа «5» (0x05) – в 5-м элементе и т.п. Таким образом, если требуется вывести, например, цифру «5», то, задав индекс i = 5, получим М[5], что соответствует выводимой «пятёрке».
Для того чтобы из выводимого числа получить цифры для вывода на ЖКИ, можно воспользоваться оператором sprintf [параметры], используемым для «печати» информации. Этот оператор работает так же, как и оператор printf [параметры], используемый для распечатки данных на мониторе компьютера, выводимых через интерфейс RS-232 (COM-порт). В отличие от оператора printf, который посылает данные на COM-порт компьютера, оператор sprintf помещает эти данные в специальный буфер (массив) в памяти МК. Этот буфер указывается в параметрах sprintf.
В качестве примера рассмотрим вывод на ЖКИ идентификационного номера (ID) BME280, который равен 60h (58h в BMP280). Пусть считанный из BME280 идентификационный номер расположен в однобайтовой переменной CHID. Заведём два массива: 1-й (buf[5]) – для вывода пяти байт в ЖКИ (что соответствует выводу всех десяти знакомест, каждое из которых состоит из полубайта или тетрады), 2-й (bufTP[7]) – для получения чисел для давления (3 цифры), влажности (2 цифры) и температуры (2 цифры), т.е. всего 7 цифр. Для ID требуется только 2 цифры, так что можно воспользоваться этим же массивом (bufTP[7]).
Вначале обнуляем массив buf. Затем «печатаем» CHID-оператором sprintf в формате двух 16-ричных цифр в bufTP. После этого необходимо избавиться от «тройки» в старшем полубайте каждой цифры, так как оператор sprintf выводит цифры в коде ASCII, в котором каждая цифра состоит из двух полубайт: в старшем полубайте выводится «3», а в младшем – сама цифра. Например, цифра «5» кодируется как 0x35, «0» – как 0x30 и т.п. Для этого все элементы массива bufTP логически умножаем на 0x0f, т.е. обнуляем старший полубайт. Далее с помощью оператора циклического сдвига влево (_crol_ )на 4 двоичных разряда формируем два полубайта последнего (5-го) байта массива buf (buf[4]), в которых и содержится идентификационный номер. И наконец, выводим все 5 байт в ЖКИ вышеприведённой подпрограммой OUTBLCD(). Код на C51 представлен ниже.
//------------------------------------------
uint8_t CHID,i,buf[5],bufTP[7]; //------------------------------------------
for (i=0;i<5;i++){//Обнуляем buf buf[i]= 0x00;
}
sprintf (bufTP,”%-2x”,CHID);//Печатаем ID
for (i=0;i<2;i++){
bufTP[i] &= 0x0f; //Убираем “3“
}
buf[4]= _crol_
(M[bufTP[0]],4)+M[bufTP[1]];//
Формируем 5-й байт
for (i=0;i<5;i++){
OUTBLCD(buf[i]); //Выводим 5 байт в ЖКИ
}
В результате в правой части ЖКИ появится идентификационный номер BME280 «60» (или «58» для BMP280).
Для того чтобы «напечатать» 3 цифры давления (press), 2 цифры влажности (hum) и 2 цифры температуры (temp), необходимо использовать оператор sprintf следующего формата:
sprintf (bufTP,”%3u%2u%2u”,press,hum,temp);
Кроме того, если температура отрицательная, то перед числом температуры необходимо поставить знак минус (код 0x0f) – это последний (12-й) элемент массива M[12], если положительная, то пробел (код 0x00) – предпоследний (11-й) элемент массива M[12].
Как видно из вышеизложенного, вывод информации в ЖКИ достаточно прост, в связи с чем занимает небольшую память программ (code) и оперативную память данных (data) – см. далее.
Перейдём теперь к процедуре инициализации всех устройств МК. Эта процедура намного проще написания программы на C51, однако именно она определяет полное функционирование всего МК. Инициализация осуществляется в среде Simplisity Studio v.4 в специальном режиме конфигурации.
В общем меню конфигуратора (рис. 2) в настройке нуждаются только те устройства, которые отмечены «галками» (остальные устройства по умолчанию отключены).
При нажатии соответствующей кнопки в меню справа будет отражаться окно, в котором нужно выбрать те или иные параметры. При нажатии кнопки Clock Control необходимо выбрать Low Power Oscillator и установить делитель для системной тактовой частоты в единицу SYSCLK/1. При этом значение частоты для SYSCLK установится на 20 МГц (или 20 000 000 Гц, рис. 3а). В настройках для SPI (рис. 3б) необходимо разрешить работу SPI (Enabled), установить 3-проводный режим Master (Master 3-wire mode), установить фазу (Clock Phase) и полярность (Clock Polarity), а также выбрать скорость работы, т.е. в данном случае выбрать коэффициент деления SYSCLK (SPI0CKR) равным единице. В этом случае частота импульсов SCK установится равной 5 МГц, т.е. в 2 раза меньше максимальной частоты импульсов SCK для BME280 и МК EFM8SB10 (10 МГц), т.е. с 2-кратным запасом. В опциях Interrupts, Supply Monitor и Voltage Regulators необходимо установить запрет (disable), а в опции PCA – запрет работы Watchdog Timer’у (в связи с простотой подробности не показаны). Нажав кнопку PMU, необходимо выбрать разрешение выхода из sleep-режима по тревожному сигналу от таймера RTC (Enable RTC alarm Wake-up Source), отмеченное синим цветом на рис. 3в. Это очень важный момент. Если этого не сделать, то после входа в sleep-режим программа «зависнет». И последнее, что необходимо сделать, – это настроить параметры работы RTC в соответствии с рис. 3г. Здесь надо добавить, что при работе счётчика RTC от внутреннего микромощного НЧ-генератора LFOSC0 частотой около 16 кГц этот счётчик будет считать каждый поступивший импульс не нулевым, а 1-м битом, или, другими словами, содержимое RTC будет увеличиваться на единицу так, как будто к RTC подключён кварцевый резонатор частотой 32 кГц. То есть RTC будет считать в 2 раза быстрее. Поэтому, выбрав программированное значение тревожного сигнала для RTC (Alarm Programmed Value), равное 10 000 000, которое соответствует периоду в 10 минут (Actual Alarm Period – предпоследняя строчка в окне рис. 3г), получим, что этот период на самом деле будет равен 5 минутам. Также необходимо разрешить сам тревожный сигнал от RTC (Enable RTC Alarm) и авто-ресет RTC по Alarm’у (Enable Alarm Auto-reset). Опция авто-ресет автоматически сбрасывает (обнуляет) содержимое таймера RTC по достижению максимального значения (5 минут), т.е. RTC после обнуления не останавливается, а продолжает работу сначала. Кроме того, необходимо разрешить работу RTC (Enable RTC oscillator) и запустить его (RTC Timer Run Control – Start).
а – выбор системной тактовой частоты (SYSCLK), б – выбор режима работы SPI, в – настройка PMU, г – настройка RTC, д – настройка портов МК (DefaultMode PortI/O)
Далее необходимо перейти в режим настройки портов (Default Mode PortI/O). На экран выведется корпус МК с портами (рис. 3д). Опциями skip (пропуск) необходимо «передвинуть» порты интерфейса SPI (SPI0_SCK, SPI0_MISO и SPI0_MOSI) в правую часть корпуса, чтобы их легче было соединить с BME280 – так, как это показано на принципиальной схеме устройства из 1-й части статьи (и на разводке – см. далее рис. 4а). «Пропущенные» порты отмечены красными крестиками. Порты Р0.1, P0.2 и P0.3, подключаемые к ЖКИ, настроить как цифровые выходы (Digital Push-Pull Output) со слабым токовым выходом (Low drive). При этой опции потребление тока портом существенно снижено. Для наглядности в правой части рис. 3д показана конфигурация порта P0.2, отмеченного на корпусе (слева сверху) чёрным прямоугольником. Порты SPI P0.7(SPI0_SCK), P1.1
(SPI0_MOSI) и порт P1.2 (11-й вывод, CSB) также настроить как Digital Push-Pull Output, a порт P1.0 (SPI0_MISO) – как цифровой вход (Digital OpenDrain I/O), т.е. выход с открытым стоком (и со слаботоковой подтяжкой – Pull-ups Enabled).
После того как произведена настройка (конфигурация) всех устройств МК, необходимо нажать кнопку с двойной дискетой в левой верхней строке меню всего экрана, чтобы записать эту конфигурацию на диск.
При этом на C51 сгенерируется текст программы инициализации устройств InitDevice.c (чтобы написать её вручную, да ещё без ошибок, а это несколько страниц текста на C51, уйдёт не один день), к которой будет обращение из основной программы в самом начале её работы. После этого основную программу необходимо оттранслировать, выбрав в меню экрана опцию Project и в открывшемся окне – подопцию Build Project. После трансляции создастся файл EFM8SB10F8G-A-QFN24.hex, о котором уже упоминалось в начале этого раздела статьи, а в нижней части экрана в специальном окне, отражающем результат трансляции, будет следующее сообщение:
Program Size: data=116.1 xdata=0 const=0 code=5066
LX51 RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)
Finished building target: EFM8SB10F8G-A-QFN24.omf
Из этого сообщения следует, что программа использует практически всю внутреннюю оперативную память (data = 116,1 байт), размер которой 128 байт, внешняя дополнительная оперативная память с непрямой адресацией размером 512 байт не используется (xdata = 0), а размер кодовой части программы составляет около 5 кБ (code = 5066), т.е. укладывается в максимальный размер программной памяти для этого МК, равный 8 кБ.
И последнее, что следует добавить по поводу программных средств. В Интернете можно найти массу приборов с датчиками BME280 и BMP280, которые показывают давление P, влажность H и температуру T с точностью до десятых и даже до сотых долей соответствующих физических величин, т.е. до 0,01 мм рт. ст., 0,01% и 0,01°C соответственно. Такую точность измерения действительно обеспечивает 20-разрядный АЦП, встроенный в BME280. Однако погрешность измерения самих датчиков P, H и T (встроенных в BME280) составляет до 2 (а то и более) целых единиц соответствующих физических величин (± 2 мм рт. ст., ± 2–3% и ± 2°C), не говоря уже о десятых и тем более сотых долях. Это автор обнаружил, наблюдая за показаниями двух идентичных приборов, стоящих рядом. В связи с этим на экран ЖКИ программой выводятся именно целые числа, показывающие давление, влажность и температуру. Такое положение вещей позволяет отказаться от использования библиотеки с плавающей запятой, «отъедающей» более 3 кБ памяти МК, для расчётов P, H и T с точностью до 0,01 единиц соответствующей физической величины, поскольку такая точность является бессмысленной.
Разводка основной платы устройства сделана автором с помощью программы SprintLayOut v.6, файл разводки в формате *.lay6 приведён в дополнительных материалах к статье на сайте журнала. Из рисунков разведённой платы и её внешнего вида (рис. 4) можно заключить, что её разводка очень проста, а сама плата миниатюрна (размер всего 16×18 мм). Здесь следует добавить, что при программировании МК с помощью USB DEBUG адаптера по интерфейсу C2 припаивать разъём для его программирования с помощью COM-порта компьютера (X2, см. схему подключения батарейки CR2477 из 1-й части статьи) необязательно. Как можно заметить из рис. 4в, на плате этого разъёма нет, хотя отверстия для его установки просверлены. Для оценки масштаба (размера) платы рядом с ней положена обычная спичка (рис. 4г).
а, в – вид со стороны расположения компонентов, б, г – вид с обратной стороны
Плата стабилизатора 1,5 В (рис. 5) – сверхминиатюрна (7×9 мм). Её файл разводки также приведён в дополнительных материалах к статье на сайте журнала.
а, в – вид со стороны расположения компонентов, б, г – вид с обратной стороны
Прибор расположен в корпусе размером 84×58×24 мм (ЧАББ), состоящим из двух половин (рис. 6). В одной из них, более глубокой, установлены все компоненты прибора. В этой половине корпуса прорезано окно для ЖКИ. Плата ЖКИ приклеена к внутренней поверхности этой половины корпуса пористой лентой с двусторонним липким слоем. В первом варианте (рис. 6а) основная плата со вставленным модулем BME280 приклеена к пластмассовой пластине пористой лентой с двусторонним липким слоем, а пластина, в свою очередь, приклеена к плате ЖКИ такой же лентой. Две мизинчиковые литиевые батарейки FR03 установлены в батарейных отсеках, один из которых приклеен к плате ЖКИ, а второй – к внутренней части этой половины корпуса такой же лентой. Во втором варианте (рис. 6б) основная плата со вставленным модулем BMP280 аналогично приклеена к плате ЖКИ. К этой же плате приклеена литиевая батарейка CR2477 с приваренными контактами. Плата стабилизатора 1,5 В приклеена к боковой поверхности корпуса (рис. 6б, слева снизу). На лицевой поверхности прибора (рис. 6в) сверху приклеена полоска бумаги с напечатанными словами: «Давление Влажность Температура», а снизу – полоска с символами «мм рт. ст. __% __°C», расположенными приблизительно под числами, показывающими давление, влажность и температуру соответственно. Если в приборе используется модуль BMP280, то влажность, естественно, не показывается (рис. 6г).
а – с модулем BME280 и двумя батарейками AAA FR03, б – с модулем BMP280, батарейкой CR2477 и стабилизатором 1,5 В, в – общий вид прибора с BME280 в сборе, г – показание прибора с BMP280
Задняя половина корпуса (крышка) прикручивается к передней 4 саморезами. Для доступа воздуха к внутренней части прибора в крышке сверху и снизу просверлено по 3 отверстия (по горизонтали) диаметром 4 мм и расстоянием между ними 3 мм. Отверстия расположены в правой части крышки на уровне расположения модулей с BME280 или BMP280 (если смотреть на рис. 6а и рис. 6б) таким образом, чтобы эти модули обдувались конвективным потоком воздуха наиболее эффективно.
Наибольший ток потребляет ЖКИ – 3 мкА. МК и BME280 в режиме сна потребляют 0,5 мкА и 0,1 мкА соответственно. Стабилизатор STLQ015M15R (DA1, см. схему подключения батарейки CR2477 из 1-й части статьи) потребляет ток не более 1 мкА (при максимальном выходном токе 150 мА). Если не учитывать потребление тока МК и BME280 в активном режиме, который длится не более 1 мс, что по сравнению с 5 минутами составляет около 0,00033%, и принять, что максимальное потребление тока прибора составляет 5 мкА в час, то за 10 лет это составит около 440 мА (0,44 А). Ёмкость батареек FR03 и CR2477 составляет 1 А·ч, т.е. в 2 раза больше. Однако срок службы батареек не превышает 10 лет (например, на батарейке FR03 написано, что срок её службы – до 2032 г.). Срок службы батарейки CR2477 также не превышает 10 лет. Отсюда следует, что прибор может непрерывно работать до 10 (а то и более) лет.
Для проверки правильности показаний устройства автор использовал достаточно «древний» прибор БМ 2, которому уже более 40 лет и который работает до сих пор (рис. 7). Правда, около 10 лет назад этот БМ 2 был откалиброван с помощью прецизионного анероида и прецизионного гигрометра. Как следует из сравнения показаний двух приборов, они показывают приблизительно одинаковое давление (746 мм рт. ст.) и обведённое синим кружком место расположения стрелки, показывающей давление БМ 2 (правее риски 745). Показания же влажности несколько различаются: стрелка, показывающая влажность у БМ 2 (жёлтый кружок), расположена правее риски в 50%, а настоящий прибор показывает влажность 48%. Что касается температуры, то оба прибора показывают близкие значения (23°C у настоящего прибора) и конец красной полоски подкрашенного спирта у градусника БМ 2 (зелёный кружок – около риски 24°C).
Для проверки показания прибора при отрицательных температурах он был помещён в морозилку холодильника примерно на час. Туда же был помещён уличный термометр (прибор БМ 2 для этого непригоден, так как показывает только положительную температуру). Как следует из сравнения показаний двух приборов (рис. 8), уличный термометр показал температуру около –13°C (конец стрелки, обведённый синим овалом, расположен около риски –13°C), а настоящий прибор –12°C. Другими словами, оба прибора показали близкие значения температуры. Какой прибор показывает точнее, неясно, так как насколько показания уличного термометра такого типа соответствуют действительности (его погрешность), неизвестно.
Применение МК EFM8SB10 и сопряжённого с ним по интерфейсу SPI MEMS-датчика BMЕ280, потребляющих доли мкА в состоянии сна (sleep-режим), совместно с 10-разрядным 7-сегментным ЖКИ H1313 позволили сконструировать простой и недорогой прибор, измеряющий атмосферное давление, влажность и температуру с обновлением информации раз в 5 минут. Сверхнизкое энергопотребление дало возможность непрерывной работы прибора в течение как минимум 10 лет при питании от двух мизинчиковых литиевых батареек FR03 или небольшой литиевой батарейки CR2477 таблеточного типа. Использование sleep-режима в микропотребляющем МК EFM8SB10 может найти применение и в других приложениях (автономных приборах), где требуется либо измерять какие-либо физические параметры в достаточно медленно протекающих процессах, либо вообще длительное время производить какие-либо действия через достаточно большие и строго фиксированные промежутки времени. При этом для питания подобных устройств вполне возможно использование компактных батареек небольшой ёмкости, способных обеспечить непрерывную работу таких устройств в течение нескольких лет.
Биоразлагаемые источники питания: необычные технические решения и перспективы
В статье приводятся сведения об инновационных разработках безопасных биоразлагаемых элементов питания как предтечи создания съедобных электронных модулей и блоков для медицинской диагностики организма человека, повышения его живучести и приумножения энергетического потенциала. Черпая вдохновение в свойствах живых организмов, ферментов, использующих окислительно-восстановительные кофакторы для биогенераторов, автор представляет описание перезаряжаемой съедобной АКБ из доступных материалов в проекции создания и других природных источников возобновляемой энергии. 13.09.2024 СЭ №7/2024 457 0 0Россия и все остальные: перспективное партнёрство в области современных электронных технологий, поставок и кадров
В последние годы ориентация сотрудничества российских разработчиков РЭА с международными коллегами и цепочки поставок компонент для РЭА меняются. В ответ на вызовы времени идёт поиск новых поставщиков и новых зарубежных партнёров, рынки которых перенасыщены инвестициями и в целом – заняты. В этой ситуации в поиске взаимовыгодных путей применяют креативные решения. В обзоре рассматриваются временные трудности и перспективы, с которыми сталкиваются разработчики в России, а также особенности и решения, влияющие на достойный выход из кризиса. 13.09.2024 СЭ №7/2024 383 0 0Биометрические системы, информационные киоски (БИК), турникеты и шлюзы с АСО. Обзор оборудования, компонентов и особенностей установки
Повсеместно биометрическую идентификацию рассматривают как перспективный инструмент для быстрых и безопасных операций почти универсального (в самых различных сферах) применения. Несколько лет назад появились биометрические информационные киоски, турникеты и шлюзы. Эти модели постоянно совершенствуются. О новинках, связанных с расширением функционала и защиты современного оборудования, ставших возможными профессиональными усилиями разработчиков РЭА и производителей оборудования, предлагаем ознакомиться в нашем обзоре. Основной акцент в формате импортозамещения современной электроники сделан на серийные модели отечественных производителей. 04.09.2024 СЭ №6/2024 589 0 0Аккумулятор 18650 для радиоканала
Аккумуляторы 18650 имеют рабочие напряжения 3…4,2 В, что не позволяет использовать их непосредственно в схемах с 5-вольтовым питанием. В статье предложено схемное решение формирования требуемого значения напряжения методом накопления импульсов самоиндукции от дросселя. С целью уменьшения потребления энергии формируется режим «сна» для используемого микроконтроллера 12F675 и радиомодуля HC12 в комбинации с отключением общего провода других потребителей энергии электронным ключом на полевом транзисторе. Приведена методика расчёта длительности работы на аккумуляторе в режиме «измерение-сон». 02.09.2024 СЭ №6/2024 402 0 0