Pull to refresh
115
0
Ревич Юрий @YRevich

инженер-электронщик, писатель-популяризатор

Send message

Термочувствительные кварцевые резонаторы: must have или must die?

Level of difficultyMedium
Reading time18 min
Views5.8K


Парадоксально, но факт: у термочувствительного кварцевого резонатора РКТ-206 зарубежных аналогов можно считать, что не существует (даже буквы в наименовании кириллические). Западными (точнее восточными, так как речь идет про Seiko-Epson), как их модно стало называть, «партнерами» выпускались аналогичные термочувствительные кварцы, даже с похожим названием HTS-206. Но сейчас, как можете сами убедиться по этой ссылке, их выпуск прекращен «из-за уменьшения объема продаж». Изобилие, представленное на картинке (встреченной в английской Википедии), давно уже сошло на нет. Вроде бы кто-то из европейцев все еще выпускает термокварцы на частоты около 5 МГц, но на данный момент мне их разыскать не удалось.

В статье мы попробуем сначала разобраться, в чем достоинства и недостатки кварцевых датчиков температуры сравнительно с другими способами, а затем предпримем попытку построить датчик на основе термочувствительного кварца. Это все еще может быть практически целесообразным занятием, так как РКТ-206 легко приобрести и это не слишком дорого. По результатам сами можете прикинуть, насколько это целесообразно. Статья получилась неожиданно объемная, но без досконального копания в мелочах тему рассмотреть не получается.
Читать дальше →

Малопотребляющий датчик с передачей данных по радиоканалу

Level of difficultyMedium
Reading time14 min
Views17K
Несколько лет назад я опубликовал статью о простейших приемниках и передатчиках для обмена данными на частоте 433 МГц (на рисунке внизу левая пара). Публикация была вызвана в основном тем фактом, что абсолютно во всех источниках в интернете приемник подключался неграмотно, и это значительно снижало возможности удобного и дешевого способа связи. Приемник MX-RM-5V (известен также под названием XD-RF-5V) представляет собой дешевую регенеративную схему, которая крайне чувствительна к помехам и капризна к настройке, что хорошо известно радиолюбителям, но почему-то совершенно темный лес для остального мира, включая даже опытных ардуинщиков. Поэтому такой приемник, как минимум, следует включать с отдельным хорошо зафильтрованным аналоговым стабилизатором, что сразу повышает дальность в разы.



Но оказалось, что не все обретенные таким образом пары работают с надлежащей дальностью, а некоторые приемники приходится вовсе отбраковывать (особенно, если их приобретали оптом на AliExpress). Потому здесь я хочу поговорить об проблемах, связанных с другими альтернативами этим модулям, а также указать на более простое и надежное решение, к которому пришел в результате поисков.
Читать дальше →

HYT939 и калибровка датчиков температуры-влажности

Reading time16 min
Views7.5K

Фото с сайта market.yandex.ru

Индивидуальная калибровка ширпотребовских датчиков температуры-влажности, как показал многолетний опыт, — абсолютно необходимая операция. Для почти всех имеющихся в продаже типов разброс по температуре в ±2 градуса и ±5% влажности – не исключение, а норма. И очень некрасиво, когда уличный датчик показывает +2° при замерзших лужах, а поставленный рядом с комнатным собратом демонстрирует влажность на 10% выше. И это средняя норма — попадаются экземпляры с куда большим отклонением, как вы увидите, прочитав эту статью до конца. В принципе ±5% отклонения влажности — вполне допустимая величина (ГОСТ на измерения микроклимата в помещениях допускает такой разброс), но согласитесь, что два датчика рядом должны все-таки показывать близкие величины, а на практике случай, когда родственные датчики впадают в противоположные крайние отклонения — совсем не редкость.

Тема достоверности данных с массовых датчиков становится все острее — существует уже немало сервисов, предоставляющих общий доступ к частным измерительным системам параметров окружающей среды (вот самый, вероятно, известный). Даже звучный термин появился — «гражданская наука» (citizen science)!

