Рулонные шторы на электроприводе (двигатель 28BYJ-48)

Дим M
Topic author, Администратор
Администратор
Avatar
Дим M
Topic author, Администратор
Администратор
Reputation: 74
Posts: 1176
Joined: 5 Apr 2013
With us: 6 years 1 month

#1by Дим » 13 May 2019, 20:15

Приобрел в магазине рулонную штору Inspire Blackout 140х175. И решил доработать её, а именно установить электромотор для подъема / опускания шторы. В общем то таких переделок в интернете не мало, но эту статью я пишу в основном для себя - дабы не забыть что как делал. :grin: По мере продвижения работ будет добавляться описание проведённых переделок.
i love you mxIni Mysql

! ! !


Дим M
Topic author, Администратор
Администратор
Avatar
Дим M
Topic author, Администратор
Администратор
Reputation: 74
Posts: 1176
Joined: 5 Apr 2013
With us: 6 years 1 month

#2by Дим » 16 May 2019, 20:24

Сделал пробный пуск - не удача. Оказалось что моторчик слабоват для мои штор. Видимо сказался большой вес, шторы плотные (Blackout) да и широкие. Так что пока заканчиваю данную разработку и оставлю тут код, который наваял. Может потом займусь переделкой вертикальных жалюзи или ещё для чего нибудь. Код - при нажатии кнопки двигатель включается. Мотор 28BYJ-48 и драйвер ULN2003

Code: Select all

#include <AccelStepper.h>
#define HALFSTEP 8
// Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4 
// для использования AccelStepper с 28BYJ-48
AccelStepper stepper1(HALFSTEP, 8, 10, 9, 11);

#define PIN_BUTTON1 6   // пин кнопки 1
bool     button_state1      = false; // статус кнопки 1
uint32_t ms_button         = 0;
uint32_t ms_auto_click     = 0;
uint8_t mig = 0;

void setup() {
     Serial.begin(9600);
   Serial.println("Test button ...");
   pinMode(PIN_BUTTON1, INPUT_PULLUP);
   
  stepper1
.setMaxSpeed(900);
  stepper1.setSpeed(900);
}

void loop() {  
    Func_buttons_control
();
 //  stepper1.runSpeed();
} 

void Func_buttons_control
()
{
  uint32_t ms    = millis();
  bool pin_state1 = digitalRead(PIN_BUTTON1); // 1 кнопка
  
// Фиксируем нажатие кнопки   1
  if(mig == 0 &&  pin_state1  == LOW && !button_state1 && ( ms - ms_button ) > 50 ){
    button_state1      = true;
    ms_button         = ms;
    Serial.println("Press key"); //короткое нажатие
    mig = 1;
   }
// После 2000 мс нажатия кнопки каждые 500 мс фиксируем событие нажатия  кнопки 1
   if( pin_state1  == LOW && ( ms - ms_button ) > 2000 && ( ms - ms_auto_click )>500 ){
      ms_auto_click     = ms;
      Serial.println("Auto press key");   //длительное нажатие
      mig = 2;
   }
// Фиксируем отпускание кнопки   1
   if(mig == 2 &&   pin_state1 == HIGH && button_state1 && ( ms - ms_button ) > 50  ){
      button_state1      = false;   
      ms_button         
= ms;
      Serial.println("No Press"); //действие после отпуска длительного нажатия
      mig = 0;
      stepper1.stop();
   }
   if(mig == 1 ){stepper1.runSpeed();}
}
 
i love you mxIni Mysql


  • Similar Topics
    Replies
    Views
    Last post

Return to “Прочая электроника”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest