24 March 2015

Портативная походная метеостанция MiniBTH

DIY
Добрый день. В этой публикации расскажу о портативной походной метеостанции, которую я давно задумал и недавно реализовал в железе.

image

Я часто езжу на природу, как в длинные походы, так и в короткие вылазки на выходные. Инструментальное наблюдение с одной стороны просто позволит удовлетворить любопытство, ответив на вопрос «Теплее ли сегодня чем вчера?», или «Насколько холодно было ночью?», с другой стороны, наличие даже примитивной метеорологической информации может помочь предсказать улучшение или ухудшение погоды или выпадение тумана. Отсюда возникает желание создать автономный прибор для измерения, логгирования и отображения метеоинформации, пригодный для походного использования, и удовлетворяющий следующим требованиям:
  • Герметичное ударозащищенное исполнение корпуса;
  • Постоянное отображение реального времени и текущих метеоданных: давления, температуры, влажности, а также истории их изменения в течение последних несколько часов и нескольких дней на экране;
  • Читаемый на ярком солнце экран;
  • Работа прибора в течение всего похода без подзарядки или замены элементов питания или подзарядки;
  • Желательно сохранение истории метеоданных в энергонезависимой памяти.

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

Определение облика будущего прибора


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

Экран

Для предложенного прибора цветной экран, на мой взгляд, предпочтительнее, так как на цветном экране удобно отображать несколько графиков на одной координатной сетке, в то время как на монохромном экране такая картина будет сложна для восприятия. Учитывая требования видимости на солнце, постоянной индикации, и умеренного энергопотребления выбор однозначно падает на трансфлективный TFT дисплей. Основная проблема тут достать доступный дисплей. Беглый поиск показал, что заявленные в интернет магазинах трансфлективные экраны недоступны, доступные на alibaba варианты имеют неудобный RGB интерфейс, и единственный доступный вариант – это экран от старого доброго телефона Siemens CX/M/S65. Конечно, не очень хорошо рассчитывать на компонент с разборки, но для мелкосерийного DIY проекта подойдет. К достоинствам тут стоит отнести тот факт, что экран управляется по SPI (будет проще разводить плату). Несмотря на то, что экран от телефона, доступна информация по управлению этим экраном от Cristian Kranz (на момент написания статьи сайт Кристиана уже полгода как лежит).

Датчики

Для начала стоит определиться с набором измеримых параметров и датчиков для них. Три безусловно требуемых параметра – давление, температура, и влажность. Можно еще добавить датчик освещенности.

Теперь определим критерии выбора датчиков. Датчики должны быть малого размера, точными и по возможности не требовать усложнения схемы прибора в виду особенностей обвязки конкретного датчика. В идеале чтобы все датчики были цифровые и работали от одного напряжения. Еще желательно, чтобы датчики давления и влажности, которые имеют непосредственный контакт с атмосферой, были защищены от грязи и пыли.

Датчик давления. По опыту работы с квадрокоптерами я сталкивался с датчиками BPM085 и MS5611, оба с интерфейсом I2C, и встроенной термокомпенсацией. Из них второй оказался более точным и стабильным, при небольшом усреднении разрешает 1Па давления, что соответствует примерно 10см высоты. Его я изначально и выбрал для прибора, а несколько позже решил использовать защищенную версию этого датчика, именуемую MS5803.

Датчик влажности. Тут есть множество вариантов, и аналоговых, и цифровых. Мне понравился I2С датчики семейства SHT2x от sensiron. Маленький, точный, работает в том же диапазоне напряжений, что и датчик давления (1.8В-3.6В), и меряет не только влажность, но и температуру. Вдобавок, к нему выпускается грязезащитный колпачок.

Датчик температуры. Два вышеперечисленных датчика уже меряют температуру, отдельный датчик не нужен.

Датчик освещенности. Тут желательно поставить датчик с очень широким диапазоном измерений. Чтобы измерял от освещенности прямым солнцем (100тыс люкс) и вниз до глубоких сумерек и лунной ночи (0.2люкс), а лучше еще меньше. Причем датчик желательно с заводской калибровкой, потому что мне калибровать нечем. Есть варианты с фотодиодами, но требуют дополнительной обвязки, хотя потенциально могут иметь большой диапазон измерений. Поэтому мое внимание привлекла серия интегрированных I2C датчиков max4400x. В серии несколько похожих сенсоров, некоторые мультиспектральные, некоторые имеют ИК излучатель и могут работать как датчик приближения. Моим требованиям по диапазону измерений удовлетворяет один, max44009. Впрочем, возможен вариант установки двух датчиков, монохромного max44009 для большой освещенности, и RGB датчика max44008 для малой. А применение затемняющего фильтра может расширить рабочий диапазон max44008 до требуемых 100тыс. люкс. Простой вариант с max44009 выберем как основной, а max44008 рассмотрим как возможное дополнение.