Если температуру калибровать относительно несложно (достаточно точные лабораторные термометры не представляют дефицита), то влажность представляет проблему, почти непреодолимую в домашних условиях. В конце концов я решился на покупку дорогущего (в европейских каталогах более $100) датчика швейцарской фирмы iST под непроизносимым для русскоязычного пользователя названием HYT939. Швейцарцы декларирует «из коробки» отклонение ±0.2° по температуре (в диапазоне от 0 °C до +60 °C) и ±1.8 % по влажности (в диапазоне от 0% до 90%). Конечно, употреблять его при такой дороговизне можно только в качестве образцового, но и это уже много: по крайней мере есть с чем сравнивать без боязни промахнуться «с точностью до наоборот».
Читать дальше →

Незаслуженно забытая классика: изучаем возможности ATmega324PB

Level of difficultyMedium
Reading time17 min
Views9.7K
Около 15-16-го года, как раз когда Atmel перешла в руки Microchip, я рылся в параметрических таблицах AVR на новом сайте, пытаясь разобраться, «что мы обрели и что потеряли». И тогда обратил внимание на продукт с крайне неудачным, на мой взгляд, названием: ATmega328PB. Почти неотличимый по названию от всем знакомого по Arduino ATmega328P, он, однако, содержит намного больше «фарша»: по паре портов UART, SPI, TWI, два 8-битных и аж три 16-битных таймера; причем все это, в отличие от монстрообразного ATmega2560, в тех же габаритах и с тем же количеством выводов.

Я тогда еще подумал, что хорошо бы кто-нибудь догадался выпустить на этом деле что-то ардуиноподобное. В Arduino всегда остро не хватало лишнего «железного» UART: родной занят общением с компом и загрузкой программ, а SoftwareSerial, как я убедился на собственном опыте, выручает далеко не всегда.

Но прошло почти десять лет, за это время развитие и профессионального и DIY-сектора свернуло в более производительную и удобную сторону 32-разрядных платформ, а на ATmega328PB так ничего и не появилось — казалось, он вообще остался незамеченным (UPD 03.05.23: тут мне подсказали, что я неправ: см. ссылку ). И вот на этом фоне мне вдруг совершенно неожиданно предложили попробовать отладочную плату с контроллером, о котором я ничего ранее не знал: ATmega324PB. По названию можно догадаться, что это какой-то аналог упомянутого ATmega328PB — старая модель с увеличенным количеством «фарша». И все оказалось даже лучше, чем можно было ожидать.
Читать дальше →

LGT8F328P: импортозамещение по-китайски (окончание)

Reading time13 min
Views19K
В первой части рассказа о контроллере LGT8F328P китайской фирмы Logic Green рассказывалось об этом контроллере, как замене классического Arduino, а также об использовании в Arduino-среде некоторых его расширенных возможностей. В этой части пойдет речь о программировании LGT8F328P на самом низком уровне: на AVR-ассемблере. Это лучше позволит понять его устройство, отличия от AVR и тонкости программирования тех или иных составляющих.


Для написания и загрузки ассемблерных программ, как в AVR, так и в LGT8F328P необходимо обзавестись некоторыми специальными инструментами. Здесь не очень важно, какую именно среду использовать (любую из привычных вам, если вы справитесь с интеграцией в нее LGT8F328P), лишь бы она умела производить hex-файлы.
Читать дальше →

LGT8F328P: импортозамещение по-китайски (начало)

Reading time19 min
Views63K
Китайская фирма Logic Green еще примерно в 2015 году взялась за выпуск усовершенствованных аналогов линейки ATmega88-328. В настоящее время выпущены контроллеры LGT8F88P/168P/328P, старший позиционируется для производства Arduino-аналогов. В народе их называют «клонами Arduino», что неверно: ни сами контроллеры, ни платы на их основе клонами не являются, так как существенно отличаются от оригинала.

