Навигация

Домашняя метеостанция

П. КОЖУХИН, г. Курган

Следует заметить, что применять датчик HIH 4000-004 для измерения влажности наружного воздуха зимой не рекомендуется. При длительном пребывании при температуре ниже -15 °С его погрешность многократно возрастает. Иногда показания меняются хаотически. Однако датчик не выходит из строя. При плюсовой температуре его работоспособность быстро восстанавливается.

Для связи метеостанции с компьютером использован встроенный в микроконтроллер PIC18F4550 USE-порт. Он представляет собой USB-устройство класса HID (human interface device - устройство связи человека с компьютером) и содержит все необходимые для обмена информацией компоненты. Скорость обмена с HID по шине USB сравнительно невелика, но большая в данном случае и не требуется. Зато длина кабеля, соединяющего метеостанцию с компьютером, может достигать десятков метров. Я использовал неэкранированный кабель длиной 8 м. При первом подключении метеостанции к компьютеру его операционная система автоматически определяет тип устройства и самостоятельно устанавливает все необходимые драйверы. Замечено, что некоторые компьютерные игры (например, "UEFA 06-07") работают с ошибками, когда к компьютеру подключена метеостанция. Чтобы устранить ошибки, достаточно отключить её от разъема USВ.

Каждый час (если этот режим включён) метеостанция записывает в микросхему энергонезависимой памяти DS1 измеренные значения температуры и влажности, а также текущие час, число, месяц и год. Каждая запись занимает восемь байт памяти, а всего за сутки заполняются 8x24-192 байта. Объём памяти микросхемы AT24C16AN - 2048 байт. Следовательно, она может вместить информацию за 10 суток и 16 часов. Далее каждая новая запись затирает самую старую из хранящихся. Если передавать информацию в компьютер не предполагается, устанавливать в метеостанцию микросхему DS1 нет смысла, так как возможности прочитать ее содержимое без компьютера не предусмотрено.

Для приёма команд дистанционного управления использован модуль приёмника ТSOP2836 (ВЗ), рассчитанный на приём ИK сигналов с импульсной модуляцией частотой 36 кГц. Можно использовать и приёмник, настроенный на частоту модуляции 38 кГц.



Так как команда с ПДУ может поступить в любой момент времени, выход приёмника ВЗ подключён к входу RBO микроконтроллера, сконфигурированному таким образом, что при подаче на него высокого или низкого (задаётся программой) логического уровня происходит прерывание выполняемой программы. Сначала по низкому уровню, а при каждом выполнении процедуры обработки прерывания разрешённый уровень генерации следующего запроса прерывания сменяется противоположным. В результате прерывания по низкому и по высокому уровням чередуются.

Измеряя интервалы времени между прерываниями, программа определяет длительность принимаемых пачек импульсов и пауз между ними. Учтите, что программа правильно декодирует только команды, подаваемые ПДУ, работающими по принципу манипуляции длительности пауз. Если длительности пачки и следующей за ней паузы приблизительно равны - это логический 0. Если же пауза в 1,5 и более раз длиннее пачки - это логическая 1. Программа способна распознавать только команды, подаваемые однократными короткими нажатиями на кнопки ПДУ. Не предусмотрено автоматическое повторное исполнение команды при продолжительном удержании кнопки нажатой.

Для загрузки программы в микроконтроллер DD2 в устройстве предусмотрен разъём Х1. Диод VD1 предотвращает попадание подаваемого на этот разъём от программатора напряжения питания микроконтроллера на другие узлы метеостанции. Завершив программирование и отключив программатор, диод VD1 следует заменить перемычкой, потому что при работе метеостанции напряжение питания микроконтроллера и датчиков В1, В2 должно быть одинаковым. Если во время программирования микроконтроллер будет питаться от собственного источника метеостанции, а не от программатора, эту перемычку вместо диода можно установить сразу.

Чертёж печатной платы метеостанции показан на одной из схем. Расположение деталей на изображении, тех из них, что входят в модули А1—А10, имеют цифровые префиксы, совпадающие с номерами модулей. Большинство деталей - для поверхностного монтажа. Резисторы использованы типоразмеров 0805 и 1206, а конденсаторы - 0805, за исключением танталового оксидно-полупроводникового конденсатора СЗ. Он типоразмера А.