Процессор и обвязка

С учетом того, что экран и все датчики работают от 3-3.3 вольт, да и SD карты работают от 3.3в. целесообразно использовать процессор, работающий от 3-3.3в. Я выбрал привычный мне AVR. Отметим, что выбор AVR позволяет применять Arduino IDE для сборки проекта и использовать библиотеки под Arduino. В этом проекте особо актуально использование библиотеки для работы с SD картой. Хотя в принципе ардуиновские библиотеки можно применять и в проектах, собираемых в AVR Studio, но это требует некоторых хитростей. Забегая вперед, скажу, что единственным плюсом от использования Arduino оказалась заливка программы через UART.

По первоначальным оценкам для проекта вполне достаточно 32кб ПЗУ и 2кб ОЗУ (около 600байт на работу с SD, и практически все остальное – история измерений) и, поэтому я выбрал процессор ATmega328p. Напряжение в 3в диктует тактовую частоту не выше 8МГц. Проект я начал писать под Arduino IDE. При сборке под этот процессор и напряжение просто выбирается target Arduino Pro mini 3.3v. Поскольку для реализации всех функций прибора нужны часы реального времени, а ВЧ кварцы как правило не дают достаточной стабильности частоты, необходимо либо использовать часовый кварц с процессором (в виду особенностей, ATmega328p при этом будет тактироваться от RC осциллятора) либо использовать отдельный чип часов реального времени. В виду последнего обстоятельства я решил использовать отдельный I2С чип с часов календарем DS1337. Дополнительным аргументом в пользу отдельного чипа с RTC была возможность реализации смены батареек без потери настроек часов. Однако впоследствии был выбран вариант встроенных батарей устройства.

Кнопки управления

Интерфейс прибора хоть и планируется простой, но кнопки для переключения режимов индикации, установки времени и поправки по высоте все-таки нужны. Поскольку механические кнопки трудно спрятать в гермокорупс, (для этого в корпусе нужно делать отверстия и в них герметично ставить гибкий уплотнитель, или вводить толкатель через уплотнитель) было принято решение сделать емкостные сенсорные кнопки управления. При площади сенсорной площадки около 1кв.см, толщине стенки 2-3мм с диэлектрической проницаемостью около 2-4 (типичная для пластиков) необходимо сделать устройство, надежно регистрирующее изменение емкости на доли пикофарад. Такая задача имеет несколько решений. Первый вариант — поставить специализированный чип – сенсорный контроллер. Второй — сделать сенсорные кнопки на парах процессорных ног, просто измеряя время зарядки входной емкости входной линии с контактной площадкой через мегаомный резистор от выходной линии. Метод описан на нескольких ресурсах, существуют соответствующие библиотеки. Однако поскольку хочется создать чувствительный и помехозащищенный сенсор, я выбрал третий вариант – сенсор на фазовом детекторе. Идея простая. На вход фазового детектора подаются два ВЧ сигнала. Один непосредственно от источника, а второй через RC цепь, в которой в качестве емкости используется сенсорная площадка (и естественно, паразитная емкость входа фазового детектора тоже). Сигнал с выхода фазового детектора усредняется и измеряется с помощью АЦП. Такая схема будет куда менее чувствительна к внешним наводкам, по крайней мере, на частотах отличных от частоты пробного сигнала. В качестве источника ВЧ сигнала можно взять просто тактовый сигнал процессора. Для большей помехозащищенности можно еще ввести фазо-кодовую модуляцию этого сигнала, однако, судя по опыту эксплуатации, это излишество.

Конструкция корпуса

Один из самых сложных вопросов для DIY проектов – создания герметичного корпуса. При этом конструкция корпуса во многом определяется доступной технологической базой. Единственное легко доступное для меня средство изготовления гермокорпуса это 3-координатный фрезерный станок с ЧПУ, пригодный для фрезеровки пластиков, дерева и мягких металлов. Получается, что корпус необходимо собрать из фрезерованных деталей из пластмасс и алюминия. Остается вопрос выбора уплотнителей. Специальные уплотнительные резинки, да еще и требуемой длинны найти не удалось, но в качестве герметизирующих уплотнений можно использовать магнитофонные пассики. Эта технология уже была опробована ранее на других корпусах. В итоге корпус будет состоять из центрального блока с канавками для уплотнений, и передней и задней пластиковых крышек, фиксируемых прижимными рамами. Остается вопрос выбора материалов. Центральный блок целесообразно изготовить из капралона. В этом пластике можно надежно нарезать резьбы, как в металле, он не хрупкий и износостойкий. Передняя крышка должна быть прозрачной, и желательно не хрупкой. Из доступных вариантов прозрачных пластиков я выбрал поликарбонат. К недостаткам этого материала можно отнести не очень высокую прозрачность по сравнению с полиметилметакрилатом. Зато он пластичный и не подвержен растрескиванию. К задней стенке требований по прозрачности нет, в итоге я остановился на варианте стеклотекстолита. Прижимные рамы должны обладать достаточной жесткостью чтобы придавливать резинку по всей длине. Кроме того именно на них будет приходится большая часть возможных ударов корпуса об окружающие предметы. Поэтому было принято решение сделать их из алюминиевого сплава.

