[Из песочницы] Метеостанция Ласточка
Разработка электроники для меня это и работа и хобби одновременно. В очередном порыве желания что-нибудь сделать наткнулся на любительский недорогой набор датчиков: дождя, скорости и направления ветра. Он и задал для меня новую область интересов. В этой статье я расскажу об увлекательном процессе проектирования своей погодной станции.
После недолгого фантазирования был сформирован набор датчиков:
• температуры
• влажности
• давления
• направления и скорости ветра
• осадков
• ионизирующего излучения
• освещенности
Один из вариантов реализации — сборка из готовых модулей (процессорная плата + шилды) — мне не нравился из-за следующих минусов:
• отсутствие гибкости
• монструозность конструкции
• энергопотребление
• скучно
Кроме того, хотелось самостоятельно разработать печатную плату. В целом проект планировался как развлекательный. Из-за особенностей наших разработок мне приходится встраивать платы в жестко ограниченный конструктив, поэтому хотелось разработать «вальяжную» конструкцию основного блока, поставить много светодиодов, красивых разъемов и т. д.
Разработка микроконтроллерной системы с набором датчиков окружающей среды является заурядной задачей, поэтому она была дополнена солнечными батареями и схемами питания на их основе.
Исходя из перечня датчиков сформировалась следующая блок-схема:
Внешние датчики
Выбор комплектующих начался с поиска альтернативы вышеупомянутому набору датчиков. Их исполнение не внушало доверия, хотелось найти что-то более надежное и красивое. После долгих поисков, я нашел компанию Vaisala, которая специализируется на разработке профессиональных решений для измерения параметров окружающей среды. Эта компания выпускает, например, такой надежный совмещенный анемометр, позиционируемый как лоукост решение.
Он имеет крыльчатку конусообразной формы, для большей линейности характеристики Скорость ветра — Выходная частота. После запроса цены (75000 рублей) пришлось все же вернуться к первоначальному любительскому варианту. Эти датчики не имеют в своем составе активных электрических компонентов, в них используются герконы и магниты в качестве детекторов движения.
Анемометр имеет частотный выход. При вращении крыльчатки происходит замыкание геркона с частотой пропорциональной скорости ветра. Анемометр подключен к входу одного из таймеров микроконтроллера через защитную цепь и RC фильтр для подавления дребезга контактов.
Датчик направления ветра представляет собой перестраиваемый делитель напряжения на герконах. Выходной сигнал — напряжение. Подключается к внутреннему АЦП МК так же через защитную цепь и фильтр.
Датчик дождя имеет наиболее хитрую, на мой взгляд, конструкцию. Представляет собой качель с двумя резервуарами на концах, попеременно наполняемых из воронки, расположенной над ними. При каждом опрокидывании качели замыкается геркон. Подключение к МК такое же как и у анемометра.
Для измерения влажности и температуры используется датчик SHT15. Выбран как самый точный из доступных у нашего любимого поставщика компонентов. Этот датчик имеет похожий на I2C интерфейс, но не поддерживает адресацию, поэтому его пришлось подключить к отдельной шине I2C_2. Отличия в интерфейсе привели к программной реализации его опроса. Датчик SHT15 устанавливается снаружи устройства, это требует длинных проводов, и дополнительные устройства на той же шине могут привести к некорректной работе. Для правильного измерения влажности и температуры требуется защитить датчик от прямых солнечных лучей и осадков. Можно было соорудить защиту из подручных материалов, но т.к. планировалось продемонстрировать метеостанцию на выставке Радэл, требования к внешнему виду были строгими. В итоге мы остановились на защите от Vaisala, ее стоимость велика, но и выглядит она соответствующе.
Схема устройства
Был выбран микроконтроллер STM32F207VC. Конечно, с такой задачей справится микроконтроллер и попроще, но задача развлекательная, цена для единичного изделия не критична, да и к тому же данный микроконтроллер мы широко применяем в своих разработках — экономия времени при проектировании.
По шине I2C_1 подключаются датчики температуры устройства, давления, освещенности, а также акселерометр и два усилителя токового шунта.
Внутренний датчик температуры STLM75 позволяет отслеживать температуру устройства. Интересно наблюдать, как внутренняя температура увеличивается на солнышке.
Датчик давления от ST LPS25. MEMS датчик с цифровым выходом.
Датчик освещенности OPT3001 со спектральной чувствительностью близкой к человеческому глазу. Не совсем подходящий для данной задачи, т.к. при измерении мощности солнечной радиации используются датчики с более широким спектральным диапазоном, с захватом ИК и УФ. Однако мне достаточно было определять освещенность в виде темно/светло.
Акселерометр LSM303D. Идея использовать его как детектор кражи при автономной работе. Из интересных функций — определение свободного падения и генерация прерывания для МК.
Усилители токового шунта с цифровым выходом позволяют измерять напряжение и ток питающей шины, на борту производить вычисление мощности, генерировать прерывания при выходе параметров за установленные рамки. Используются для контроля потребляемой и генерируемой мощности.
3 интерфейса UART задействованы следующим образом:
• Внешний проводной интерфейс. Установлен преобразователь UART-RS485 c гальванической развязкой. Применяется решение от Texas Instruments на базе микросхемы ISO3086T. Данная микросхема имеет в своем составе драйвер трансформатора, что позволяет питать выходную часть конвертера без дополнительного источника.
• GSM модуль SIM900. Можно было подобрать что-нибудь более современное с 3G и малопотребляющее, но этот был на полке и в библиотеке компонентов PCB CAD.
• GPS модуль для получения точного времени, выбран по тем же соображениям.
В качестве «чего бы еще поставить» на свободные пины, нашелся красивый графический OLED дисплей с разрешением 128×64. Да, конечно, дисплей внутри станции ни к чему, но через прозрачную крышку корпуса он смотрится очень красиво и полезен при установке для контроля правильности соединений.
Из-за любви к газоразрядным приборам в списке датчиков появился детектор ионизирующего излучения на счетчике Гейгера СБМ-20. Он детектирует гамма-излучение. Хотелось поставить СБМ-19, он имеет большую чувствительность, за счет большего объема камеры, но по этой же причине он не влез в приглянувшийся мне корпус.
Для работы счетчика Гейгера необходимо питание 400 вольт. Источник высокого напряжения выполнен по бестрансформаторный схеме на основе MC33063AD. Спорное решение, но хотелось попробовать из 5 вольт сделать 400 именно по этой схеме. Из особенностей — нужен высоковольтный транзистор с малым пороговым напряжением затвора, например ZVN0545.
Счетчик включен по схеме с заземлением катода. Чаще встречается схема с резистором в цепи катод-земля для детектирования скачка тока в счетчике. Сделано из соображений помехоустойчивости, лучше иметь заземленный металлический баллон счетчика, являющийся катодом. Так же он удачно отделяет высоковольтный шумный источник питания от остальной схемы на плате.
Детекторная секция выполнена по простой схеме. При попадании частицы в счетчик происходит бросок тока через него, из-за чего изменяется потенциал анода, что приводит к появлению тока в цепи базы и, как следствие, уменьшению напряжения на выходе детектора. После окончания акта ионизации ток прекращается и напряжение на выходе детектора становится 3,3 вольта. Сигнал с детектора обрабатывается как внешнее прерывание МК.
Разработка схемы питания потребовала больше всего времени. Имеется три источника энергии: внешняя сеть, солнечная батарея и встроенный аккумулятор. На входе внешнего питания установлен гальванически развязанный DC-DC преобразователь. Входной диапазон 9–36 вольт, выход 5 вольт.
Для работы с солнечной батареей используется специальная микросхема step-up преобразователя с встроенной функцией MPPT (отслеживание точки максимальной мощности). Этот способ используется для получения максимально возможной мощности на выходе фотомодулей.
В схеме используются 2 самопереключающихся мультиплексора питания, для автоматического выбора источника питания. В этой схеме переключения были допущены ошибки. Отсутствует возможность самоотключения питания при низком заряде аккумулятора. И, наверное, было бы более правильным сделать так, чтобы солнечная батарея могла заряжать аккумулятор, не питая при этом устройство. При малой освещенности мощности будет хватать для медленной зарядки аккумулятора, но ее будет не достаточно для питания самого устройства.
После трассировки плата приобрела следующий вид:
Был выбран вместительный корпус с прозрачной передней крышкой. Очень кстати пришлась опция от производителя — элемент для выравнивания давления (на фото ниже находится слева от разъемов). Он обеспечивает равенство давлений внутри и снаружи корпуса, что необходимо для датчика давления, расположенного внутри, а также обеспечивает большую герметичность прибора при перепадах давления. Для подключения внешних датчиков, питания и связи используются промышленные разъемы M12. Разъем M12 обеспечивает высокую герметичность и надежное электрическое соединение. Для установки корпуса на стойку отлично подошел крепеж для водопроводных труб.
Близилась выставка, но схема питания от солнечных батарей еще не была отлажена, поэтому было решено использовать внешнее питание и проводной интерфейс.
Было быстро написано встроенное ПО, для начала ограничились опросом всех датчиков, выводом параметров на дисплей и обменом данными по проводному интерфейсу RS-485. Для ПК была написана программа, реализующая обмен со станцией и вывод параметров.
Для подключения к компьютеру спроектировали переходник USB — RS485 с инжектором питания. В SoldWorks был спроектирован корпус, он выполнен из прозрачного листового пластика для возможности созерцания внутренностей. Изготовлен он в ближайшей рекламной мастерской при помощи лазерной резки. Получилось весьма не плохо, на мой взгляд.
В качестве источника применяется сетевой AC-DC преобразователь на 24В. Преобразователь USB — UART основан на всеми любимой FTDI FT232, UART- RS485 на таком же решении от Texas Instruments, что и в самой метеостанции.
На выставке метеостанция вызвала живой интерес. Профессионалы погодной индустрии, заходившие на наш стенд, называли ее поделкой, студенты фотографировались на ее фоне, мы были довольны.
После выставки не терпелось установить станцию на крышу, подвергнуть испытаниям суровой стихией. Из подручных материалов было собрано основание. Теперь внешний вид нас не беспокоил, главное надежность. Получилась суровая конструкция с оттяжками из шпильки и цепи. Выдержит ураган!
Станция была установлена на крыше жилого дома. Тащить витую пару с крыши через 5 этажей в квартиру оказалось очень увлекательным занятием.
Опыт эксплуатации
Естественно, как только температура упала ниже нуля, намертво замерз датчик дождя. Снег детектировать он все равно не умеет. В процессе разработки видел, что умельцы в этот датчик встраивают мощные резисторы для подогрева, но мне такой подход не понравился. В будущем решил разработать простой детектор осадков, выглядит он примерно так:
Принцип его работы следующий: имеется печатная плата с парами проводников не покрытых маской, при попадании воды на поверхность платы сопротивление между ними уменьшается. Для работы датчика в холодное время года необходимо обеспечить подогрев печатной платы.
Так же проблемой было найти рабочий счетчик Гейгера. В запасах лежало две штуки СБМ-20, но оба оказались не рабочими. Сейчас в устройстве установлен не идентифицированный крошечный счетчик Гейгера, который можно увидеть на плате в левом нижнем углу.
На данном этапе все силы сосредоточены на доделке программного обеспечения и поднятии веб сервера для погодной станции. Было найдено открытое программное обеспечение WeeWX, оно умеет общаться с большинством метеостанций, писать их показания в базу данных, генерировать HTML страницы с графиками и текущими показаниями и т.д. Для WeeWX написан драйвер реализующий наш протокол обмена.
Страницу с показаниями нашей метеостанции можно увидеть тут. Пока что она в разработке, возможно не корректное отображение данных.
Одна из амбициозных идей разработать ультразвуковой датчик направления и скорости ветра, у него есть большое преимущество перед механическими — он не может застопориться из-за обледенения. Принцип действия анемометров ультразвукового типа основан на измерении скорости звука, которая изменяется в зависимости от ориентации вектора движения воздуха (направления ветра) относительно пути распространения звука.
Выглядит эта конструкция следующим образом.
Судя по отметкам затраченного времени в редмайне, на разработку железной части потрачено около месяца. Много из этого времени затрачено на любование различными датчиками и душевным метаниям при выборе компонентов системы. На ПО затрачено около двух недель, и около недели ушло на разработку драйвера для WeeWX.
В целом для меня проект оказался очень интересным, было совершено увлекательное путешествие в мир метеорологических измерений.
Отдельно хочу поблагодарить ana_lazareva за активное участие в создании метеостанции.