Автоматические ворота гаража

Aibo
Offline
Зарегистрирован: 06.10.2016

Спасибо ! понял , завтра попробую

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

А так отключен и ИК датчик наличие препятствия если ворота закрываются.

/*Gate.ino
*/
// повер
//#include "Cl_power.h"
//const uint32_t time_5sec = 5000; // 5 секунд
//const byte Power_pin = 10;   // силовая линия
//Cl_power  Power(Power_pin, 1); // 1 вкл
// моторы
#include "Cl_motor.h"
const byte Motor1_Open_pin  = 2;   // двигатель 1 откр   0 вкл / 1 выкл
const byte Motor1_Close_pin = 3;   // двигатель 1 закр   0 вкл / 1 выкл
const byte Gate1_Open_pin   = 6;   // концевик  1        1 сработал / 0 нет
const byte Gate1_Close_pin  = 8;   // концевик  3        1 сработал / 0 нет
Cl_motor Motor1(Motor1_Open_pin, Motor1_Close_pin, Gate1_Open_pin, Gate1_Close_pin, 0, 1);
const byte Motor2_Open_pin = 4;    // двигатель 2 откр  0 вкл / 1 выкл
const byte Motor2_Close_pin = 5;   // двигатель 2 закр  0 вкл / 1 выкл
const byte Gate2_Open_pin  = 7;     // концевик 2       1 сработал / 0 нет
const byte Gate2_Close_pin = 9;     // концевик 4       1 сработал / 0 нет
Cl_motor Motor2(Motor2_Open_pin, Motor2_Close_pin, Gate2_Open_pin, Gate2_Close_pin, 0, 1);
// кнопки и датчики
#include "Cl_do_btn.h"
const byte Btn_Open_pin = 11;      // вкл радиоканал      0 нажата / 1 нет
Cl_do_btn Btn_Open(Btn_Open_pin, 0); // сработка 0
void Do_Btn_Open() {
//  Power.ON();
  Motor1.Open();
  Motor2.Open();
}
void Do_Power_OFF() {
  Motor1.Stop();
  Motor2.Stop();
}
const byte Btn_Close_pin = 12;     // выкл радиоканал     0 нажата / 1 нет
Cl_do_btn Btn_Close(Btn_Close_pin, 0);// сработка 0
void Do_Btn_Close() {
 // Power.ON();
  Motor1.Close();
  Motor2.Close();
}
//const byte IR_sens_pin = 13;    //ИК датчик             1 сработал / 0 нет
//Cl_do_btn IR_sens(IR_sens_pin, 1);// сработка 1
//void Do_IR_sens() {
//  Motor1.Stop();
//  Motor2.Stop();
//  Power.OFF();
//}

void setup() {
 // Power.setup();
//  Power.time_OFF = time_5sec; // максимальное время для закрытия дверей
  Motor1.setup();
  Motor2.setup();
  Btn_Open.setup();
  Btn_Close.setup();
//  IR_sens.setup();
}

void loop() {
//  Power.loop(& Do_Power_OFF);
  Motor1.loop();
  Motor2.loop();
  Btn_Open.loop( & Do_Btn_Open);
  Btn_Close.loop(& Do_Btn_Close);
 // IR_sens.loop(& Do_IR_sens);
}

 

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

qwone пишет:

void Do_Power_OFF() {
 // Motor1.Stop();  // так вообще уберете зависимость от времени
 // Motor2.Stop(); // Моторы будут работать когда сработают конечники
}

Можно вообще убрать полностью убрать класс Power и все связаное с ним.

Я так понял идея была несколько иная. qwone ваш скетч хорош, визуально удобно сделано с библиотеками. И настойки меняются удобно.

Немного про алгоритм - Ворота распашные и на одной воротине есть нащельник, то есть она должна открываться первой и закрываться последней. Из за этого алгоритм работы там такой:

1 Ворота закрыты
2 Нажали кнопку открыть
3 Открвается левая створка (на ней нащельник)
4 Через 5 сек начинает открываеться правая (задержка именно для этого)
5 Ворота открыты

назад наоборот

1 Ворота открыты
2 Нажали кнопку закрыть
3 Закрывается правая створка (БЕЗ нащельника)
4 Через 5 сек начинает закрываться левая
5 Ворота закрыты

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

