В этой статье я расскажу о конструкции автоматического привода штор, установленного у меня на балконе. Там у нас растут цветы, которым вреден прямой солнечный свет. Кроме того, летом, если окна балкона закрыты, при прямом солнечном свете воздух на балконе быстро перегревается. Однако когда прямого света нет, шторы желательно открыть — тень тоже не способствует росту цветов. Поэтому, для поддержания на балконе приемлемой освещенности, я автоматизировал работу штор.
Механика
Шторы изначально уже были на балконе. Их две, обе подвешены на металлическом тросике, протянутом под потолком от одной стены балкона до другой. Понятно, что передвигать нужно сразу обе шторы, при этом из-за трения штор об тросик (он достаточно шершавый) требуемая сила должна быть достаточно велика. Кроме того, иногда на пути шторы могут встречаться препятствия, например, приоткрытое окно балкона, что еще больше увеличивает требования к силе.
Таким образом, привод должен быть достаточно мощным и надежным — на балконе часто бывает повышенная влажность, возможна достаточно большая разница температур зимой и летом. Поэтому основой привода я сделал автомобильный привод стеклоподъемника. Он обладает достаточной мощностью, способен выдавать большой крутящий момент (в него встроен червячный редуктор) и очень надежен.
Схема механической части привода показана ниже:
Подробнее о конструкции. На вале привода стеклоподъемника (слева на схеме) закрепляется пластиковый ролик с проточкой, на который намотан виток веревки. Привод закрепляется на одной из стен балкона. На противоположной стене крепится такой же ролик, через который также пробрасывается веревка.
После этого веревка натягивается, так что трения веревки на ролике привода хватает для перемещения штор. Противоположные концы каждой шторы крепятся к веревке так, чтобы при вращении мотора штора раздвигалась или сдвигалась.
Для проверки работы привода я сделал его уменьшенную модель. Привод стеклоподъемника и независимый ролик закрепил на доске, натянул между ними веревку, после чего можно было проверять работу электроники и измерять силу, развиваемую приводом.
Фотография самого привода на макете:
Как видно из фотографии, к приводу стеклоподъемника прикреплена достаточно крупная тонкая пластина (я использовал текстолит). К ней крепится металлический уголок с двумя отверстиями, через которые пропущена веревка. От нужен для того, чтобы виток веревки на ролике не путался, для этого отверстия в уголке сделаны на разной высоте относительно пластины.
Правее уголка — концевые выключатели, нужные для остановки штор к крайних положениях. Для того, чтобы обозначить эти положения, на веревку надеваются две пластиковые трубочки (на фотографии рядом с нижним выключателем видна только одна из них). Трубочки располагаются так, что при достижении шторой крайнего положения одна их них нажимает на выключатель, при этом для надежного нажатия рядом с каждым из выключателей крепится металлическая пластинка, которая прижимает трубочку к выключателю.
Три металлические стойки, прикрепленные к пластине, нужны для крепления крышки привода.
Оба ролика для веревки сделаны из колес для мебели. Используя дрель и напильник, в каждом из них нужно проточить канавку, в канавке ролика привода должны укладываться два витка веревки. Ролик привода крепится на валу за счет натяжения, при этом отверстие в нем пришлось расточить до квадратного, так как вал привода квадратный.
Привод крепится к стене балкона при помощи подходящих мебельных уголков (один из них виден на фотографии слева). В приводе стеклоподъемника достаточно крепежных отверстий, так что проблем с креплением не возникает.
Вид привода, уже прикрепленного к стене и закрытого крышкой:
Для того, чтобы натягивать веревку, используется специальный винт с гайкой, к которому крепятся концы веревки:
Также к нему прикреплен конец одной из штор.
Электроника
Вся электроника у меня разбита на две части — силовую и управляющую. Главная задача силовой части — обеспечение питания двигателя привода. Привод стеклоподъемника может потреблять очень большой ток. Для уменьшения этого тока я уменьшил напряжение питания привода до 5 вольт, но даже при этом максимальный ток, потребляемый двигателем, может доходить до 3А. Чтобы обеспечить такой ток, я использовал блок питания от принтера, способный выдавать напряжение около 30В и ток до 0.7А, а так же DC-DC преобразователь до 5В. За счет понижения напряжения DC-DC вполне способен выдать нужный ток.
Управление питанием двигателя производится при помощи мощного реле, предназначенного для изменения полярности сигнала, и MOSFET, управляющего подачей напряжения на двигатель. Благодаря использованию MOSFET можно регулировать скорость вращения двигателя, но в данный момент эта возможность не используется.
Также на силовой части установлены стабилизаторы, предназначенные для питания управляющей электроники и цепь контроля питания двигателя. Стабилизаторы питаются от более низковольтной цепи блока питания, напряжение там не превышает 12В.
Управляющая электроника представлена микроконтроллером STM8S. Контроллер выполняет достаточно много функций — измерение освещенности, принятие решения о запуске привода, контроль за положением штор по концевым выключателем, управление питанием привода, управление приводом в ручном режиме — по командам пульта ДУ. Кроме того, к контроллеру подключен радиомодуль на NRF24L01 и шина 1-Wire, по которой подключены три датчика температуры. При помощи радиомодуля можно управлять приводом и считывать значения температуры в разных точках балкона и на улице, однако в данный момент второй радиомодуль подключен только к макетной плате, так что далее этот функционал я рассматривать не буду.
Используемый блок питания от принтера имеет вход для перевода его в состояние Stand-by. Его я тоже использую, благодаря чему уменьшается потребление энергии конструкцией. В программе учитывается, что блок питания переходит в рабочий режим с определенной задержкой, а после 30 секунд бездействия привода блок питания опять переходит в режим Stand-by.
Индикация работы привода — при помощи трехцветного светодиода (используются только синий и красный диоды). Синий загорается при подаче напряжения на двигатель, красный начинает периодически мигать при наличии ошибок в работе привода. Число вспышек позволяет определить номер ошибки.
Для звуковой сигнализации некоторых событий (например, при подаче команды на закрытие уже закрытых штор) используется сам двигатель привода. На него подается ШИМ сигнал с маленьким коэффициентом заполнения, в результате чего двигатель достаточно громко пищит.
В качестве датчика освещенности используется фоторезистор, прикрепленный присоской к окну. Так как присоска может отпасть от окна, рядом с фоторезистором расположена маленькая кнопка. Пока присоска держится на окне, кнопка прижата к окну. Если присоска отпадет, автоматическая работа привода прекращается и начинает мигать красный диод. Если датчик не подключен к разъему, то это тоже обнаруживается контроллером.
Вид датчика освещенности:
Так как освещенность датчика может резко изменяться — из-за различных вспышек на улице, переменной облачности, то данные от датчика приходится фильтровать. У меня реализован следующий алгоритм обработки: данные от датчика оцифровываются с частотой 10Гц, и записываются в массив. Раз в секунду значение этого массива усредняется (в первую очередь это нужно для фильтрации шумов и вспышек). Далее полученные значения добавляются в другой массив размерностью 600 элементов, после достижения конца массива запись начинается с его начала. Также каждую секунду производится анализ этого массива — контроллер подсчитывает, какой процент элементов массива меньше определенного порога (с ростом освещенности напряжение на выходе фотодатчика падает). Если значения более 66% элементов меньше заданного порога — то считается, что освещенность достаточно велика, и шторы можно закрывать. Таким образом проводится фильтрация периодических изменений освещенности. При этом на частоту работы привода тоже наложено ограничение — в автоматическом режиме мотор включается не чаще раза в десять минут.
Как я упоминал выше, имеется возможность управлять шторами с пульта ДУ. При помощи пульта можно полностью открыть и закрыть шторы, частично открыть их, запустить привод по мгновенному значению освещенности.При управлении с пульта ограничений на частоту работы привода нет.
Также есть возможность программно перезагрузить контроллер.
При передвижении штор контроллер следит за состоянием концевых выключателей. Если после начала движения соответствующий выключатель не сработает в течении 20 секунд, работа мотора прекращается. Чтобы продолжить работу привода после устранения неисправности, как раз и нужно перезагрузить контроллер.
Вся электроника установлена в стандартный пластмассовый корпус:
Один из выключателей нужен для перевода электроники в автоматический режим работы, второй позволяет полностью отключить питание мотора.
При помощи гнезд Jack 3.5мм к устройству подключаются датчик освещенности, TSOP для приема данных от пульта, и внешние термодатчики.
Белым колпачком закрыт светодиод — так его видно под любым углом.
Вид собранного и установленного на свое место блока электроники:
Видео работы привода (управление с пульта):
Исходный код программы контроллера
Автор: iliasam