Однако, LGT8F328P и платы на его основе, если научиться правильно с ними обращаться, действительно могут заменить Arduino в большинстве применений, причем это потребует не очень большой возни. А если приложить усилия, то вы обнаружите, что LGT8F328P даже имеет довольно много преимуществ. Но приготовьтесь к трудностям: импортозамещение по-китайски означает, что большую часть времени вам придется потратить на угадывание «а что они тут имели в виду».

В этой статье не ставится задача показать все преимущества и особенности LGT8F328P. Мы далее попробуем только разобраться, как подключать некоторые более-менее распространенные платы, выполнять какие-то стандартные задачи, а также как использовать некоторые расширенные возможности LGT8F328P.

Так как статья получилась объемная, она разбита на две части: первая часть о простом программировании в Arduino IDE и вторая о программировании на низком уровне с обсуждением некоторых особенностей внутреннего устройства LGT8F328P.
Читать дальше →

Управление светодиодными индикаторами с помощью регистров сдвига с токовым выходом

Reading time19 min
Views29K

Речь в этой статье пойдет о цифровых или цифробуквенных дисплеях для индикации различных показаний, которые часто так и называют индикаторами. Здесь мы остановимся только на одной их разновидности — светодиодных (LED) семисегментнтных индикаторах. На мой взгляд, одна из самых древних разновидностей дисплеев незаслуженно отставлена на периферию разработок, хотя по многим параметрам (контрасту, читаемости, минимальной неиспользуемой площади окна, надежности и долговечности, наконец) LED-семисегментники дают фору любым другим разновидностям, включая ближайших конкурентов в виде OLED.

Читать далее

Трансформаторные датчики тока

Reading time19 min
Views22K
Представьте себе, что у вас встала задача измерения тока потребления в бытовой сети 220 В, 50 Гц. Причем главное ваше требование — невмешательство в существующую проводку. Мое непоколебимое мнение — в питающей ваш дом линии должно быть как можно меньше всякого, потому что каждый лишний агрегат есть потенциальная точка отказа. Если не сам по себе (как УЗО в старых загородных домах, где трудно избежать утечек), то как минимум из-за дополнительных контактных соединений, и хорошо, если эти соединения сделаны по стандартам, а не из оцинкованной стали в контакте с медью.

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

Иными словами, в качестве решения задачи измерения тока в бытовой сети отпадает все, устанавливаемое в разрыв проводки — и фирменное и самодельное. Традиционные шунты понятно почему (ко всему остальному они еще и пожароопасны), но не годятся и измерители на основе датчиков Холла (вроде популярных ACS7хх). Они требуют точной ориентации относительно проводника, а, значит, все равно устанавливаются в разрыв провода.

Остаются трансформаторы тока. Вот их сейчас и рассмотрим с упором на самостоятельное изготовление: коли мы не вмешиваемся в проводку, ничего потенциально опасного мы соорудить не можем. Но сможем ли сделать удобнее и дешевле покупных?
Читать дальше →

Приемопередатчик HC-12 и датчик температуры DS18b20 на AVR-ассемблере

Reading time26 min
Views20K
По мотивам содержания моей книжки «Программирование микроконтроллеров AVR: от Arduino к ассемблеру» была опубликована статья о подключении дисплеев к AVR с применением только «чистого» ассемблера. Под «чистым» имеется в виду наличие только простейшего редактора кода и программатора, и отсутствие необходимости во всяких навороченных инструментах вроде Atmel Studio. В конце я пообещал, что изложенный там материал продолжится изложением примеров, затронутых в книжке лишь вскользь или не вошедших в нее вовсе.

Одним из таких моментов является беспроводная связь между устройствами, вторым — цифровые датчики (в книжке большей частью изложено обращение лишь с аналоговыми). По нижеизлагаемым причинам для связи я остановился на модуле HC-12, а в качестве цифрового датчика использовал одну из бессмертных разработок «всех времен и народов» — датчик DS18b20.

Для упрощения отладки проекта его составляющие сначала моделировались на Arduino, и затем воспроизводились на ассемблере на более адекватной элементной базе.
Читать дальше →

Управление LCD и OLED дисплеями на AVR-ассемблере