Размещение датчиков

Датчики давления температуры и влажности должны сообщаться с атмосферой, иметь с ней хороший тепловой контакт. Кроме того, они должны быть относительно теплоизолированными от корпуса, чтобы уменьшить время реакции на изменение температуры. При этом желательно их разместить так, чтобы защитить от возможных ударов и попадания грязи. Поэтому перспективной выглядит схема размещения датчиков на T-образном выступе в углублении корпуса.

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

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

Источник питания

Тут выбор невелик, либо литий-ионные аккумуляторы, либо металл-гидридные. Металл гидридные чуть лучше работают при низких температурах, и на этом преимущества заканчиваются. По энергоемкости литиевые – выгодней. В итоге я выбрал литий-ионные, хотя этот выбор был сделан на достаточно поздней стадии реализации проекта. Для себя я определил такие требования по времени автономной работы:
  • 9 дней (1 неделя+2дня) зимой (температура -10..-20);
  • 15 дней летом в горах (температура ненадолго падает ниже 0);
  • 25 дней в теплое время года (температура не падает ниже 0).

Исходя из этих требований будет определяться емкость аккумулятора.

Разработка электронной части


Согласно описанным выше решениям была разработана схема прибора.

принципиальная схема прибора

Микросхема 78HC03 стабилизирует напряжение питания для контроллера и датчиков. На микросхемах 74AC00 и 74AC86 построен контроллер сенсорных кнопок. Первая предназначена для включения/выключения подачи 8мгц сигнала на сенсорные пластины, на второй собраны 3 фазовых детектора. Преобразователь напряжения для подсветки выполнен на микросхеме DC/DC преобразователя c ШИМ управлением LM2733x и питается от батарей, минуя стабилизатор, ОС выполнена по току светодиодов. Рабочее напряжение на выходе составляет около 12в (в подсветке экрана 4 светодиода, соединенных последовательно). Для защиты контроллера в случае снятия экрана с платы в качестве защитной нагрузки работает стабилитрон на 15в. Ток подсветки задается резистором R9, падение напряжения на котором равно 1.25в. Контроллер max1879 управляет зарядом батарей, для измерения тока заряда используется операционный усилитель TS321 с обвязкой. Часы реального времени выполнены на микросхеме DS1337. При разработке схемы и платы была предусмотрена возможность для установки резервной батареи питания для часов. Однако при использовании несъемных аккумуляторов батарея не нужна.

Беспроводная зарядка

Реализация беспроводной зарядки оказалась одной из самых недооцененных по сложности задач в данном приборе. Из соображений удобства компоновки деталей в корпусе я выбрал Ш — образный сердечник Ш7x7. Сердечник большего размера привел бы к увеличению и без того не маленького корпуса, хотя размер чем больше тем лучше, чтобы у двух половинок при 1.5мм зазоре (толщина задней стенки) как можно меньше рассеивался поток. Однако даже при таком размере сердечника и толщине зазора рассеяния потока существенно, поэтому для более эффективной передачи энергии пришлось использовать явление резонанса. Отметим, что разъемный трансформатор может работать в нескольких режимах:

а) Прибор лежит на зарядной подставке, аккумулятор заряжается, трансформатор нагружен нагрузкой с крутой ВАХ.
б) Прибор лежит на зарядной подставке, аккумулятор заряжен или заряжается в ШИМ режиме, трансформатор не нагружен.
в) Прибор снят с зарядной подставки, но первичная обмотка трансформатора подключена к своему источнику питания.
г) Промежуточное положение частей трансформатора, кратковременно в момент установки и снятия прибора.

Необходимо чтобы зарядное устройство могло работать во всех четырех состояниях без перегрева обмоток и перегрузки ключей. Тут есть два варианта – либо делать сложный драйвер с автоподстройкой частоты и отключением при отсутствии нагрузки либо подбором параметров элементов. Делать из вторичной обмотки резонансный контур нецелесообразно, так как в состоянии б), когда трансформатор не нагружен, на вторичной обмотке будет появляться большое напряжение, которое легко может превысить максимально допустимое напряжение холостого хода для max1879 и ключа. Поэтому обойдемся резонансом только в цепи первичной обмотки. Мне удалось достичь неплохих параметров зарядки с использованием очень простой схемы питания.

