Автоматическая рулонная штора своими руками.

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

Доброго времени суток всем. По осени вьехал я другую квартиру, пока была зима света за окошками было мало и шторы я проктически не открывал особенно в спальне из труднодоступности (стит кравать и тумбочка под телевизор соответственно чтобы добраться до окна надо перелезь через кровать ширина которой 1,8 м). Но вот пришла весна за окнами заиграло солнышко и сперва было принято решение сделать раздвижные шторы, но в связи со сложностью и не надежностью механизма(тросик подпружинивающий механизм ролики и пр.) решение пало на рулонную штору. Саму штору купил по скидке за 14 е размер шторы 1,2 м на 1,7 м, а окна 1,1 м на 1,3 м. В инструкции к шторе было описание как уменьшить ширину чем я и воспользовался, длинну трогать не стал. Привод был взят из офисного принтера моторчик  на 6 в, начал тестировать на ардуино уно и драйвером двигателя  HG7881. Программа была взята отсюда  https://www.youtube.com/watch?v=PjR9jlP4644 от Дмитрия Осипова и была упрощена (если кому интересно могу выложить свой код). Что имеем на данный момент: открытие и закрытие с тв пульта нажатием 2х кнопок, первое нажатие запускает мотор второе останавливает. Что еще хочется: чтобы штора сама останавливалась в крайних положениях (наверное лучше сделать по времени работы т к не хочется заморачиваться с концевмками, лишние детали а главное провода). Попробовал датчик холла но был облом датчик срабатывает только когда магнит подносится вплотную вообщем оказалась капризная штука. Если у кого есть решение или идеи по поводу остановки штор очень прошу. поделитесь. Зарание всем огромное спасибо., постараюсь выложить видео то что получилось или ссылку.

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

Выкладываю ссылку на видео http://youtu.be/-ECubwkbSzg

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

датчик - между рамой и барабаном намотки шторы, блестяшки, две, приклеить на штору

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

SU-27-16 пишет:

датчик - между рамой и барабаном намотки шторы, блестяшки, две, приклеить на штору

Спасибо за совет, но получается 8 проводов, с герконами 4 провода. Так же как и с датчиками холла очень маленькие зазоры 1 мм.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

один датчик - три провода и две блестяшки на шторе ( +, -, сигнал )
ножки разогнуть, под кронштейны проставки по 3...5 мм
:)

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

SU-27-16 пишет:

один датчик - три провода и две блестяшки на шторе ( +, -, сигнал )
ножки разогнуть, под кронштейны проставки по 3...5 мм
:)

Все, торможу пора спать. Один датчик на верх, а блистяшки в начале шторы и в конце. А эта штука дружит с ардуино? 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

да

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

SU-27-16 пишет:

да

Спасибо, купим, попробуем.

 

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014
#include <IRremote.h>  
 
int RECV_PIN = 11; 
IRrecv irrecv(RECV_PIN);
decode_results results;
boolean a = false; 
boolean b = false; 
 
void setup()
{
  irrecv.enableIRIn(); 
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
 
} 
 
void loop() 
{
 if (irrecv.decode(&results))
    {
     delay(300); 
 
 if (results.value == 0xDAEA83EC)
       a=true;
 if (results.value == 0x2BAFCEEC) 
       b=true; 
  
 if (a)
      {
       digitalWrite(3, HIGH);
       digitalWrite(5, LOW);
      }
      {
       delay (2000);       
      }
 if (a)
      {
      digitalWrite(3, LOW);
      digitalWrite(5, LOW);
      }
      {
       delay (2000);       
      }

 if (b)
      {
       digitalWrite(5, HIGH);
       digitalWrite(3, LOW);
      }
      {
       delay (2000);
      }
  if (b)
      {
      digitalWrite(5, LOW);
      digitalWrite(3, LOW);
      }
      {
       delay (2000);       
      }
delay(50); 
 
irrecv.resume(); 
 
}
 
}

 

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

Всетаки решил сделать по времени, для шторы в 1,5 м плюс минус см не играет роли. Со временем хочу подправить код для ручной коректировки, но пока не хватает знаний, усиленно учу мат. часть :).

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