Reading time27 min
Views18K
Сразу предупреждаю, что не собираюсь разводить холивары насчет преимуществ AVR-ассемблера перед С/Arduino, или даже перед BASCOM-AVR и MikroPascal for AVR — каждый инструмент уместен в своей области. У ассемблерного подхода в ряде случаев имеются свои преимущества — в основном это небольшие проекты, а также системы, в которых требуется точный расчет времени. Немаловажное достоинство этого подхода — простота необходимого инструментария. Но один из крупнейших недостатков в сравнении с языками высокого уровня — отсутствие готовых библиотек хотя бы для базовых задач. Для того же Arduino они имеются на все случаи жизни, но, к сожалению, совмещать их с ассемблером оказывается сложно и потому нецелесообразно — проще уж все и сделать с помощью самого Arduino. Поэтому некоторое время назад я задался целью создать более-менее законченную экосистему для проектов на основе AVR-контроллеров с программированием на чистом ассемблере.

Основные результаты по созданию такой экосистемы изложены в книжке под названием «Программирование микроконтроллеров AVR: от Arduino к ассемблеру». Там же вы найдете подробное изложение целесообразности и границ применимости изложенного подхода. Руководствуясь приведенными в книге примерами, можно строить вполне законченные проекты с минимальной затратой сил и средств, и получить в результате девайс, ласкающий взор своей компактностью, экономичностью и скоростью работы. В этой статье я привожу один из примеров обращения с современными периферийными устройствами с помощью ассемблера, который работает лучше, быстрее и стабильнее, чем его аналог на Arduino.
Читать дальше →

Еще раз о передатчиках и приемниках 433 МГц

Reading time10 min
Views212K
Простейший комплект из приемника и передатчика ISM-диапазона 433 МГц завоевал заслуженную популярность в среде любителей электроники. Комплекты дешевы (даже в «Чипе-Дипе» их можно купить рублей за 300, а на Ali, говорят, вообще за полтинник), просты и надежны. Кроме того (о чем вы, возможно, не подозреваете), это самый дальнодействующий и проникающий способ беспроводного обмена данными — сигнал на частоте 433 МГц куда лучше проходит через препятствия и действует на более далеком расстоянии, чем в популярном диапазоне 2,4 ГГц (433 МГц полностью задерживаются стенкой в полметра бетона, а Wi-Fi умирает уже на 10 сантиметрах). Допускаю, что недавно появившиеся модули MBee-868, будучи снабженными соответствующей (направленной) антенной, «стреляют» дальше, но они как минимум на порядок дороже, сложнее в подключении, требуют управления энергосбережением и предварительной настройки. И вдобавок частота 868 МГц вдвое хуже проходит через препятствия (хотя, конечно, несравненно лучше частоты 2,4 ГГц).



О приемниках-передатчиках 433 МГц написано очень много (в том числе и на хабре, конечно). Однако, правильно включать в схему этот комплект по какой-то странной причине, кажется, не умеет никто. Когда я в который раз прочел вот тут, что комплект «принимал на 8-ми метрах в пределах прямой видимости, 9-ый метр осилить не удалось», мое терпение лопнуло. Какие еще 8 метров?! В 40-50 я бы поверил, хотя в реальности, наверное, дальность еще больше.
Читать дальше →

Опыт использования ЖК-дисплеев на основе продукции МЭЛТ

Reading time18 min
Views16K
Эта статья посвящена увлекательному приключенческому квесту, который мне пришлось пройти в процессе создания обновленного внешнего датчика для метеостанции, описанной вот в этой статье полтора года назад. По опыту эксплуатации предыдущей версии очень хотелось создать датчик с контрольным дисплеем, чтобы можно было без проблем периодически проверять (и поверять) наиболее капризный компонент станции — датчик скорости ветра. Приключения начались тогда, когда я стал подбирать для этой цели дисплей и по ряду причин, о которых далее, остановился на продукции родного МЭЛТ. Но прежде чем я перейду к описанию приемов нетрадиционного секса способов справиться с выбранными мной произведениями этой фирмы, стоит кратко остановиться на главной причине всей этой грандиозной модернизации, которую я затеял.
Читать дальше →