схема зарядного устройства

Первичная обмотка подключена к источнику переменного напряжения состоящего из генератора-драйвера IR2153 и двух ключей, питаемых от 12В. Последовательно с первичной обмоткой включен конденсатор C7, они образуют колебательный контур. Параллельно первичной обмотке включена неоновая лампа (в моем случае пара встречно-последовательно соединенных ламп) с напряжением зажигания около 160В для защиты от перегрузок. Частота генератора (около 100кГц) задается построечным резистором R1 и настроена так, что в режиме a) контур работает очень близко к резонансу. При этом амплитудное значение напряжения на первичной обмотке достигает 100-110в, а средний ток вторичной обмотки (ток заряда аккумулятора – около 600ма). В режиме б), когда нагрузка отключается контур выходит из резонанса (резонансная частота контура при ненагруженной вторичной обмотке ниже частоты генератора), напряжение на первичной обмотке падает ниже 60В, и соответственно бесполезные потери в феррите тоже падают, а амплитудное значение напряжения вторичной обмотки не превышает 14В. В режиме в) индуктивность «половинки» трансформатора меньше, резонансная частота контура оказывается выше частоты генератора, напряжение на первичной обмотке падает, и потери в феррите невелики. В режиме г) ненагруженный контур первичной обмотки может попасть в резонанс, и для этого в качестве «защитной» нагрузки используется неоновая лампа. Первичная обмотка (в зарядном устройстве) содержит 32 витка провода ПЭВ-1 0.6 а вторичная обмотка (в приборе) 32 витка ПЭВ-1 0.3. Стоит отметить, что добротность контура и, соответственно, максимальная передаваемая в нагрузку мощность ограничивается потерями в феррите. Параллельно вторичной обмотке включаются 15в сапрессоры p6ke15ca для защиты схемы заряда от выбросов напряжения. При выбранных параметрах схемы в рабочих режимах сапрессоры не греются.

Разработка программной части


Для Arduino есть множество библиотек по работе с датчиками, и прочей периферией, однако многие из них неудобны и громоздки. В процессе разработки я пришел к выводу, что чужие мелкие библиотеки стоит использовать по минимуму, реализуя несложный функционал самостоятельно. Это позволяет несколько экономить ресурсы контроллера и объем используемой ПЗУ, хотя замедляет разработку. Родные библиотеки Arduino оказались громоздкими и неудобными. В итоге единственной сторонней библиотекой используемой на проекте оказалась SdFatLib by William Greiman. Модуль для работы с i2c датчиками sht21 и max44009 и RTC был написана с нуля, работа с ms5611/5803 была позаимствована из проекта multiwii и доработана. Модуль работы с экраном x65 by Christian Kranz был переделан под нужды конкретного проекта. Экранов в siemens x65 бывает 3 типа с разными контроллерами: Epson L2F50, Sharp LS020, и Hitcah LPH88. Мне удалось достать только первые два образца, так что пока мой проект поддерживает только два типа контроллеров дисплея. Конкретный тип задается в конфигах. Еще стоит отметить, что для работы прибора необходима нестандартная для Arduino конфигурация FUSES – включение линии CLKO и настройка brownout detector на 2.7вольта.

Работа с датчиками

Особых сложностей с опросом датчиков не возникло, они (и часы тоже) опрашиваются непрерывно в главном цикле программы, длительность главного цикла примерно равна примерно 180мс. Стоит отметить одну особенность датчиков MS5611/5803. У них иногда «замирают» показания после нескольких тысяч измерений. Данная особенность была мной замечена еще при отладке multiwii, а тут я столкнулся с ней вновь. Выход из ситуации тривиальный: раз в 256 опросов я просто сбрасываю датчик, и проблем с замиранием больше не возникает. Последние цифры в показаниях датчика давления постоянно флуктуируют в пределах 3-4Па (разрешение датчика 1Па), но усреднение результатов последних 16 измерений позволяет убрать флуктуации полностью. И это еще не все особенности MS5611, он еще оказался светочувствительным, что потребовало установки светозащитного колпачка. Остальные датчики работали без сюрпризов.

Отображение информации

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

скриншот

