Изготовление и установка электропривода на рулонные шторы
Электропривод выполнен на базе миниатюрного 4-х фазного шагового двигателя 28BYJ-48-12V . Двигатель имеет редуктор с передаточным числом приблизительно 64:1, что обеспечивает достаточно приличный крутящий момент для такого размера двигателя и скорость вращения ~15 об/мин.
Схема фаз двигателя 28BYJ-48-12V Передаточное число редуктора двигателя 28BYJ-48-12V составляет примерно 64:1.
Контроллер
В качестве мозга электропривода использован микроконтроллер Atmega328. Он общается с внешним миром через шину RS485, по протоколу ModBus, шина выполнена на микросхеме MAX485. Шаговый двигатель подключается через транзисторную сборку Дарлингтона — ULN2003. В качестве датчика нулевой точки использован датчик Холла A3144, он служит для определения верхней нулевой точки (Zerro) положения шторы. Еще один датчик Холла (Mode) припаян непосредственно на самой плате и выполняет следующие функции:
- Активация режима обучения
- Аварийный останов двигателя
- Сброс контроллера на заводские установки
Дополнительно на плате контроллера предусмотрены входы для фоторезистора (например vt90n) и герконового датчика открытия окна.

Код прошивки микроконтроллера написан в среде Arduino IDE и находится в открытом доступе на моей странице GitHub.
Принцип работы
После подачи питания устройство несколькими миганиями светодиода, установленного на плате, сигнализирует о включении. После включения питание на двигатель не подается, штора находится в неподвижном состоянии.
Для того чтобы контроллер знал текущее положение шторы его необходимо обучить. Для этого в ручную опускаем штору в нижнее положение на необходимую длину, подносим кратковременно магнит к датчику Mode на контроллере (датчик установлен в районе светодиода), при этом светодиод начнет мигать, сигнализируя активацию режима обучения, на двигатель подается управляющий сигнал и штора начинает двигаться вверх до верхней нулевой точки где останавливается по сигналу от датчика Холла установленного в креплении корпуса контроллера. Контроллер при этом запоминает количество шагов двигателя и сохраняет это значение в энергонезависимой памяти EEPROM микроконтроллера.
Если к датчику Mode поднести кратковременно магнит во время движения шторы, то контроллер сразу остановит движение.
Для сброса контроллера на заводские установки необходимо поднести магнит к датчику Mode не менее чем на 5 секунд, при этом светодиод начнет быстро мигать, контроллер перезагрузится и установит все значения параметров на заводские.
Для управления положением шторы используется регистр set_position, положение задается значением от 0 до 100, где 0 — открыто, штора находится в верхней точке, а 100 — полностью закрыто, штора находится в нижнем положении.
Если в конфигурации контроллера активировать функцию «Определение текущего положения шторы после подачи питания» — регистр check pos flag (0- выключено, 1 — включено), то сразу после подачи напряжения на контроллер, штора начнет движение вверх до верхней точки, в этот момент контроллер запоминает количество шагов и по достижении верхней нулевой точки, штора возвращается в положение в котором находилась до момента подачи питания. Эта функция служит для определения положения шторы например когда отключили электричество. Если эта функция отключена, то при подачи питания штора остается в текущем положении до момента подачи команды set_position, как только контроллер получит первую, после подачи питания, команду он сначала запустит функцию определения текущего положения шторы и только после этого выставит положение шторы поступившее командой set_position.
Таблица данных регистров ModBus
Стандарт ModBus предусматривает отдельную таблицу для каждого типа данных, в контроллере же все данные хранятся в одном массиве в виде перекрывающихся таблиц. Значение всех регистров и адресов представлены в таблице:
Корпус контроллера
Корпус для устройства был спроектирован в программном комплексе Autodesk Fusion 360 и распечатан на 3D принтере из ABS пластика. Точность печати меня не устроила, поэтому детали корпуса были зашпатлеваны, отшлифованы, загрунтованы и окрашены акриловой краской из баллончика, это скрыло все изъяны 3D печати. После чего была изготовлена силиконовая форма и корпуса были отлиты из жидкого полиуретана. Про изготовление корпусов методом литья жидкого полиуретана в силиконовые формы постараюсь описать отдельной статьей.

Доработка механизма рулонной шторы
Внешний вид механизма рулонной шторы. Нам необходимо обрезать козырек над шестерней цепочки Нажимаем плоскогубцами защелку Снимаем верхнюю втулку Выступ во втулке служит механизмом стопора, при попытке размотать штору за полотно, выступ упирается в пружины и тем самым сжимает их на валу не позволяя втулке вращаться. Полностью разобранный механизм Сначала откусываем козырек бокорезами Зажимаем в патрон шуруповерта На крупнозернистой наждачной бумаге немного стачиваем край по окружности до нужного диаметра Должно получиться примерно вот так Примеряем, проворачиваем вал и смотри чтобы ничего не задевало и не подклинивало Собираем все в обратной последовательности Идеально
Немного про организацию моего подключения контроллеров электропривода рулонных штор
У меня в каждом окне стоит «комнатный» контроллер построенный на Arduino UNO + Ethernet Shield W5100, в задачи которого входит сбор показаний температуры воздуха в приточном клапане вентиляции, температуры радиаторов отопления (DS18B20), температуры и влажности помещения (DHT22), передача сигнала датчика движения (DSC LC-101) и датчика открытия окна (геркон), а так же управление сервоприводом приточной вентиляции.
Я решил добавить в него еще и функцию прослойки между шиной RS485 рулонных штор и сервером IoBroker, данные в который передаются по протоколу MQTT. Таким образом у меня на этот «комнатный» контроллер легли функции мастера сети ModBus. Все контроллеры штор одного окна подключены по шине RS485 к мастеру, он с периодом 2 секунды опрашивает подчиненных (контроллеры штор) и отдает текущие данные по протоколу MQTT на сервер умного дома IoBroker.
Так же мастер принимает команды по MQTT от сервера и отправляет их подчиненным. Так как подчиненных несколько и мастер не может одновременно отправить управляющие команды сразу всем, а по MQTT практически одновременно может поступить несколько команд (например команда открыть 1,2 и 3 штору) то мастер отработает только первую. Чтобы команды не терялись на мастере был организован буфер, что то подобное FIFO (англ. first in, first out — «первым пришёл — первым ушёл»). пришедшие данные по MQTT записываются в массив после чего мастер по в общем цикле программы проверяет свободность шины RS485 и отправляет команду ModBus из нулевого элемента массива очереди, сдвигает данные команд массива влево и цикл повторяется пока в массиве очереди есть данные.
Подключение электропривода
Для подключения контроллера используется всего 4 провода, 2 из них это +-12 В — питание контроллера и двигателя, и 2 провода для шины RS485.



Пишу, чтобы просто выразить свое восхищение! Вы возвращаете веру в разумность человечества.