К стати на форумхусе еще 3-4 интересных решения было предложено по поводу алгоритма работы. Вот сколько живу а все убеждаюсть что сколько людей столько и мений.

По поводу присвоения значений в заголовочном файле h видимо в ранних версиях IDE нет такой возможности именно у компилятора. В 1.6.13 все компилится нормально.

Dedan
Offline
Зарегистрирован: 18.12.2016

Ожила тема. Сейчас после операции в себя приду и тоже подключусь. 

Фото наделаю. 

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

Вычитал, что народ на приводы подает до 80 вольт. Это значит будут работать вдвое быстрее. 

Правда я за 15 лет уже сменил 2 привода. Один съел гайку без смазки, а во втором лопнула шестерня в редукторе.

Как то они будут работать на удвоенной скорости?  Редуктор там пластмассовый выдюжит ли?

У китайцев на али, линейные приводы есть с разными моторами, разными усилиями  и блоки управления к ним.

Около 8-10тыр за комплент

Но сделать самому много интереснее.

Правда тарелочных приводов уже почти нет. Отошол спрос и возить перестали.

arDubino
Offline
Зарегистрирован: 12.01.2017

чтоб быстрее работало надо еще раз скажу помогать обычной механикой. компенсировать вес ворот ГРУЗОМ обычные блоки и тросик и вуаля можете хоть пальцем закрывать или открывать. ну конечно штыры должны быть смазаны или на подшипниках сейчас же металл.двери делают даже там есть. зачем насиловать мехнику если можно проще.

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

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Andrey12 пишет:

1 Ворота закрыты
2 Нажали кнопку открыть
3 Открвается левая створка (на ней нащельник)
4 Через 5 сек начинает открываеться правая (задержка именно для этого)
5 Ворота открыты

назад наоборот

1 Ворота открыты
2 Нажали кнопку закрыть
3 Закрывается правая створка (БЕЗ нащельника)
4 Через 5 сек начинает закрываться левая
5 Ворота закрыты

Скетч будет таким. Полный здесь https://yadi.sk/d/P3todK3f3F4ZDF

Головной файл здесь

/*Gate_v3.ino
*/
// двери
// правая без нащельника
#include "Cl_motor.h"
const byte Motor1_Open_pin  = 2;   // двигатель 1 откр   0 вкл / 1 выкл
const byte Motor1_Close_pin = 3;   // двигатель 1 закр   0 вкл / 1 выкл
const byte Gate1_Open_pin   = 6;   // концевик  1        1 сработал / 0 нет
const byte Gate1_Close_pin  = 8;   // концевик  3        1 сработал / 0 нет
Cl_motor Motor1(Motor1_Open_pin, Motor1_Close_pin, Gate1_Open_pin, Gate1_Close_pin, 0, 1);
// левая с нащельником
#include "Cl_motor_master.h"
const uint32_t time_5sec = 5000; // 5 секунд
const byte Motor2_Open_pin = 4;    // двигатель 2 откр  0 вкл / 1 выкл
const byte Motor2_Close_pin = 5;   // двигатель 2 закр  0 вкл / 1 выкл
const byte Gate2_Open_pin  = 7;     // концевик 2       1 сработал / 0 нет
const byte Gate2_Close_pin = 9;     // концевик 4       1 сработал / 0 нет
Cl_motor_master Motor2(Motor2_Open_pin, Motor2_Close_pin, Gate2_Open_pin, Gate2_Close_pin, 0, 1);
void Do_Motor2_Open() {
  Motor1.Open();
}
void Do_Motor2_Close() {
  Motor1.Close();
}
// кнопки и датчики
#include "Cl_do_btn.h"
const byte Btn_Open_pin = 11;      // вкл радиоканал      0 нажата / 1 нет
Cl_do_btn Btn_Open(Btn_Open_pin, 0); // сработка 0
void Do_Btn_Open() {
  Motor2.Open();
}
const byte Btn_Close_pin = 12;     // выкл радиоканал     0 нажата / 1 нет
Cl_do_btn Btn_Close(Btn_Close_pin, 0);// сработка 0
void Do_Btn_Close() {
  Motor2.Close();
}
const byte IR_sens_pin = 13;    //ИК датчик             1 сработал / 0 нет
Cl_do_btn IR_sens(IR_sens_pin, 1);// сработка 1
void Do_IR_sens() {
  Motor1.Stop();
  Motor2.Stop();
}
void setup() {
  Motor1.setup();
  Motor2.setup();
  Motor2.time_lag=time_5sec; // выставить задержку открывания из-за наличия нащельника
  Btn_Open.setup();
  Btn_Close.setup();
  IR_sens.setup();
}
void loop() {
  Motor1.loop();
  Motor2.loop(& Do_Motor2_Open,& Do_Motor2_Close);
  Btn_Open.loop( & Do_Btn_Open);
  Btn_Close.loop(& Do_Btn_Close);
  IR_sens.loop(& Do_IR_sens);
}

 