Во втором режиме на экране показывается вся информация о текущем состоянии прибора и датчиков: напряжение и ток заряда батарей, температура с двух датчиков, влажность, давление, расчетные значения точки росы и барометрической высоты, давление нулевой отметки высоты, освещенность, время, дата. Так же в нем доступна настройка часов и давления на нулевой отметке альтиметра. При размере экрана 132x176 пикселей размер графика был сделан 96x100, при этом осталось место для подписи шкал шрифтом минимально возможного размера, и для размещения 4ч строк текущей информации шрифтом 8x14. Кривая температуры выравнивается к низу системы координат, кривая давления к верху. Масштаб по осям ординат подстраивается под отображаемые данные автоматически. Влажность отображается пропорциональной заливкой фона графика светло-голубым цветом. Положение меток и линий сетки оси ординат постоянно, меняются только подписи меток. Сетка и метки по оси абсцисс двигаются с изменением времени, вместе с графиком. Важный вопрос – выбор доступных масштабов оси абсцисс. С учетом доступных объемов ОЗУ было решено остановится на двух масштабах – быстром 2мин/пиксель (отображаются данные за последние 3 часа и 10 минут), и медленном 30мин/пиксель (отображаются данные за последние 48 часов). В медленном режиме отображаются усредненные данные за получасовой интервал. В режиме запоминаются текущие данные раз в две минуты в 0 секунд. Это сделано для того, чтобы убрать видимое «запаздывание» данных на быстром графике относительно текущих. На каждый режим отображения графика хранится 96 отсчетов давления, влажности и температуры. Перемещение по графику назад во времени не предусмотрено. На карту данные пишутся раз в минуту, но с усреднением всех показаний.

Работа с сенсорными кнопками

Для опроса сенсорных кнопок, периодически (один раз за главный цикл) на них подается тестовый ВЧ сигнал (8мГц с выхода CLKO процессора) на 5мс, после чего считываются значения сигнала на выходах фазовых детекторов. АЦП имеет 10 разрядов, значения на выходе меняются от 0 до 1023. При выбранных значениях R1-R3 для свободных пластин сенсора размером 8x10мм характерны значения 500-700, при поднесении пальца к пластине находящейся за слоем текстолита толщиной 1.5мм значения меняются на 70-150 отсчетов в большую сторону. С одной стороны это свидетельствует о большой входной емкости логических элементов 74AC86, с другой стороны изменения сигнала более чем достаточно, чтобы надежно определить касание и настроить порог срабатывания, даже если увеличить толщины диэлектрика до 2-3мм. Для определения логического состояния сенсорных кнопок сравнивается текущее считанное значение с усредненным за последние несколько считываний. Если их разность превышает порог срабатывания, состояние сенсора фиксируется как «нажато». Если разность опускается ниже порога отпуска, состояние фиксируется как «отпущено». Пороги для каждого сенсора задаются отдельно, это позволяет легко сделать сенсоры достаточно чувствительными избегать ложных срабатываний. Адаптивная схема сравнения гарантирует надежную работу сенсорных кнопок при изменяющейся температуре и возможном загрязнении корпуса.

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

Меры по энергосбережению

После написания основной части программы измерения показали, что в среднем при выключенной подсветке прибор потребляет ток около 7.5ма, из которых около 3ма потребляет дисплей. Остальное потребление приходится в основном на процессор, на контроллер сенсорных кнопок, microSD карту, и немного – на датчики. Энергопотребление можно несколько снизить, если в «свободное» время загонять процессор в режим энергосбережения, и уменьшить частоту опроса датчиков и обновления информации. Впрочем, значительно снизить его не получится, почти половину потребляет постоянно включенный дисплей. Для дальнейшего снижения энергопотребления стандартная ардуиновская библиотека работы с АЦП была модифицирована так, что в процессе измерения АЦП процессор переходит в режим ADC Noise reduction (см. модуль myadc). При этом немного возрастает точность работы АЦП, но, главное, сильно снижается энергопотребление процессора во время измерений. Чтобы заметно сэкономить, простые задержки в главном цикле заменены многократным измерением тока заряда. Это позволило снизить потребляемый ток до 6ма. Стоить отметить, что применение более экономных sleep modes могло бы снизить энергопотребление еще немного, примерно до 5.5ма, однако это снижение не очень значительно, и требует внешних источников сигнала, чтобы будить процессор, которые не были предусмотрены изначально. При этом остается еще заметный резерв для снижения энергопотребления вплоть до 3.5ма за счет заметного снижения частоты опроса датчиков и темпа перерисовки экрана. Однако такие изменения сделаны не были в угоду постоянной оперативной индикации. Отдельно стоит заметить, что энергопотребление прибора зависит от используемой SD карты, токи покоя у разных карт могут сильно отличаться и достигать 2ма.

Разработка корпуса