Метод векторного осреднения при измерении направления ветра

Reading time6 min
Views8.2K
Год назад мной была описана метеостанция с измерителем направления и скорости ветра. По опыту двух сезонов эксплуатации в нее были внесены некоторые изменения и улучшения, которые частично описаны там же в дополнениях к основному тексту.

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

Русификация библиотеки LiquidCrystal_I2C для OLED-дисплеев Winstar

Reading time5 min
Views37K
Для строчных дисплеев Winstar очень соблазнительно сократить число управляющих соединений, которых даже при четырехпроводном включении получается не меньше шести (R/W можно не подключать, см. вот эту публикацию автора). Говорят (в том числе и сами винстары, см. оф. сайт), что контроллер WS0010 может управляться по SPI (а некоторые даже и по I2C!), но инструкций в документации на эту тему упорно не помещают, и как с этим управляться — непонятно. К тому же SPI помогает не сильно — вместо шести соединений получаем четыре привязанных к дисплею, потому что еще для каких-то целей SPI в любительской практике употребляют нечасто. Потому самое удобное решение в плане сокращения числа соединений для стандартных плат Arduino — использовать так называемый расширитель (экспандер) портов на основе шины I2C под названием PCF8574. Это позволяет сократить число необходимых соединений до двух (не считая питания), причем на основе выводов стандартного порта TWI, что не мешает подключать к нему же различные датчики, часы и т.п.
Читать дальше →

Станция для измерения скорости и направления ветра

Reading time29 min
Views51K
Обычная бытовая фирменная или самодельная метеостанция измеряет две температуры-влажности (в комнате и на улице), атмосферное давление и дополнительно имеет часы с календарем. Однако, настоящая метеостанция имеет еще много всего — датчик солнечной радиации, измеритель осадков и всякое подобное, что, в общем, требуется только для профессиональных нужд, за одним исключением. Измеритель параметров ветра (скорости, и, главное, направления) — очень полезное дополнение для загородного дома. Причем фирменные датчики ветра довольно дороги даже на Али-Бабе, и имеет смысл присмотреться к самодельным решениям.
Читать дальше →

Графический и текстовый режим дисплеев Winstar

Reading time11 min
Views30K
Графические дисплеи, в том числе и типа OLED, больше всего представленные на нашем рынке фирмой Winstar, имеют куда меньший спрос по отношению к строчным и публикаций по их применению также намного меньше. Между тем, именно графические OLED-дисплеи из-за отсутствия привязки к таблицам шрифтов предопределенного рисунка, предоставляют наилучший способ для получения эргономичных индикаторных устройств для самых разных надобностей. Причем оказалось, что графический режим в контроллере WS0010 иницируется проще и работает стабильнее, чем текстовый.

Прежде чем перейти к рассмотрению собственно графических дисплеев, рассмотрим вечнозеленую проблему с проблемами включения текстового режима контроллера WS0010, которая получила неожиданное и очевидное решение (ах, где были мои глаза!).
Читать дальше →

Оценка методов измерения низких частот на Arduino

Reading time12 min
Views25K
Задача, собственно, возникла из необходимости считывать частоту вращения обтюратора с оптическим датчиком, установленного на самодельном чашечном анемометре. Сколько там дырок не сверли по окружности, но когда ветер слабенький, частота с выхода датчика будет составлять единицы герц (особенно, если датчик хорошо отбалансирован и облегчен для снижения порога трогания по максимуму).

Озадачившись таким вопросом, я первым делом выяснил, что ничего хорошего стандартные библиотеки в этом плане не предлагают. Есть, оно конечно, FreqMeasure и FreqPeriod, но они мне не понравились с первого взгляда: излишне усложненные и к тому же с почти полностью отсутствующей документацией. В довершение всего прилагаемые к ним примеры у меня просто не заработали с первого раза (я догадываюсь, почему, но возиться не стал — неинтересно копаться в чужих ляпах).