Aibo
Offline
Зарегистрирован: 06.10.2016

Проверил на столе последний скетч все работает , как описано.

Единственное замечание : Нет управления включением питания на двигатели.

А это надо . И еще хотелось бы задействовать один пин для управления сигнальными лампами (которые ставят на столбики). Лампы светятся ( а лучше мигают, когда работают моторы приводов)   

Dedan
Offline
Зарегистрирован: 18.12.2016

Aibo пишет:

Проверил на столе последний скетч все работает , как описано.

Единственное замечание : Нет управления включением питания на двигатели.

А это надо . И еще хотелось бы задействовать один пин для управления сигнальными лампами (которые ставят на столбики). Лампы светятся ( а лучше мигают, когда работают моторы приводов)   

Поясните плиз..

В скетче нет индикации на дисплее?

Схема "обвязки"  платы откуда? 

У меня приготовлены нано и уно и платки с 4 реле.

В принципе, можно в схему еще добавить привод для штырей. Один актуатор закрепить на двух штырях и они будут надежно фиксировать створки!  

зы. Схему не вствить.

 

 

Aibo
Offline
Зарегистрирован: 06.10.2016

Схему рисовал по скетчу , дисплея там нет ..

Aibo
Offline
Зарегистрирован: 06.10.2016

А схему заархивировать и вставиться

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Aibo пишет:
Единственное замечание : Нет управления включением питания на двигатели.А это надо . И еще хотелось бы задействовать один пин для управления сигнальными лампами (которые ставят на столбики). Лампы светятся ( а лучше мигают, когда работают моторы приводов)  

Полный скетч здесь https://yadi.sk/d/ssp7XTvc3F9wM7

Головной файл выкладываю 