На начальном этапе разработки стало ясно, что корпус будет состоять из двух основных объемов герметичного отсека с электронной частью, и вентилируемого углубления для размещения датчиков. Датчики небольшие и их компоновка не вызывает проблем. С основной платой сложнее. На ней должен быть расположен экран, сенсорные площадки (под правую руку – правее экрана), датчик освещенности (выше экрана). Углубление с датчиками рационально сделать сверху, тогда когда прибор стоит на опоре (столе, земле, камне, ...) – датчики будут сверху. А крепление для подвеса прибора на шею стоит сделать снизу, тогда удобней будет смотреть на экран подвешенного на лямку рюкзака или шею прибора.

Размер корпуса будет выбираться из соображений компоновки аккумуляторов и зарядного трансформатора. Аккумуляторы выбираются исходя из требуемого времени работы. При токе потребления не более 6ма и озвученных выше сроках работы емкость аккумуляторной батареи стоит выбирать около 6000мА*ч. При этом желательно выбрать аккумуляторы таким образом, чтобы как можно плотнее скомпоновать отсек прибора. Проанализировав доступные аккумуляторы, я остановился на варианте двух NCR18650B от Panasonic. При этом размер гермоотсека корпуса и платы можно сделать 70x50мм. В свою очередь этот размер определяет и длину уплотнительной резинки (полупериметр 70+50+запас = 125мм) и размер корпуса. Поскольку уплотнительная резинка из пассика жесткая, понадобится достаточно много прижимных винтов. Необходимое количество прижимных винтов можно либо рассчитать решая задачу деформации резинки и корпуса методом конечных элементов, либо определить экспериментально. Я выбрал второй вариант и экспериментально определил, что 8 винтов достаточно. С размером корпуса сильно не экономил, чтобы сделать более простую форму. Размер ниш, вмещающих датчики, тоже сделан с запасом для лучшей вентиляции. В результате размер центрального блока получился 103x68мм, а прижимных рам – еще больше. Дальше я приведу фото элементов корпуса, а по ссылке в конце статьи можно скачать архив с чертежами плат, и кривыми, и описанием операций для фрезеровки корпуса.

Изготовление корпуса и сборка прибора


Центральный блок изготовлен из капралона путем фрезеровки. Высота центрального блока равна 31мм. Размеры канавки для уплотнительной резинки подбирались предварительно методом проб и ошибок. Фрезеровалась тестовая канавка в мягком материале (листе вспененного ПВХ), к ней примерялась резинка, после чего вносились поправки в размеры канавки. Внутри гермоотсека сделано два выступа, к которым крепится основная плата прибора.

центральный блок корпуса

Блок датчиков крепится сверху двумя винтами М3x10 из нержавеющей стали. Дорожки, идущие к датчикам, и место ввода проводов в корпус изолировано силиконовым герметиком. Между платой датчиков и корпусом прокладываются шайбы толщиной 0.5мм из нержавеющей стали. Эти шайбы задают толщину слоя герметика, покрывающего дорожки в момент заливки. Герметиком так же приклеивается колпачок SF2 поверх датчика влажности. Согласно документации для монтажа колпачка и герметизации датчика следует использовать только герметики, испарение которые не вызывают необратимых повреждений датчика. Одним из таких является кислотный силиконовый герметик DOW Conring 732. Именно его я и использовал для герметизации датчика. (Впрочем, скорее всего подойдет любой другой силикон, но я решил перестраховаться). После высыхания герметика датчик влажности следует дегазировать выдерживая при температуре 100-120 градусов Цельсия в течении 10-12 часов, для чего я использовал обычный фен.

все детали корпуса

Передняя панель фрезеруется из 2мм поликарбоната. Задняя панель из 1.5мм стеклотекстолита. Прижимные пластины фрезеруются из алюминиевого сплава (дюраль). Передняя пластина отличается от задней тем, что имеет выступы, облегчающие тактильный поиск сенсорных пластин. Аккумуляторы и зарядный трансформатор фиксируются на задней панели с помощью двух проставок, фрезерованных из капралона и карбоновой прижимной пластины. Печатная плата изготовлена по технологии ЛУТ, в переходные отверстия запаяны медные проволочки.

платы во время тестирования

Используемый датчик MS5803 является водо- и грязе- защищенным, однако облучение датчика ярким светом существенно влияет на показания. Поэтому было решено закрыть датчик светозащитным колпачком. Колпачок изготовлен из полистирола методом склейки сольвентом. Внутренняя часть колпачка сделана черной, светопоглощающей, а внешняя белой светорассеивающей, чтобы исключить нагрев на солнце. Колпачок приклеен к плате датчиков цианакриловым клеем. В последствии оказалось, что свет проникает через плату датчиков и засвечивает датчик давления снизу. Для этого была установлена дополнительная светозащитная пластина поверх платы датчиков.

Пластина с сенсорными площадками устанавливается возле экрана вровень с будущей крышкой на несколько слоев толстого двустороннего скотча.