Все транзисторы тоже для поверхностного монтажа. На замену им можно подбирать транзисторы аналогичной структуры с максимальным постоянным током коллектора не менее 100 мА (вместо ВС846В, ВС856) или не менее 500 мА (вместо ВС807-40). Светодиоды L-53SYD можно заменить любыми другими подходящего цвета свечения и яркости, Реле К1 - WJ105-1А- 5VDC с обмоткой на 5 В сопротивлением 125 Ом, рассчитанное на максимальный коммутируемый ток 5 А.

Плата помещена в корпус G738A. На его породней панели располагаются отверстия под индикаторы, светодиоды HL1 и HL2, ИК приёмник ВЗ, на боковой - USB-разъём Х2 для связи с компьютером. В задней стеке корпуса просверлены отверстия для толкателей кнопок SB1-SВ4, на ней же установлены разъёмы для подключения датчиков B1, В2, ВК1, ВК2, реле К1 и питания (ХЗ).

Питается метеостанция от импульсного сетевого блока с выходным стабилизированным напряжением 5 В и максимальным током нагрузки ЗА. Фактический потребляемый ток не превышает 1 А.

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

- считывание из микросхемы D D1 текущих времени и даты;

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

- если включён таймер, то проверка, не подошло ли время его выключения, и выполнение этого действия при необходимости. Время выключения хранится в EEPROM микроконтроллера, поэтому кратковременное отключение питания работу таймера не нарушает;

- если включён будильник, то проверка, не подошло ли время его срабатывания, и включение звукового сигнала при совпадении этою времени с текущим. Сигнал представляет собой звуковые импульсы частотой 550 Гц и длительностью 0.2 с, повторяющиеся с периодом 1 с в течение минуты;

- при наличии запроса от компьютера - передача ему запрашиваемой информации;

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

Каждые 0,1 с программа возвращает в исходное состояние сторожевой таймер микроконтроллера и запускает процедуру приёма команды ДУ. Если команда принята и опознана, выполняются предписанные ею действия.



Раз в сутки в показания часов метеостанции автоматически вносится поправка, компенсируй их уход.

После первого включения метеостанции или смены элемента резервного питания G1 необходимо обелить секунды текущего времени. Только тогда часы микросхемы DS1 начнут работать.

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

С помощью вкладки "Протокол" можно получить хранящиеся в микросхеме DS1 ежечасные сведения о температуре, давлении и влажности за последние 10 суток. Первоначально на этой вкладке имеются только экранные кнопки "Загрузить", "Добавить", "Очистить" и "Очистить память" и надпись о состоянии подключения станции.

Прежде всего следует нажать на кнопку "Загрузить". Начнётся передача протокола по USB, а надпись на кнопке сменится текущим числом процентов выполнения этой операции. Выбрав в выпадающем списке "Момент измерения" интересующие день и время, можно увидеть в поле "Измеренные величины" их значения в выбранный момент.

Если нажать на кнопку "Добавить", в окне появятся значения этих величин за несколько часов подряд. Поместив курсор мыши в поле вывода, по списку можно перемещаться с помощью клавиш управления курсором. К прежнему виду вкладку возвращают нажатием на кнопку "Очистить".

Если нажать на кнопку "Очистить память", то вся информация, хранящаяся в микросхеме памяти DSI метеостанции, будет уничтожена и запись в неё начнётся с начала. Учтите, что исполнение команд "3aгрузить" и "Очистить память" занимает некоторое время. При этом завершение работы программы "Метеостанция" или разрыв связи по USB не помешают микроконтроллеру метеостанции довести начатую операцию до конца. Досрочно прекратить, например, начатую очистку памяти можно только выключением питания метеостанции. При этом невозможно предсказать, какие записи сохранятся, а какие будут частично или полностью уничтожены.

На вкладке "Установка" просматривают и изменяют значения параметров метеостанции. Если она подключена к компьютеру, то слева на вкладке имеется список групп параметров, а в нижней части - экранные кнопки "Загрузить" и "Установить". Нажатием на первую из них читают и выводят на экран значение выбранного параметра, установленное в данный, момент в метеостанции. Нажатием на вторую выполняют обратную операцию - записывают установленное на экране значение в энергонезависимую память микроконтроллера метеостанции.