/*Gate_v4.ino  
  лампочки-мигалки          ->13 (Led_pin)  0 выкл / 1 вкл
  подача энергии на моторы  ->A0 (Рower_pin) 0 вкл / 1 выкл
  механизм правой двери без нащельника
       мотор +          -> 2 (Motor1_Open_pin)  0 вкл / 1 выкл
       мотор -          -> 3 (Motor1_Close_pin) 0 вкл / 1 выкл
       кончник открытия -> 6 (Gate1_Open_pin)   1 сработал / 0 нет
       кончник закрытия -> 8 (Gate1_Close_pin)  1 сработал / 0 нет
  механизм левой двери с нащельником
       мотор +          -> 4 (Motor2_Open_pin)  0 вкл / 1 выкл
       мотор -          -> 5 (Motor2_Close_pin) 0 вкл / 1 выкл
       кончник открытия -> 7 (Gate2_Open_pin)   1 сработал / 0 нет
       кончник закрытия -> 9 (Gate2_Close_pin)  1 сработал / 0 нет
  ИК датчик препятсnвия закрытия -> 10 (IR_sens_pin) 1 сработал / 0 нет

  кнопка открытия дверей  -> 11 (Btn_Open_pin)       0 нажата / 1 нет
  кнопка закрытия дверей  -> 12 (Btn_Close_pin)      0 нажата / 1 нет
*/
// лампочки-мигалки
#include "Cl_led.h"
const byte Led_pin  = 13;
const uint32_t time_1sec = 1000; // частота мигания 1 секунда
Cl_led Led(Led_pin, 1);
// подача энергии на моторы
#include "Cl_power.h"
const byte Power_pin  = A0;
Cl_power Power(Power_pin, 0);
void Do_Power_ON() {
  Led.blink();
}
void Do_Power_OFF() {
  Led.OFF();
}
// двери
// правая без нащельника
#include "Cl_motor.h"
const byte Motor1_Open_pin  = 2;   // двигатель 1 откр   0 вкл / 1 выкл
const byte Motor1_Close_pin = 3;   // двигатель 1 закр   0 вкл / 1 выкл
const byte Gate1_Open_pin   = 6;   // концевик  1        1 сработал / 0 нет
const byte Gate1_Close_pin  = 8;   // концевик  3        1 сработал / 0 нет
Cl_motor Motor1(Motor1_Open_pin, Motor1_Close_pin, Gate1_Open_pin, Gate1_Close_pin, 0, 1);
// левая с нащельником
#include "Cl_motor_master.h"
const uint32_t time_5sec = 5000; // 5 секунд
const byte Motor2_Open_pin = 4;    // двигатель 2 откр  0 вкл / 1 выкл
const byte Motor2_Close_pin = 5;   // двигатель 2 закр  0 вкл / 1 выкл
const byte Gate2_Open_pin  = 7;     // концевик 2       1 сработал / 0 нет
const byte Gate2_Close_pin = 9;     // концевик 4       1 сработал / 0 нет
Cl_motor_master Motor2(Motor2_Open_pin, Motor2_Close_pin, Gate2_Open_pin, Gate2_Close_pin, 0, 1);
void Do_Motor2_Open() {
  Power.ON1();
  Motor1.Open();
}
void Do_Motor2_Close() {
  Motor1.Close();
  Power.OFF1();
}
// кнопки и датчики
#include "Cl_do_btn.h"
const byte Btn_Open_pin = 11;      // вкл радиоканал      0 нажата / 1 нет
Cl_do_btn Btn_Open(Btn_Open_pin, 0); // сработка 0
void Do_Btn_Open() {
  Power.ON2();
  Motor2.Open();
}
const byte Btn_Close_pin = 12;     // выкл радиоканал     0 нажата / 1 нет
Cl_do_btn Btn_Close(Btn_Close_pin, 0);// сработка 0
void Do_Btn_Close() {
  Motor2.Close();
  Power.OFF2();
}
const byte IR_sens_pin = 13;    //ИК датчик             1 сработал / 0 нет
Cl_do_btn IR_sens(IR_sens_pin, 1);// сработка 1
void Do_IR_sens() {
  Motor1.Stop();
  Motor2.Stop();
  Power.OFF1();
  Power.OFF2();
}
void setup() {
  Led.setup();
  Led.T_blink = time_1sec;
  Power.setup(& Do_Power_ON, & Do_Power_OFF);
  Motor1.setup();
  Motor2.setup();
  Motor2.time_lag = time_5sec; // выставить задержку открывания из-за наличия нащельника
  Btn_Open.setup();
  Btn_Close.setup();
  IR_sens.setup();
}
void loop() {
  Led.loop();
  Power.loop();
  Motor1.loop();
  Motor2.loop(& Do_Motor2_Open, & Do_Motor2_Close);
  Btn_Open.loop( & Do_Btn_Open);
  Btn_Close.loop(& Do_Btn_Close);
  IR_sens.loop(& Do_IR_sens);
}

 

Aibo
Offline
Зарегистрирован: 06.10.2016

@qwone :  Не хочет компилироваться Gate v.4 , IDE 1.8.0

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Странно , а у меня компилируется. 

ПС https://yadi.sk/d/ydQFuOGJ3FARBu

Aibo
Offline
Зарегистрирован: 06.10.2016

Вот теперь и у меня скомпилировалось и загрузилось 

Aibo
Offline
Зарегистрирован: 06.10.2016
Уважаемый qwone ! Если я  двух местах , в головном скетче поменяю : 
Cl_do_btn Btn_Open(Btn_Open_pin, 0); // сработка 0
на
Cl_do_btn Btn_Open(Btn_Open_pin, 1); // сработка 1
 