прибор вид спереди

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

прибор вид сзади

Передняя и задняя панели притягиваются восемью винтами M3x12 из нержавеющей стали. Плоская шляпка под шестигранник 2мм выбрана из эстетических соображений. Вес прибора в сборе равен 330г, габаритные размеры 110x70x38мм (41мм по шляпкам винтов).

Опыт эксплуатации прибора


Прибор был испытано летом в байдарочном походе по Карелии и Белому морю, и осенью в пешем походе по горному Крыму. Во время движения на байдарке я клал прибор на байдарку сверху, закрепив веревку к шпангоуту. Во время пеших радиальных выходов в Карелии, и во время похода по Крыму прибор постоянно висело у меня на шее. Во время стоянок и дневок прибор подвешивался в тени на ветку дерева. Общие впечатления от использования прибора очень позитивные: кажется, что буквально у тебя появился еще один орган чувств.

При движении на байдарке по большому озеру или морю измеренный график давления реально соответствует одной высоте и позволяет судить о погоде. Интенсивное понижение давления, как правило, предшествует ухудшению погоды через 1-2 дня, интенсивное повышение давление – улучшению погоды. Интенсивным можно считать изменение давления около 10-20мм ртутного столба в сутки. Во время стабильной погоды давление меняется значительно медленнее. На временных масштабах порядка суток изменения давления существенно быстрее, чем 20мм ртутного столба в сутки мне наблюдать не доводилось. Однако однажды в городе во время бури я наблюдал скачок давления на 1.5мм ртутного столба, который произошел в течении 2-3 минут.

Во время пешего движения на графике давления «читается» профиль высот. Впрочем, с учетом того, что атмосферное давление непостоянно, в видимом профиле могут набегать ошибки. Однако наблюдения за изменением давления во время стоянки позволяют оценить возможную величину ошибки, набегающую за день. При том, что изменение давления на 1мм ртутного столба соответствует изменению высоты примерно на 10метров, накопленная ошибка может достигать 200м за сутки при интенсивном изменении давления, и будет значительно меньше, если давление стабильно. Во время движения по горной местности, когда скорость подъема и составляет 50-300м/час, соответственно при анализе пройденного профиля в течение последних нескольких часов накопленной ошибкой по высоте вызванной изменением давления можно пренебречь.

Так выглядит график давления пр подьеме на гору (гора Каликорва в Карелии):

image

Графики температуры и влажности тоже очень любопытны сами по себе. Благодаря графическому представлению информации легко видеть, как менялась погода за последние дни. Однако с измерением температуры и влажности есть ряд особенностей. Опыт показал, что постоянная времени выравнивания температуры прибора и температуры воздуха составляет около 20минут при отсутствии обдува, и сокращается в несколько раз при наличии обдува ветром (обдув приводит к быстрому выравниванию температуры датчика и воздуха и снижает влияние корпуса на температуру датчика). Однако температура несколько «запаздывает» за фактической температурой воздуха. Кроме того, нагрев прибора солнцем несколько влияет на показания. Если подвешенный к некоторой опоре прибор вынести на яркое солнце из тени, при небольшом ветре показания возрастут на 2-4 градусов. При размещении прибора на байдарке, или на нагретой солнцем земле показания могут отличаться от температуры воздуха на 5-15 градусов в большую сторону. С измерением влажности есть некоторые проблемы в дождливую погоду. При намокании прибора под дождем, щели между панелями и защитный колпачок датчика намокают и удерживают воду длительное время, что приводит к «залипанию» показаний на максимальном значении (для данного экземпляра датчика sht21 это 95%).

Фото прибора, висящего на сосне во время дневки:

прибор на дереве

Еще один кадр, утро. Во время дневного перехода прошлым днем прибор лежал на байдарке и нагревался солнцем до нереальных значений температуры.

прибор на камне

Люксометр позволяет судить о глубине сумерек или толщине облачности. По наблюдениям освещенность в солнечный день составляет 60-90килолюкс, под слоем облачности днем 3-20килолюкс, во время прохождения грозового фронта снижается очень значительно. Например, во время грозы в Карелии в 9 вечера (3 часа до захода солнца) наблюдалось пиковое падение освещенности до 30люск, и 500-2000люкс во время последовавшего дождя. Освещенность во время белой ночи в ясную погоду начале карельского похода составляла 10люкс, через две недели уже 0.2 люкса. Возможность построения графика освещенности в приборе не предусмотрена, потому что показания люксометра сильно зависят не только от освещенности, но и от пространственного положения прибора и окружающих предметов, и извлечь полезную информацию из такого графика будет практически невозможно.

