1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 9

Самодельный привод одностворчатых распашных ворот

Тема в разделе "Ворота и калитки", создана пользователем God1969, 19.02.15.

  1. ask33
    Регистрация:
    06.11.13
    Сообщения:
    1.583
    Благодарности:
    3.398

    ask33

    Живу здесь

    ask33

    Живу здесь

    Регистрация:
    06.11.13
    Сообщения:
    1.583
    Благодарности:
    3.398
    Адрес:
    Ногинск
    DSN Это расширение файла проекта протеуса.
    У меня все заработало.
     
  2. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.406
    Благодарности:
    8.537

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.406
    Благодарности:
    8.537
    Адрес:
    Брянск
    Извиняюсь, сейчас у меня новая волна своих дел пошла. Был невнимателен, Петрович ведь говорил что у него Протеус. Да, теперь вижу схему.
     
  3. ask33
    Регистрация:
    06.11.13
    Сообщения:
    1.583
    Благодарности:
    3.398

    ask33

    Живу здесь

    ask33

    Живу здесь

    Регистрация:
    06.11.13
    Сообщения:
    1.583
    Благодарности:
    3.398
    Адрес:
    Ногинск
    Стоп, я так понял - тормозим ворота ТОЛЬКО противоположной кнопкой.
    То есть если открываются то повторное нажатие ОТКРЫТЬ ни к чему не приводит, а нажатие ЗАКРЫТЬ останавливает. Далее как и основной алгоритм - ворота полуоткрыты и мы можем начать их закрывать/открывать соответствующей кнопкой.
    То же и с закрытием. Если закрываются и нажимаем кнопку ОТКРЫТЬ они останавливаются, на ЗАКРЫТЬ не реагируют.
    Просто сначала понял что повторное нажатие любой кнопки пульта (открыть/закрыть) приводит к остановке процесса, независимо от того закрываются или открываются ворота. И потом нажатие открыть/закрыть к продолжению процесса.

    Все верное теперь понял?
     
  4. петрович 333
    Регистрация:
    29.10.13
    Сообщения:
    657
    Благодарности:
    179

    петрович 333

    Живу здесь

    петрович 333

    Живу здесь

    Регистрация:
    29.10.13
    Сообщения:
    657
    Благодарности:
    179
    Адрес:
    Владимир
    Да все верно :hndshk: Я тоже с начало думал любой кнопкой СТОП, но прикинув ситуацию (описаную выше) Думаю что нужно противоположной кнопкой стоп
     
  5. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.406
    Благодарности:
    8.537

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.406
    Благодарности:
    8.537
    Адрес:
    Брянск
    Раз уж специальная кнопка STOP есть, то проще всего её использовать - алгоритм чуть-чуть упростится. Она должна установить признак запрета движения - avr, который работает точно так же, как и любой концевик, пока его не сбросит нажатие кнопки открыть или закрыть.
     
  6. петрович 333
    Регистрация:
    29.10.13
    Сообщения:
    657
    Благодарности:
    179

    петрович 333

    Живу здесь

    петрович 333

    Живу здесь

    Регистрация:
    29.10.13
    Сообщения:
    657
    Благодарности:
    179
    Адрес:
    Владимир
    На пульте Д У ее нет, толь ка на основном блоке
     
  7. Лифтанутый
    Регистрация:
    11.04.08
    Сообщения:
    4.642
    Благодарности:
    13.647

    Лифтанутый

    УВЕРЕННЫЙ

    Лифтанутый

    УВЕРЕННЫЙ

    Регистрация:
    11.04.08
    Сообщения:
    4.642
    Благодарности:
    13.647
    Адрес:
    Москва
    Все таки правильнее одной кнопкой: нажал - включил, еще раз нажал -выключил процесс. Ведь можно и ошибку допустить случайно и котеню прищемить :)]
    Надо продолжить коррекцию скетча:). Форум не поймет иной подход:hndshk:
     
  8. Al571
    Регистрация:
    06.03.13
    Сообщения:
    4.884
    Благодарности:
    4.336

    Al571

    Живу здесь

    Al571

    Живу здесь

    Регистрация:
    06.03.13
    Сообщения:
    4.884
    Благодарности:
    4.336
    Адрес:
    Углич
    Занятие интересное, но изобретаете велосипед.
    На моём брелке две кнопки. Одна управляет открыванием - закрыванием двух створок, вторая только одной. Так удобно когда в гараж надо зайти человеку, можно не открывать обе створки. Нажатие любой кнопки останавливает движение не зависимо от того какой кнопкой подана предыдущая команда. :)
     
  9. Лифтанутый
    Регистрация:
    11.04.08
    Сообщения:
    4.642
    Благодарности:
    13.647

    Лифтанутый

    УВЕРЕННЫЙ

    Лифтанутый

    УВЕРЕННЫЙ

    Регистрация:
    11.04.08
    Сообщения:
    4.642
    Благодарности:
    13.647
    Адрес:
    Москва
    Я сразу не знаю как это прописать, но уверен что можно так:
    нажали открыть -на выходе появился сигнал.
    следующая команда включает новый цикл - проверяет появился ли сигнал на выходе и если да, то при следующем нажатии той же кнопки -меняет уровень выхода на прежний (стоп).
    как то так изменить алгоритм:

    if (regim=1)/ если пришел радиосигнал откр и все ворота закрыты - открываем ворота {
    if (digitalRead (end1)=LOW&&digitalRead (end2)=LOW) / ЕСЛИ 2 КОНЦЕВИКА ОТКЛЮЧЕНЫ
    { digitalWrite (power, HIGH); / вкл силовую линию
    digitalWrite (eng11, LOW);/ двигатель 1 вкл открытие
    if (millis() - previousMillis1 > INTERVAL1) / задан интервал 2сек.
    { count1+; previousMillis1 = millis(); }
    if (count1=3)
    {
    ELSE digitalRead (end11) и if (regim=1). то...дigitalWrite (power, LOW);
    digitalWrite (eng21, LOW);/ двигатель 2 вкл
    count1=0; }
     
  10. Лифтанутый
    Регистрация:
    11.04.08
    Сообщения:
    4.642
    Благодарности:
    13.647

    Лифтанутый

    УВЕРЕННЫЙ

    Лифтанутый

    УВЕРЕННЫЙ

    Регистрация:
    11.04.08
    Сообщения:
    4.642
    Благодарности:
    13.647
    Адрес:
    Москва
    Пока есть "велосипед с квадратными колесами" - поэтому и думаем как перейти на "круглые ":)]. Любой кнопкой - еще удобнее:super: .
     
    Последнее редактирование: 08.02.17
  11. Al571
    Регистрация:
    06.03.13
    Сообщения:
    4.884
    Благодарности:
    4.336

    Al571

    Живу здесь

    Al571

    Живу здесь

    Регистрация:
    06.03.13
    Сообщения:
    4.884
    Благодарности:
    4.336
    Адрес:
    Углич
    Да. Теперь вижу. Правильным путём идёте.:victory:
     
  12. Лифтанутый
    Регистрация:
    11.04.08
    Сообщения:
    4.642
    Благодарности:
    13.647

    Лифтанутый

    УВЕРЕННЫЙ

    Лифтанутый

    УВЕРЕННЫЙ

    Регистрация:
    11.04.08
    Сообщения:
    4.642
    Благодарности:
    13.647
    Адрес:
    Москва
    Для данной задачи слишком много раз нужно использовать оператор IF, поэтому трудно ориентироваться. Есть другой (http://cppstudio.com/post/6691/):
    "Оператор выбора switch является очень удобной заменой множественного использования операторов if. Оператор switchсравнивает значение одной переменной с несколькими константами. Основной формат для использования оператора множественного выбора switch case показан — ниже. Значение переменной указанной в условии switch сравнивается со значениями, которые следуют за ключевым словом case. Когда значение в переменной, соответствует значению в строке с оператором case, компьютер продолжит выполнение программы с этого места.

    switch (/*variable*/) {
    case const1:
    /*Тут находится код, который необходимо выполнить, если переменная variable будет равна const1*/
    break;
    case const2:
    /*этот код выполнится, если variable будет равна const2*/
    break;
    /*...*/
    default:
    /*Код, который выполнится, если ниодно из константых значению не соответствует значение в переменной variable*/
    break;
    }
     
  13. Лифтанутый
    Регистрация:
    11.04.08
    Сообщения:
    4.642
    Благодарности:
    13.647

    Лифтанутый

    УВЕРЕННЫЙ

    Лифтанутый

    УВЕРЕННЫЙ

    Регистрация:
    11.04.08
    Сообщения:
    4.642
    Благодарности:
    13.647
    Адрес:
    Москва
    @ask33,
    много других дел, но заинтересовался и вот попробовал выразить.
    начал с дребезга, в том скетче мне не все понятно, кажется избыточные действия, поэтому сбои неизбежны.

    Кусочек для понимания мыслей
    Byte onoff =0; / вводим еще переменную для хранения текущего состояния выхода «открыть». чтобы была обратная связь
    Byte radion=0;
    void loop() {

    if (digitalRead (on)=LOW&&radion=0&&regim=0)/если кнопка ON нажата

    / и перемення "radion" равна 0, то ... /боремся с дребезгом
    {
    while (digitalRead (on) / ждем когда кнопка ON будет отжата
    {
    delay (1); / ничтожная задержка по дребезгу
    radion+;
    }
    if (0- radion) & (10 < radion) / если сигнал на выход не прошел
    {
    onoff =1; / записываем что прошел для будущего
    digitalWrite (power, HIGH); / вкл силовую линию и далее движок
    ...
    как то так Я не имею опыта в программировании, только копипастом:aga:
     
  14. xvovanx
    Регистрация:
    02.12.11
    Сообщения:
    835
    Благодарности:
    448

    xvovanx

    Живу здесь

    xvovanx

    Живу здесь

    Регистрация:
    02.12.11
    Сообщения:
    835
    Благодарности:
    448
    Адрес:
    Латвия
    Глянул схему. А как у вас с защитой от зажимания, сугроба? Как с плавностью запуска движков? Я у себя использовал датчики тока ACS712 и PWM в пусках-остановках.
     
  15. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.406
    Благодарности:
    8.537

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.406
    Благодарности:
    8.537
    Адрес:
    Брянск
    Недурно! Но как после остановки движения ситуёвина разруливается? Запоминается предшествующее направление движения?