этого достаточно чтобы кнопки "открыть" и "закрыть" управлялись "1" , а не "0" , как в Вашем скетче ,
или еще где-то надо править ??? 
*****
// кнопки и датчики
#include "Cl_do_btn.h"
const byte Btn_Open_pin = 11;      // вкл радиоканал      0 нажата / 1 нет
Cl_do_btn Btn_Open(Btn_Open_pin, 0); // сработка 0
void Do_Btn_Open() {
  Power.ON2();
  Motor2.Open();
}
Aibo
Offline
Зарегистрирован: 06.10.2016

Вот тут народ усиленно обсуждает такое-же устройство , посмотрите , если интересно :

https://www.forumhouse.ru/threads/294341/page-31

Aibo
Offline
Зарегистрирован: 06.10.2016

Попробовал на столе:

кнопки срабатывают , но логика работы непонятна.

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

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Aibo пишет:

Попробовал на столе:

кнопки срабатывают , но логика работы непонятна.

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

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

Aibo
Offline
Зарегистрирован: 06.10.2016

@qwone есть ли у Вас желание и возможность продолжить работу над проектом? моя почта Le-aibo"Собака"ya.ru 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Aibo, у меня прошла очередная смена стиля программирования. Так что если продолжать программу, то придется переписывать заново. Я посмотрел. Вроде там ничего уже дорабатывать не надо. Или у вас появились новые предложения для улучшения. Да и меня нет гаража, и тем более ворот. Так что максимум я могу проверить на макете. Живьем у меня не получится.

Вот накидал новый скетч. Не проверял на работу.Полный здесь https://yadi.sk/d/GTPDoIcB3GhBKs

Головной выложу

/*Gate_B  
  лампочки-мигалки         ->13   0 выкл / 1 вкл
    механизм правой двери
       мотор +          -> 2   0 вкл / 1 выкл
       мотор -          -> 3   0 вкл / 1 выкл
       кончник открытия -> 6   1 сработал / 0 нет
       кончник закрытия -> 7   1 сработал / 0 нет
     механизм левой двери
       мотор +          -> 4  0 вкл / 1 выкл
       мотор -          -> 5  0 вкл / 1 выкл
       кончник открытия -> 8  1 сработал / 0 нет
       кончник закрытия -> 9  1 сработал / 0 нет
  ИК датчик препятствия закрытия -> 10  1 сработал / 0 нет
     радиокнопки
  кнопка открытия дверей   -> А0  0 нажата / 1 нет
  кнопка закрытия дверей   -> А1  0 нажата / 1 нет
  кнопка остановки дверей  -> А2  0 нажата / 1 нет
  кнопка остановки дверей  -> А3  0 нажата / 1 нет
*/
// шины входа
#include "Cl_digitalIn.h"
Cl_digitalIn In[] = {
  Cl_digitalIn(A0), //  0- вывод A0 входом радио A
  Cl_digitalIn(A1), //  1- вывод A1 входом радио B
  Cl_digitalIn(A2), //  2- вывод A2 входом радио C
  Cl_digitalIn(A3), //  3- вывод A3 входом радио D
  Cl_digitalIn(6),  //  4- вывод 6 входом  конечник прав дверь откр
  Cl_digitalIn(7),  //  5- вывод 7 входом  конечник прав дверь закр
  Cl_digitalIn(8),  //  6- вывод 8 входом  конечник лев дверь откр
  Cl_digitalIn(9),  //  7- вывод 9 входом  конечник лев дверь закр
  Cl_digitalIn(10)  //  8- вывод 10 входом  ИК датчик препятствия
};
// шины выхода
#include "Cl_digitalOut.h"
Cl_digitalOut Out[] = {
  Cl_digitalOut(2) , // 0- вывод 2 выходом мотор + прав дверь
  Cl_digitalOut(3) , // 1- вывод 3 выходом мотор - прав дверь
  Cl_digitalOut(4) , // 2- вывод 4 выходом мотор + лев дверь
  Cl_digitalOut(5) , // 3- вывод 5 выходом мотор - лев дверь
  Cl_digitalOut(10), // 4- вывод 10 выходом подача питания на моторы
  Cl_digitalOut(13)  // 5- вывод 13 выходом светодиод
};
//светодиод
#include "Cl_led.h"
Cl_led *Led1 = new Cl_led(&Out[5], 1); // подключить светодиод
// подача питания на моторы
#include "Cl_power.h"
void PowerOn() {
  Led1->blink(500); // мигать 0.5 горит 0.5 нет
}
void PowerOff() {
  Led1->OFF(); // выключить мигалку
}
Cl_power *Power = new Cl_power(&Out[4], 10, &PowerOn, &PowerOff); // подключить подача питания на моторы
// двери
void Stat_Motor1_Run() {
  Power->ON1();
}
void Stat_Motor1_Stop() {
  Power->OFF1();
}
void Stat_Motor2_Run() {
  Power->ON2();
}
void Stat_Motor2_Stop() {
  Power->OFF2();
}
#include "Cl_motor.h"
Cl_motor * Motor[] = {
  new Cl_motor(&Out[0], &Out[1], 0, &In[4], &In[5], 1, &Stat_Motor1_Run, &Stat_Motor1_Stop), // прав дверь
  new Cl_motor(&Out[2], &Out[3], 0, &In[6], &In[7], 1, &Stat_Motor2_Run, &Stat_Motor2_Stop) // лев дверь
};
// кнопки
void Do_Open() {
  Motor[0]->Open();
  Motor[1]->Open();
}
void Do_Close() {
  Motor[0]->Close();
  Motor[1]->Close();
}
void Do_Stop() {
  Motor[0]->Stop();
  Motor[1]->Stop();
}
#include "Cl_do_btn.h"
Cl_do_btn * Btn[] =  {
  new Cl_do_btn(&In[0] , 0, &Do_Open ), //радиоканал A            0 нажата / 1 нет
  new Cl_do_btn(&In[1] , 0, &Do_Close), //радиоканал B            0 нажата / 1 нет
  new Cl_do_btn(&In[2] , 0, &Do_Stop ), //радиоканал C            0 нажата / 1 нет
  new Cl_do_btn(&In[3] , 0, &Do_Stop ), //радиоканал D            0 нажата / 1 нет
  new Cl_do_btn(&In[10], 1, &Do_Stop )  //Ик датчик препятсвия    1 сработал / 0 нет
};
void setup() {
  Led1->setup();
  Power->setup();
  for (byte i = 0; i < 2; ++i)Motor[i]->setup();
  for (byte i = 0; i < 5; ++i)Btn[i]->setup();
}