При выборе пункта "Время (дата)" в полях "Время" и "Дата" отображаются значения, прочитанные из метеостанции. Учтите, что их чтение происходит автоматически только в момент выбора пункта. Чтобы обновить информацию о времени и дате, необходимо нажать на кнопку "Загрузить". При нажатии на кнопку "Установить" происходит синхронизация часов и календаря метеостанции с часами и календарём операционной системы компьютера.



При выборе пункта "Таймер" происходят чтение и вывод на экран установленной в метеостанции выдержки таймера в минутах и его текущего состояния (включён или выключен). Если длительность выдержки необходимо изменить, новое значение от 0 до 900 мин вводят в соответствующее поле. Ниже его имеется выпадающий список, в котором можно выбрать пункт, включающий или выключающий таймер. Новое значение принимается, а предписанная операция выполняется при нажатии на кнопку "Установить". При включении таймера в метеостанции срабатывает реле К1, которое отпускает якорь по истечении заданной выдержки или при получении команды "Выключить". Если задана нулевая выдержка, таймер включить невозможно. Если время выдержки изменено, когда таймер включён, то он выключается.

Аналогично управляют будильником, выбрав соответствующий пункт. Отличие лишь в том, что для часа и минуты срабатывания будильника имеются отдельные поля. Прекратить звучащий сигнал можно нажатием на кнопку SB3 или SB4 метеостанции.

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

Выбор пункта "Поправки" позволяет откорректировать ход часов, а также показания измерителей атмосферного давления и влажности. Корректируемый параметр выбирают так же, как функцию в предыдущем пункте. Значения поправок вводят соответственно в секундах ежесуточного отставания часов или их ухода вперёд (от -20 до +20), миллиметрах ртутного столба (от -10 до +70) и процентах (от -25 до +25). Только нулевые значения вводят без знака, во всех остальных случаях знаки плюс и минус обязательны. При этом минус означает, что измеренное значение следует уменьшить на указанное число единиц, а плюс - увеличить. Например, поправка на +5 с скомпенсирует отставание часов на 5 с в сутки. Для записи каждой поправки в метеостанцию нажимают на кнопку "Установить".

Метеостанцией можно управлять не только с компьютера, но и четырьмя расположенными на задней стенке её корпуса кнопками, а также с помощью ИК ПДУ от бытового прибора. Эти способы действуют независимо от наличия связи с компьютером.

Основное назначение кнопок следующее:

SB1 — переход по пунктам меню вниз или направо;

SB2 — переход по пунктам меню вверх или налево;

SB3 — увеличение выбранного параметра на единицу;

SB4 — уменьшение выбранного параметра на единицу.

Кнопки выполняют и другие функции. Например, нажимая на SB1 или SB2, входят в меню установок, нажатиями на кнопку SB3 включают и выключают таймер, а на SB4 - будильник. Как уже отмечалось, чтобы до истечения минуты прекратить звуковой сигнал сработавшего будильника, необходимо нажать на кнопку SB3 или SB4.

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

Чтобы выполнить её, в меню установок выбирают пункт "ИК П." и нажимают на кнопку SB4, после чего на индикатор будет выведено изображение. Теперь нажатиями на кнопку SB4 можно включить или выключить дистанционное управление, что будет отображено надписью "Вкл." или "Выкл." на индикаторе. Нажимая на кнопки SB1 и SB2, можно перейти к пунктам назначения кнопок ПДУ, дублирующих функции SB1-SB4 метеостанции. Выбрав один из них, что будет подтверждено надписью с номером кнопки на индикаторе, нажимают на кнопку SB3, при этом обе строки индикатора заполняются нулями.

Далее нажимают на ПДУ кнопку, выбранную для дублирования кнопки метеостанции, направив его луч на ИК приёмник ВЗ. Нули на индикаторе сменятся принятым кодом команды. Следует убедиться, что при неоднократных нажатиях на выбранную кнопку ПДУ код остаётся прежним, но при нажатии на любую другую он меняется.

Выходят из режима отображения кодов принятых команд ПЗУ нажатием на кнопку SB3 или SB4. В первом случае никаких изменений в состоянии метеостанции не происходит. Во втором случае последний принятый и отображённый на индикаторе код будет записан в EEPROM микроконтроллера, а соответствующая ему кнопка ПДУ станет "дублёром" кнопки метеостанции. Аналогичные процедуры выполняют для всех четырёх её кнопок. В завершение переходят к пункту "ВЫХОД" и, нажимая на SB4, возвращаются в основной режим работы метеостанции.