Пришлось делать самому. Малые частоты нужно измерять через период, потому идеальный конечный результат — нечто вроде функции pulseIn(), только измеряющей не длительность импульса, а период. Получилось несколько вариантов, которые и предлагаю аудитории в надежде, что кому-нибудь они пригодятся. Для каждого варианта определялись границы применимости и рассматривались достоинства и недостатки в сравнении друг с другом.
Читать дальше →

О книге Саймона Монка «Программируем Arduino. Профессиональная работа со скетчами»

Reading time6 min
Views15K
По сути это комментарий к презентации книги, но получилось довольно многа букв, потому пришлось выделить в отдельную статью.

Книга довольно интересная и может быть рекомендована всем, кто, так сказать, «продолжает» работу с Arduino. Совсем начинающим она довольно бесполезна, а вот для расширения представления о том, как со всем этим хозяйством обращаться, подходит вполне. Но целевая аудитория не настолько разбирается в предмете, чтобы воспринять критично некоторые утверждения автора и расшифровать многочисленные ляпы переводчика в сговоре с редакторами. Причем автору промахи простительнее, так как он явно программист, а не электронщик, и не может разбираться в предмете досконально. А вот редакторы обязаны были такие места прокомментировать.

Все написанное далее не имеет цели как-то задеть автора и издательство, которые сделали хорошее дело. Я пишу это с надеждой облегчить жизнь читателю, которому посчастливится наткнуться на эти мои измышлизмы. Книга, повторяю, полезная и содержательная, и отдельные промахи не меняют этого моего отношения.
Читать дальше →

О подключении и работе с текстовыми OLED-дисплеями Winstar

Reading time9 min
Views44K
Строчные (или текстовые) дисплеи предназначены для выдачи текстовой информации в виде строк. Они бывают нескольких типов (прежде всего, ЖК или самосветящиеся OLED), и обычно в их маркировке присутствуют цифры 1202, 1602, 1204 или похожие, указывающие на количество строк (в примерах 2 или 4) и знаков в каждой строке (12 и 16). Есть и однострочные дисплеи такого типа, но мы в дальнейшем изложении ориентируемся на более употребляемые двухстрочные.

Определяющая часть таких дисплеев совместима по управлению с контроллером HD44780 (фирма Hitachi). Самые популярные (по крайней мере, в нашей стране) дисплеи этой разновидности выпускает фирма Winstar. Причем ЖК-разновидности (название начинается с букв WH, например, WH1602) один в один совместимы с системой команд HD44780, а OLED-типы (название начинается с WEH, например, WEH001602) имеют усовершенствованный контроллер WS0010. К сожалению, или к счастью — сейчас будем разбираться.
Читать дальше →

Русификация библиотеки openGLCD для Arduino

Reading time5 min
Views20K
Написание русскоязычного текста на графических дисплеях с контролером ks0108 или его аналогами все еще представляет существенные трудности. Библиотека openGLCD, которую рекомендуют официальные сайты Arduino, в оригинальной комплектации последней на данный момент версии не содержит никаких кириллических шрифтов, кроме шрифта cp437font8x8. На практике он малопригоден, потому что в русскоязычной части поддерживает кодировку Win-1251. Следовательно, чтобы выводить символы таким шрифтом, их нужно либо вставлять в текст восьмеричными или шестнадцатеричными кодами (и при этом остаются неясности со строчной буквой «я», как указывает в комментарии сам создатель шрифта), либо все равно писать отдельную функцию перекодировки, как это сделал arduinec для библиотеки Adafruit-GFX.

Кроме всего прочего, cp437font8x8 крупноват для экранчиков 128х64 точки. Оптимальным размером шрифта для вспомогательных надписей на таком дисплее остается System5x7. Мы здесь сосредоточимся на русификации именно системного шрифта, хотя читатель может по этому образцу самостоятельно русифицировать и любой другой шрифт (особенно, если у него экран побольше).

А в чем проблема?

Читать дальше →

Information

Rating
Does not participate
Location
Жуковский, Москва и Московская обл., Россия
Date of birth
Registered
Activity