После похода в Карелию были сделаны небольшие доработки прибора с учетом выявленных недостатков. Был изменен состав информации под графиком – убраны малоинформативные температура датчика давления и напряжение аккумулятора, и добавлена барометрическая высота в метрах и температура точки росы. Вместо индикации напряжения аккумулятора на главном экране было введено мигающее предупреждение о разряде батареи. Барометрическая высота в каком—то смысле дублирует давление, потому как является его функцией, однако при движении в гору намного удобней отслеживать высоту в метрах, а не давление, пытаясь пересчитать его в уме. Кроме передняя крышка была заменена на новую, с нанесенными обозначениями кнопок. При разборке прибора были выявлены небольшие следы коррозии прижимных панелей с внутренней стороны, вероятно вызванные попаданием морской воды во время морской части похода.

Прибор лежит на байдарке:

Прибор лежит на байдарке

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

Прибор на горе Сори, Крым

Данные о температуре и влажности тоже воспринимаются по-другому, это скорее срез погоды вдоль маршрута движения. После нескольких дней хождения по горам график давления хочется перевернуть, преобразовав в высоту.
Хотя и в таком виде он дает понять тенденцию подъема или спуска на петляющей вверх/вниз тропе, и профиль движения за последние дни.

На горе Хриколь

Глядя на последнюю фото пытливый читатель может узнать из графиков, что я люблю ночевать вблизи вершин.

В осеннем походе еще раз было получено подтверждение того факта, что нагрев обдуваемого ветром прибора на солнце не вносит больших ошибок в измерение температуры по сравнению с измерением в тени, однако ошибки значительны если прибор стоит на поверхности и обдув затруднен.

Наконец подведем итоги опыта использования прибора. Стоит отметить, что были реализованы все задуманные технические решения и все планируемые каналы измерений, которые оказались в той или иной мере полезными в походах. В полной мере оправдала себя идея отображения графиков, которые позволяют отслеживать, как менялись температура давление и влажность в последнее время. Сенсорные кнопки надежно работают в любую погоду, в том числе под дождем. Время автономной работы прибора достаточно. Показания с экрана легко считываемы при любом освещении, графики легко различимы, несмотря на то, что их три на одной системе координат. Временного интервала в 2 минуты на отсчет вполне хватает, чтобы отслеживать быстрые изменения показаний, в том числе короткие остановки при движении на подъеме или спуске. Для температуры или влажности такая частота может показаться избыточной. Беспроводная зарядка работает, однако ее применение не поспособствовало уменьшению веса прибора.

Прибор на зарядной подставке

Однако стоит отметить отдельные эксплуатационные недостатки прибора:
  • Прибор оказался слишком тяжелым, долго носить его на шее неудобно. Габаритные размеры тоже хотелось бы уменьшить, но это не столь принципиально.
  • Алюминиевые прижимные рамы не очень приятны на ощупь при температурах ниже +5 градусов Цельсия, и подвержены коррозии при попадании соленой воды.
  • Вода, попадающая на защитный колпачок датчика влажности, и в щели между панелями, приводит к «залипанию» показаний влажности.
  • Запоминаемых для отображения данных недостаточно. Например, вечером посмотреть, что было сегодня утром в разрешении 2мин/пиксель невозможно. Данные за «позавчера» в разрешении 30мин/пиксель тоже не полны.
  • Необходима возможность отображения графика высоты вместо давления.
  • Не хватает истории изменения настроек давления на нулевом отсчете высоты. Особенно актуально если несколько раз за время похода проводишь коррекцию на одной и той — же высоте, либо в одной и той — же точке.
  • Хотелось бы увеличить разрешение люксометра в диапазоне низких освещенностей.


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


Для расширения функциональных возможностей прибора было принято решение перевести проект в AVR Studio и GCC, перейти на использование процессора ATmega1284p с 16кб ОЗУ и 128кб ПЗУ. Это позволит усложнить программу и реализовать следующие возможности:
  • Хранение метеоданных за последние 4 дня с разрешением в 1 отсчет в 2 минуты.
  • Отображение данных на графике в нескольких временных масштабах с возможностью перемещения отображаемого окна по всему хранимому набору данных.
  • Возможность отображения данных давления либо в виде графика давления либо в виде графика высоты.
  • Возможность отображения данных влажности либо в виде графика относительной влажности либо в виде графика температуры точки росы.
  • Хранение истории изменения давления на нулевом отсчете высоты.


Платы, исходники, кривые для фрезировки, и прочую информацию можно скачать здесь.

P.S. В настоящий момент вторая версия прибора собрана и проходит испытания. Скоро будет продолжение.
Tags:DIYAVRarduinoметеостанция
Hubs: DIY
+64
37.9k 358
Comments 38