Автоматические жалюзи на Arduino



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

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


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

    В качестве двигателя был использовал мотор-редуктор GM12-N20VA Micro Geared Motor:

    Данный двигатель обладает следующими характеристиками:
    • Рабочее напряжение: 2 — 5 В
    • Номинальное напряжение: 5 В
    • Передаточное отношение: 100:1
    • Скорость без нагрузки: 145 об/мин
    • Ток без нагрузки: 40 мА
    • Скорость под нагрузкой: 100 об/мин
    • Ток под нагрузкой: не менее 150 мА
    • Крутящий момент под нагрузкой: 0,2 кг/см
    • Ток при блокировке: 520 мА
    • Крутящий момент: 0,78 кг/см
    • Размер (Д х Ш х В): 24 x 12 x 10 мм
    • Выходной вал: D-образный, d=3 мм, длина 10 мм.


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


    Для управления мотором я использовал довольно распространенную, и давно зарекомендовавшую себя микросхему двухканального драйвера двигателей L293D.


    К выходам Output 1 и Output 2 микросхемы подключен мотор, в зависимости от сигналов на ногах Input 1 и Input 2 двигатель крутится в одну или другую сторону, аналогично и для второго канала.

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


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


    Для дистанционного управления я использовал ИК-приемник TSOP31236 с пультом из набора Мастер КИТ, но в данном случае можно использовать любой другой.


    Целиком схема выглядит следующим образом:


    В зависимости от данных, полученных на АЦП с датчика освещенности, створки жалюзи перемещаются в то или иное положение, при этом текущее положение створок контролируется датчиком, в качестве которого выступает потенциометр, подключенный к аналоговому входу Adruino.

    Для работы с ИК пультом я не стал изобретать велосипед и воспользовался уже готовой библиотекой IRremote.

    Вот собственно видео иллюстрирующее работу:


    В виду отсутствия солнечной погоды, чувствительность датчика была снижена.

    В перспективе хотелось бы перевести систему на более “серьезный” микроконтроллер, разместить все элементы компактно, на одной печатной плате и спрятать в корпус.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 71

      0
      А если вдруг на улице включится фонарь или машина во дворе посветит фарой не будет ли оно дергаться и пугать ночью?
        +5
        Проблемы со случайной кратковременной засветкой можно решить на программном уровне: при изменение освещенности производить повторный замер с небольшим промежутком времени.
        Ну а вообще световой поток от фонаря и даже от мощных автомобильных фар гораздо слабее потока от прямого солнечного света.
          0
          Лучше исполнительные механизмы включать раз в полчаса или в час по сигналу с RTC.
            0
            И пол часа или час жмурится от яркого солнца, я правильно вас понял? )
              0
              Ненене, с часами можно жалюзи наглухо закрывать хоть в четыре утра, хоть в полночь.
            0
            цифровой фильтр скользящего среднего или свертка сигнала с гауссовой функцией вполне справяться
          +9
          Вот бы ногу сделать на Arduino.
            +2
            Для открывания дверей в Сколково? =)
              +2
              неиллюзорная игра слов :)
            • UFO just landed and posted this here
              +1
              Можно было бы воспользоваться готовым серво-приводом. Они есть малогабаритные, в них уже установлен датчик поворота, мост и более-менее сносная регуляция (вы ПИД реализовали? Или просто смотрите на текущее значение АЦП?).
                0
                Можно было. Я смотрю текущее значение на АЦП
                  0
                  А чем такое решение обосновано? Все-таки внешняя механика не добавляет надежности. У вас потенциометр на противоположном конце жалюзи, судя по фото, закреплен?
                    0
                    Да все верно, потенциометр на противоположном конце. Вообщем то тут сам вид решения это пол дела, нужно еще как-то все установить чтобы крепко держалось механика поворачивалась и не очень уж «колхозно» смотрелось. В итоге финальное мое решение потребовало минимальных вмешательств напильника. Потенциометр и двигатель практически идеально вошли в сам поворотный механизм створок и довольно крепко держатся (потенциометр советский, у него не круглый вал с насечками, а скошенный).
                      0
                      Кстати, несоветские потенциометры имеют чтото типа гидромуфты для плавности хода, и их хорошо соединять трубочкой аквариумной с валом жалюзи.
                      Эх, еще бы подъем жалюзи сделать…
                        +1
                        Вместо потенциометра и L293 можно использовать микросхемы-драйверы с выходом для измерения тока, который цепляем на АЦП. Когда двигатель во что-то упирается — ток возрастает.
                          +1
                          а центральное положение створок как отстраивать?
                            0
                            а как открыть жалюзи на 75 %?
                              +1
                              Было бы желание. Можно сделать не упор, а «тормоза» для промежуточных значений. А можно вообще рассчитывать программно на какой угол открылись жалюзи при вращении двигателя за время t и с потребляемым током I.
                                0
                                некоторое время назад собирал простой wifi танк на распбери пай, и вот эта идея с расчетом времени t оставила довольно негативный отпечаток
                                  0
                                  И в чем была проблема? Если нету начальной точки — будет накапливаться ошибка, а здесь можно зарегистрировать два крайних положения, а зная еще и потребляемый ток, можно судить о скорости вращения.
                                    0
                                    Я даже не знаю как изложить. При коротких маневрах все было хорошо, но при длинных в следствии накапливаемой ошибки или каких-то других факторов, танк продолжал двигаться уже после того как кнопка была отпущена. Ну это, по большей части, отдельный разговор и реализация там была весьма специфичная.
                                    +1
                                    В автоматизации для всяких регулирующих задвижек-клапанов с электроприводом как раз время полного открытия экспериментально определяют. Для определения конечного положения контакты обычно есть, поэтому можно даже подстраивать время открытия «на лету».
                    0
                    А звук мотора не будет отвлекать? При переменной облачности и сильном ветре каждые пару минут будет срабатывать датчик освещенности. Соответственно и мотор будет подкручивать жалюзи с такой же частой.
                      +1
                      Ну это уже вопрос настройки чувствительности. Частично решение данной проблемы я изложил в ответе к первому комментарию: после увеличения освещенности выше определенного порога, проводить повторный замер с небольшим временным промежутком, а уже потом менять угол поворота. Как все будет работать на практике сказать не могу — на улице 4й день дождь.
                        +3
                        чтобы не дёргалось туда-сюда, можно добавить настриваемый гистерезис.
                          0
                          Не поможет. Гистерезис справляется при небольших изменениях освещенности. Но когда же начинается шествие туч по небу — освещенность меняется существенно и часто! Тут лучше бы смотреть на частоту срабатываний — если часто приходится закрывать — закрыть и не открывать до тех пор пока не закончатся колебания, например на протяжении интервала в пол часа. Можно предусмотреть плавный пуск, тогда моторчик не будет «бешенной табуреткой» метаться туда сюда — пока наберет обороты, уже и останавливаться надо.
                      –4
                      Эх, опередили :(
                      Сам писал о таком же.
                        +4
                        Тоже выкладывайте. Может у вас лучше вышло.
                          +2
                          Кто-то писал, а кто-то сделал.
                            +6
                            А я делал самодельный привод штор для балкона с мотор-редуктором от стеклоподъемников. На балконе много живых цветов, и для того, чтобы балкон не перегрелся, днем при появлении прямого солнечного света нужно закрывать шторы.
                            Есть ли смысл писать статью о моей конструкции?
                              +6
                              Если исходить из факта того, что тема домашней автоматизации тут всплывает с завидным постоянством, то ваш вопрос звучит как риторический.
                                +1
                                Главное в таких статьях — это источники деталей. Где достать редуктор, или как его сделать из подручных средств? Если есть доходчивый ответ на эти вопросы, то успех статьи гарантирован.
                                  0
                                  А еще, кстати, никогда не буду лишними такие детали, как крепление компонентов: двигателя, редуктора, самой ардуины, и т.д.
                                    0
                                    Крепление-то можно с оргстекла вырезать, морочно зато это то что можно достать и/или находится под рукой. В онлайн-магазинах периодически попадаются обрезки из оргстекла любых размеров. И в крайнем случае, из текстолита можно вырезать распорки.
                                    0
                                    Мотор-редуктор у меня куплен в автомагазине, крепежная пластина для него из текстолита, крепление к стене — стандартными мебельными уголками, ролики для троса сделаны из мебельных колес. Фактически во всем приводе из механики куплен только мотор-редуктор — все остальное нашлось у себя в квартире.
                                    Электроника сложней; так как мотор-редуктор довольно мощный, то приходится делать специальный преобразователь напряжения, и никаких ардуин — самодельная плата на STM8.
                                      0
                                      >Мотор-редуктор у меня куплен в автомагазине, крепежная пластина для него из текстолита, крепление к стене — стандартными мебельными уголками, ролики для троса сделаны из мебельных колес.

                                      На полном серьезе говорю: я бы с огромным удовольствием почитал детальное изложение всего этого, по шагам и с картинками. Примерно как вот здесь: habrahabr.ru/post/77067/

                                      Руки у меня вроде бы из того места растут, со столяркой проблем никогда не возникало, равно как и с делами вроде «самостоятельно повесить привод автоматических ворот гаража», но вот для того, чтобы самому придумать, как организовать крепление — вот на это чего-то не хватает. Возможно, просто какого-то толчка в нужном направлении (которым как раз может послужить пара-тройка подобных статей с инструкциями ;))
                                0
                                А какое питание?
                                  0
                                  ну вообще 5В 300мА на движке. Ардуинку пока от usb питаю, но можно и на блок ее повесить, думаю он вытянет.
                                    0
                                    Может 18650 спрятать возле платы, и вывести диод индикации разряда? Мотор от 3-4В вроде должен работать, хоть и медленней
                                      0
                                      ну да, и на одну плату запихать все под управлением AVRки или ARM cortex m0
                                      мотор прекрасно на 3х вольтах работает и шумит меньше.
                                      +2
                                      Да, это кстати идея… использовать ионисторы по 100...200Ф в качестве накопителей, и подзаряжать их от солнечной батареи — ватт на 10. Собственно, жалюзи же работает когда есть солнце — всегда будет энергия для работы редукторов.

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

                                      Ионисторы сейчас довольно распространены в районе 100Ф на напряжение 2.7В, два штуки последовательно и получишь до 5В на 50Ф — судя по потреблению полного заряда такого ионистора должно хватить примерно на 20-30сек работы мотора на «упор».
                                    +1
                                    Правильно ли понимаю, что ночью жалюзи будут открыты? Не хотелось бы так.
                                      +1
                                      Да, но это же нюансы, можно сделать по другому.
                                        0
                                        Так поставьте еще один датчик света, направленный внутрь помещения — если включили свет — закрываем жалюзи, чтоб снаружи не смотрели на нас, если темно и на улице темно -закрываем.
                                        0
                                        А в чем проблема?
                                        • UFO just landed and posted this here
                                            +2
                                            Солнечный свет в тысячи, даже в десятки тысяч раз сильнее рукотворного городского света. Даже в пасмурный день, очень сложно перебить солнечный свет искусственными источниками.
                                        +3
                                        В перспективе хотелось бы перевести систему на более “серьезный” микроконтроллер, разместить все элементы компактно, на одной печатной плате и спрятать в корпус.

                                        Зачем для этого более серьезный контроллер? Возьмите Arduino Mini 5V — он влезет аккурат рядом с моторчиком, туда же и СП меньшего размера (от калькулятора).
                                          +1
                                          а я бы купил просто микруху 168 атмел прошил бы его ардуино загрузчиом и с нимимальным обвесом туда убрал, по лбому меньше будет если даже в dip корпусе
                                            +6
                                            Если честно, я вообще не понимаю зачем тут что то больше чем attiny13.
                                          +7
                                          Странно, ниодного комента о том что Arduino фигня и надо хардкорно делать свой AVR контроллер с гемороем и паянием. Или вообще свой процессор для микронужд на транзисторах и лампах собирать.
                                            0
                                            Еще подтянутся, вот увидите :)
                                              +4
                                              Тут я!
                                              Хватило бы и AtTiny, все влезло бы на микроплату, да.
                                                +8
                                                Есть мнение, что в сабжевом случае можно было попробовать вообще без ардуины обойтись, на обычной аналоговой логике.
                                                  +1
                                                  В сабжевом — да. Но у сабжа есть и пути развития. Один из них, например, помимо полной автоматики добавить и ручное управление. Причем удаленное, через интернет. И с ардуиной это делается предельно просто: цепляем Ethernet shield, дописываем софт — готово.
                                                  0
                                                  Здесь использована отдельная микросхема, которая самопально напаяна на плату, а не готовый шилд — моя жажда «хардкорности» удовлетворена)
                                                  0
                                                  Тоже была такая идея, но живу на съемной квартире, будут сложности с креплением механизма. За реализацию спасибо!
                                                    0
                                                    На съемной квартире обычно можно не стесняясь колхозить:)
                                                      0
                                                      Кстати использую обычные жалюзи из леруа мерлен. Очень легко крепятся пластмассовыми зажимами к створке пластикового окна, легко можно демонтировать.
                                                      0
                                                      Интересно, а существуют ли готовые комплекты для автоматизации жалюзи?
                                                        +3
                                                        цены стартуют от $300
                                                          0
                                                          Дороговато. Тогда будем ждать когда Вы допилите свою систему!)
                                                        0
                                                        Редуктор надо бы с большим передаточным числом… и функционал развить: день, ночь, фары.
                                                        Хорошо бы еще и лог вести. Запоминать время, освещенность, выбранный вручную угол, день недели и время года. А контроллер жалюзи, после накопления логов, уже сам, на опережение угадывал бы ваши предпочтения. Например, а субботу он бы пускал в комнату немного больше солнышка, чем в понедельник (при прочих равных), когда вы напряженно трудитесь. То есть, такой, самообучающийся… )))
                                                          +9
                                                          и функционал развить: день, ночь, фары.

                                                          … передача сообщений морзянкой, приём морзянки с помощью датчика освещенности, скрытая городская mesh сеть на жалюзи…
                                                          0
                                                          Ааа! Ну вот так всегда. Я точно также начал разрабатывать подобное,
                                                          пробовал и шаговик, и сервопривод впихнул в корпус жалюзи, правда он торчал наполовину, но тоже решил — мотор-редуктор, потенциометр, и в итоге по сути делаем серву,
                                                          только два датчика света — внутри и снаружи, с подстраиваемой чуствиительностью программно,
                                                          сценарии — внутри светло, снаружи ночь -закрыто,
                                                          снаружи светлее чем внутри — открыто,
                                                          внутри светлее чем снаружи — закрыто в зависимости от уровня света внутри.
                                                          Датчик наружнего освещения — фотодиод, в корпусе, направляющим наружний свет в него и не дающий засветки от внутреннего, чтобы не думать о выносе датчика на улицу — все-таки это просто свет.
                                                          Плюс в плане интерфейс для внешнего управления закрыть-открыть для умного дома…
                                                          Но вы прямо написали так будто я сам в будущее свое заглянул!
                                                            +1
                                                            Хм. Напомнило штуку, которая на флоте применяется для передачи сигналов на другие корабли — прожектор с жалюзями.
                                                            Так можно научить умный дом подавать сигналы.
                                                              +2
                                                              Другим умным домам. Доиграетесь до ИИ
                                                              +2
                                                              Моторы бывают сразу в комплекте с энкодером
                                                              image
                                                                +1
                                                                Делал аналогичный проект (даже 2+ версии было).

                                                                Первая версия — для санузла на 1 этаже (загород) — было желание, что если кто-то зашел и включил свет (внутри) — жалюзи закрыть, иначе — жалюзи открыты и дают достаточно света днем, чтобы экономить электричество (в светлое время, когда жалюзи открыты снаружи все равно ничего не видно — проверено).

                                                                В первой версии был один датчик освещенности, смотрел внутрь — днем срабатывал плохо.
                                                                www.youtube.com/watch?v=gjbXbt_TEjc — тут видео есть с этой версией.

                                                                Потом сделал вторую версию — уже для окна рядом с лестницей на второй этаж — тут датчик освещенности смотрел наружу и если освещенность выше пороговой (для ее фиксации кнопочку сделал специальную — параметр в EEPROM сохраняю) — жалюзи открыты (освещаем лестницу, снаружи ничего не видно), если освещенность ниже пороговой — закрываем (ибо освещенный изнутри дом в темное время видно превосходно). Естественно, была кнопочка принудительного управления (после ее использования при изменении освещенности в «следующем цикле» — восстанавливается автоматическое управление). Естественно, чтобы не было «дрыгания» использовал гистерезис.

                                                                Вторая версия оказалась более жизнеспособная и для санузла переделал так же.

                                                                Потом оказалось, что при некоторых условиях окно на лестнице может мешать комфортному просмотру ТВ (солнечные лучи на закате пронизывают помещение и светят прямо на зрителей). Добавил к модулю nRF24l01+, сделал шлюз ИК-RF (точнее, он уже был, только чуть «дообучил»), дополнительно еще и управление по сети и через SMS прикрутил.

                                                                Работает не только управление, но и получение статусов (т.е. можно понять, закрыто или открыто, заодно и освещенность в «попугаях» легко доступна).

                                                                В обоих случаях использовал серву (червячный механизм тоже деинсталлировал). Использовал всего два положения — открыто и закрыто (промежуточные значения делать не стал, хотя и собирался).

                                                                Питание, к сожалению, через внешний блок питания (провод питания аккуратно прячется в уплотнителе окна).

                                                                В первом проекте использовал нано на атмега168, во втором — голая атмега168 на макетке
                                                                  0
                                                                  >В первой версии был один датчик освещенности, смотрел внутрь — днем срабатывал плохо.

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

                                                                  image

                                                                Only users with full accounts can post comments. Log in, please.