void loop() {
  Led1->loop();
  for (byte i = 0; i < 2; ++i)Motor[i]->loop();
  for (byte i = 0; i < 5; ++i)Btn[i]->loop();
}

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

У меня ошибка строку 092 надо заменить на эту

  new Cl_do_btn(&In[8], 1, &Do_Stop )  //Ик датчик препятсвия    1 сработал / 0 нет

строка 040 ошибка

  Cl_digitalOut(11), // 4- вывод 11 выходом подача питания на моторы

 

Aibo
Offline
Зарегистрирован: 06.10.2016

Уважаемый qwone , восхищаюсь Вашей работой , все красиво, структурированно.

Собрал прибор по приложеной ниже схеме. Все грамотно работает  ,но не устраивает один момент .

нет возможности задержки открытия-закрытия одной створки. Автор не имеет возможности  переделать .

Пытаюсь перенести алгоритм на ардуино. В указанной конструкции мне понравилось использование датчика тока ASC712 5A . Датчики останавливают систему в случае перегрузки на двигателе (например что-то попало между створок) , во вторых используется наличие или отсутвие тока для определения двигается створка или стоит. Концевики в приводах остались , но они не связаны с автоматикой, они просто выключают двигатели при достижении крайних точек (соотвественно двигатель остановился- датчик тока выдает данные об остановке  ). Кроме того двигатели подключены через Мосфет с драйвером и управляются ШИМ, что позволяет реализовать медленный старт ( без броска тока), что хорошо для моторов, БП и датчиков тока. Удобно так же то, что есть дисплей на котором можно подстрайвать систему.( у меня ворота будут на даче, где нет возможности опреративно менять прошивку)  

https://yadi.sk/d/B1R87ruS3GptbW

https://yadi.sk/d/3W3k3i223Gptku

Accent510
Offline
Зарегистрирован: 11.02.2017

Добрый день нужна помощь с ардуино до елаю распошные ворота что-то не получается с программой можете сбросить схему расключения уны может где резистор подтягивающий не поставил нет сигнала на включения мотора