опытный чел недавно подсказал....
если в операторе if (results.value == 0xDAEA83EC) ошибиться вот так if (results.value = 0xDAEA83EC) то код скомпилится, но работать не будет, придётся долго искать ошибку :(
надо делать так 
if (0xDAEA83EC == results.value) тогда при ошибке if (0xDAEA83EC results.value) компилятор сразу будет ругаться....
тонкости языка/компилятора СИ

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

про корректировку надо подумать....
при вставке кода - ставь ещё галочку "свернуть"

#include <IRremote.h>  
//int RECV_PIN = 11;            переменнные в СИ с маленькой буковки принято,
//                              а через дефис - не выделяется щелком мыши
#define recvPin 11           // так экономится память МК
#define driverA 3            // а вдруг пины захочешь поменять ? править по всей программе ?
#define driverB 5
IRrecv irrecv( recvPin );
decode_results results;
//boolean a = false;            не нужны они, и в СИ принято или 0 , 1 или LOW , HIGH
//boolean b = false;
#define timeStora 2000
#define timeIR 300
//=====================================================
void setup()
{
  irrecv.enableIRIn(); 
  pinMode( driverA, OUTPUT );
  pinMode( driverB, OUTPUT);
}
//=====================================================
// функция-подпрограмма поднятия/опускания шторы
// 0 - опустить , 1 - поднять
void StoraUpDown( boolean direction )
{
  digitalWrite( driverA, direction );
  digitalWrite( driverB, !direction );
  delay ( timeStora );       
  digitalWrite( driverA, LOW );
  digitalWrite( driverB, LOW );
}
//=====================================================
void loop() 
{
// табуляцию надо применять всегда - удобнее читать ( на два знакоместа, например )
  if ( irrecv.decode(&results) )
    {
      delay( timeIR ); 
      if ( 0xDAEA83EC == results.value )
        {
          StoraUpDown( HIGH );
        }
      if ( 0x2BAFCEEC == results.value )
        {
          StoraUpDown( LOW );
        }
      irrecv.resume(); 
    }
}
//=====================================================

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

Спасибо большое за подсказки и ссылку. 

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

Ребята, помогите ну уже голову сломал, переделал код от Дмитрия Осипова, хотел чтоб мотор работал определенное время и останавливался, а он гоняет по замкнутому кругу без остановок и на кнопки пульта не реагирует, подскажите где ошибка. Зарание спасибо.

#include <IRremote.h>  
 
int RECV_PIN = 11; 
IRrecv irrecv(RECV_PIN);
decode_results results;
int a=0; 
int b=0; 
 
void setup()
{
  irrecv.enableIRIn(); 
  pinMode(2, OUTPUT);
  pinMode(4, OUTPUT); 
} 
void loop() 
{
 if (irrecv.decode(&results))    
     delay(300); 
 
 if (results.value == 0xDAEA83EC) { a=a+1;}
 if (results.value == 0x2BAFCEEC) { b=b+1;}
  
if (a=1)
      {
       digitalWrite(2, HIGH);
       digitalWrite(4, LOW);      
       delay (25500);       
      }
      
if (a=0)
{digitalWrite(2, LOW);
 digitalWrite(4, LOW);}
 
if (b=1)
      {
       digitalWrite(2, LOW);
       digitalWrite(4, HIGH);
       delay (41000);
      }
      
if (b=0)
{digitalWrite(2, LOW);
 digitalWrite(4, LOW);}      
 
delay(50); 
 
irrecv.resume(); 
 

 
}

 

ВовВовыч
Offline
Зарегистрирован: 14.10.2013

A обнулять переменные a и b не планируешь?После первого-же нажатия кнопок пульта они станут=1.А что дальше?

Да и от делаев лучше уходить.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

код из #12 - пробовал ?

код из #15 - добавь строку 24А >>>>>>      a=0;
....так же и для b

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

СПАСИБО Вам огромнейшее при огромнейшее за код #12, я его сразу не заметил. Я его немного переделал,  так как время опускания и поднятия шторы разное. Сейчас все работает как надо, только кнопки нельзя путать :).

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

#include <IRremote.h>  
//int RECV_PIN = 11;            переменнные в СИ с маленькой буковки принято,
//                              а через дефис - не выделяется щелком мыши
#define recvPin 11           // так экономится память МК
#define driverA 3            // а вдруг пины захочешь поменять ? править по всей программе ?
#define driverB 5
IRrecv irrecv( recvPin );
decode_results results;
#define timeStora1 25300
#define timeStora2 42500
#define timeIR 300
//=====================================================
void setup()
{
  irrecv.enableIRIn(); 
  pinMode( driverA, OUTPUT );
  pinMode( driverB, OUTPUT);
}
//=====================================================
// функция-подпрограмма поднятия/опускания шторы
// 0 - опустить , 1 - поднять

void StoraUp( boolean direction )
  {
    digitalWrite( driverA, direction );
    delay ( timeStora1 );
    digitalWrite( driverA, LOW );
  }  
void StoraDown( boolean direction )

  { digitalWrite( driverB, !direction );
    delay ( timeStora2 );  
    digitalWrite( driverB, LOW );
  }
//=====================================================
void loop() 
{
// табуляцию надо применять всегда - удобнее читать ( на два знакоместа, например )
  if ( irrecv.decode(&results) )
    {
      delay( timeIR ); 
      if ( 0xDAEA83EC == results.value )
        {
          StoraUp( HIGH );
        }
      if ( 0x2BAFCEEC == results.value )
        {
          StoraDown( LOW );
        }
      irrecv.resume(); 
    }
}
//=====================================================

 

Araris
Araris аватар
Offline
Зарегистрирован: 09.11.2012

Навеяло: Общество Анонимных Ардуинщиков. Если серьезно - респект Вам.

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

Araris пишет:

Навеяло: Общество Анонимных Ардуинщиков. Если серьезно - респект Вам.


спасибо за поддержку

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

:)

TSheff
Offline
Зарегистрирован: 10.04.2015

Логичнее так:

void StoraUpDown( boolean direction )
{
  digitalWrite( driverA, direction );
  digitalWrite( driverB, !direction );
  if (direction) {
    delay ( timeStora1 );
  } 
  else {
    delay ( timeStora2 );
  }
  digitalWrite( driverA, LOW );
  digitalWrite( driverB, LOW );
}

 

Joiner
Offline
Зарегистрирован: 04.09.2014

Ардуинка это слишком круто для такого устройства. Из пушки по воробьям

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

вместо timeStora1 , 2 - лучше timeStoraUp и timeStoraDown , чтобы в середине кода не вспоминать - чё 1 и чё 2... ( это когда код вырастет до 3...4 экранов монитора )
мнемоника определений....

Joiner ,  а вы с чего начинали ? 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

Joiner пишет:

Ардуинка это слишком круто для такого устройства. Из пушки по воробьям


почему? про мини самое то. цеена и простота абгрейда ну и размер конечно.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Vallu пишет:

Выкладываю ссылку на видео http://youtu.be/-ECubwkbSzg

стрелять надо не в штору , а в ИК приёмник !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
:)-

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

SU-27-16 пишет:

вместо timeStora1 , 2 - лучше timeStoraUp и timeStoraDown , чтобы в середине кода не вспоминать - чё 1 и чё 2... ( это когда код вырастет до 3...4 экранов монитора )
мнемоника определений....

Joiner ,  а вы с чего начинали ? 


да, начинаю птихоньку врубаться. а код увеличется еде форточка добавится и промежуточныеостановы.

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

простите пишу с тел. в машине.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

почему? про мини самое то. цеена и простота абгрейда ну и размер конечно.
не знаю что он имел ввиду, зайдёт - может расскажет.....
.....а в принципе и ATtiny13 ( я люблю 25, 45, 85 ) с этим справится...
:)

найди даташит ATtiny85/V , почитай..... придётся паять, зато в 4 раза дешевле !

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Vallu пишет:
простите пишу с тел. в машине.

не нано так делать ! :(

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

реакция на #25 ?

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

SU-27-16 пишет:

реакция на #25 ?


Кронштадт и Суоми 50% на 50%

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

SU-27-16 пишет:

почему? про мини самое то. цеена и простота абгрейда ну и размер конечно.
не знаю что он имел ввиду, зайдёт - может расскажет.....
.....а в принципе и ATtiny13 ( я люблю 25, 45, 85 ) с этим справится...
:)

найди даташит ATtiny85/V , почитай..... придётся паять, зато в 4 раза дешевле !


1,.5 вро на ебее доставка бесплатно прямо в квртиру 2 едели.срок поставки.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

1,.5 вро на ебее доставка бесплатно прямо в квртиру 2 едели.срок поставки.
тоже правильно ! - раз только начал.... :)
Кронштадт и Суоми 50% на 50%    
Кронштадт и Ленинский пр., типа пересечение с Жукова - 70% на 30% ? :)
.....от Юноны западнее 2...3 км ?

Joiner
Offline
Зарегистрирован: 04.09.2014

SU-27-16 пишет:

вместо timeStora1 , 2 - лучше timeStoraUp и timeStoraDown , чтобы в середине кода не вспоминать - чё 1 и чё 2... ( это когда код вырастет до 3...4 экранов монитора )
мнемоника определений....

Joiner ,  а вы с чего начинали ? 

С АРДУИНКИ :)

Заразился ардуинкой и болен до сих пор :). Легко, доступно, интересно.

Mikhail_Sakh
Offline
Зарегистрирован: 03.04.2014

Vallu пишет:

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

Озадачивался таким вопросом -http://arduino.ru/forum/apparatnye-voprosy/kontrol-nagruzki-el-dvigatelya . Пока не нашел ничего лучше, чем контролировать нагрузку двигателя. Поигрался с датчиком INA219. Понравился. Вот только дело до соединения воедино штор и INA не дошло - переезд на новую квартиру, ремонт и сопутствующая суета отложили этот вопрос надолго... А если реализовать контроль нагрузки, то отпадает много сопутствующей шелухи: лишние провода, датчики, калибровка, проскальзывание мимо датчиков и т. д.... 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Mikhail_Sakh пишет:

Озадачивался таким вопросом -http://arduino.ru/forum/apparatnye-voprosy/kontrol-nagruzki-el-dvigatelya . Пока не нашел ничего лучше, чем контролировать нагрузку двигателя. Поигрался с датчиком INA219. Понравился. Вот только дело до соединения воедино штор и INA не дошло - переезд на новую квартиру, ремонт и сопутствующая суета отложили этот вопрос надолго... А если реализовать контроль нагрузки, то отпадает много сопутствующей шелухи: лишние провода, датчики, калибровка, проскальзывание мимо датчиков и т. д.... 

ГЕ-НИ-АЛЬ-НО!

В качестве датчика предлагаю  датчик дыма или температурный, размещаем на двигателе и как только шторы куда то уперлись и пошел дымок, сразу снимаем питание :)

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

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

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

В продолжение темы, решил пойти дальше и сделать автопроветривание т.е. чтобы по нажатию кнопки на пульте открывалась форточка. Выкладываю фото будущего механического привода (был куплен в Питере на Школьной в магазине "Мебельный самоделкин" за 205 р. Как приеду домой сразу продолжу фотоотчет.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Vallu пишет:

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

Блин, прям сомнения замучали. Потратил 10 минут на изучение разных систем.. И о чудо.. Везде датчик Хола стоит на двигателе!!!

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Просто, кроме датчика Хола, нужно подпружинить края. Что бы при подходе к краям  ролики упирались в пружинки . Что на датчике сразу будет видно понижением оборотов.

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

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

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Vallu пишет:

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

Я за вариант, что шторы это нечто декоративное. И двигать их туда сюда лишено смысла. Раньше когда окна были просто дыркой ( пусть даже застекленной), в которую дул ветер. Шторы несли практический смысл, как утеплитель.

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

Joiner
Offline
Зарегистрирован: 04.09.2014

Vallu пишет:

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

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

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

Joiner пишет:

Vallu пишет:

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

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

Это шаговый двигатель на 12 вольт с редуктором. При подаче на него 5 вольт пальцами не остановить и ток при этом вообще не возрастает, он ворота гаражные откроет тока медленно если крепления не сломает :)

Joiner
Offline
Зарегистрирован: 04.09.2014

Puhlyaviy пишет:

Vallu пишет:

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

Я за вариант, что шторы это нечто декоративное. И двигать их туда сюда лишено смысла. Раньше когда окна были просто дыркой ( пусть даже застекленной), в которую дул ветер. Шторы несли практический смысл, как утеплитель.

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

Если 1 этаж и окна хорошо просматриваются, то жить как на витрине, по-моему не очень.....

Joiner
Offline
Зарегистрирован: 04.09.2014

Vallu пишет:

Это шаговый двигатель на 12 вольт с редуктором. При подаче на него 5 вольт пальцами не остановить и ток при этом вообще не возрастает, он ворота гаражные откроет тока медленно если крепления не сломает :)

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

Штору потянет, форточку - нет........или с доп.редуктором оооооооочень медленно.

Вот он изнутри http://arduino.ru/forum/proekty/trudnyi-put-k-chpu?page=1#comment-108846

Посмотрите на эти крошечные пластмассовые шестеренки.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Joiner пишет:

Если 1 этаж и окна хорошо просматриваются, то жить как на витрине, по-моему не очень.....

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

Если вас так волнует что вы в витрине,  повесте жалюзи,ну или вообще окна кирпичем заложите :)

Vallu
Vallu аватар
Offline
Зарегистрирован: 17.10.2014

Joiner пишет:

Vallu пишет:

Это шаговый двигатель на 12 вольт с редуктором. При подаче на него 5 вольт пальцами не остановить и ток при этом вообще не возрастает, он ворота гаражные откроет тока медленно если крепления не сломает :)

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

Штору потянет, форточку - нет........или с доп.редуктором оооооооочень медленно.

Вы меня растраиваете :( . Значить опять лепить придется из подручных средств. Дома буду в воскресенье, превым делом соберу миханизм и попробую, отчет сразу выложу.