Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1
  • 2

ТЕМА: Управление одной кнопкой.

Управление одной кнопкой. 28 нояб 2018 23:38 #1

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Soir, вітаю.
Виникла необхідність в маленькому пристрої, який би працював за алгоритмом описаним нижче.
Можливо, у Вас вже є щось подібне на якомусь восьминогому МК (наприклад Tiny45 або 85).
Пристрій має один вхід до якого підключено один контакт реле (інший на корпус) і два виходи, які будуть керувати двома іншими реле.
При подачі живлення в схему, на виходах повинен бути низький потенціал, незалежно від стану входу.
При замиканні контактів на вході (на будь який час), на виході №1 повинен встановитись високий потенціал тривалістю 1-2секунди.
При розмиканні контактів на вході (на будь який час), на виході №2 повинен встановитись високий потенціал тривалістю 1-2секунди.
Було б добре, якщо б час утримання високого потенціалу на виходах можна було регулювати від 1с до 60с з кроком 1с, правлячи відповідний параметр в EEPROM.
Що скажете?
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 29 нояб 2018 08:54 #2

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9888
  • Спасибо получено: 3552
  • Respect sxem.org Sponsor 2019 Author
Проект в архиве. Время задается в ячейках EEPROM с адресами 0x00 и 0x01 для первого и второго таймера соответственно. Если установлено 0 - этот канал работать не будет. Если значение больше 60 - берется по умолчанию 1 сек.

Каналы работают независимо. То есть, одни канал не ждет другой и возможна ситуация, когда включены оба реле.
Повторное срабатывание кнопки в период включенного выхода - начинает отсчет заново. То есть, если быстро нажимать на кнопку, то оба канала будут включены всё это время.
Уточните, какой должен быть алгоритм вот в этих двух ситуациях, когда происходят накладки.
Вложения:
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 29 нояб 2018 10:36 #3

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Дякую, що відгукнулись.
Ситуації з обома увімкненими реле не повинно бути.
Виходи повинні відтворювати алгоритм роботи типу тумблера на три положення з нейтраллю.
Тобто другий вихід спрацьовує лише після того як відпрацює перший і навпаки, з захисною паузою між включеннями (захист від брязкоту контактів).
Последнее редактирование: 29 нояб 2018 10:40 от Ur5got.
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 29 нояб 2018 14:10 #4

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9888
  • Спасибо получено: 3552
  • Respect sxem.org Sponsor 2019 Author
Тогда описывайте подробнее конфликтные ситуации, обозначенные мною в предыдущем сообщении, а также и другие, которые могут возникнуть (защитная пауза и т.п.).
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 29 нояб 2018 14:36 #5

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Я так думаю, що на виході №2 повинен з'являтись високий рівень лише після того, як на виході №1 з'явиться низький рівень і витримається захисна пауза (час перемикання контактів плюс час брязкоту контактів). Думаю 0,5с для паузи буде достатньо. Аналогічно для виходу №1. Завдяки цьому активним завжди буде лише один вихід.
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 29 нояб 2018 16:30 #6

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9888
  • Спасибо получено: 3552
  • Respect sxem.org Sponsor 2019 Author
Таких подробностей недостаточно.
Ситуация. Нажили кнопку, задание времени 2 сек. Через 1 сек отпустили, через 0,2 сек снова нажали, через 0,5 сек отпустили.... что на выходе? Когда включаются/выключаются реле? То есть, что делать если во время отработки одного реле состояние кнопки изменилось несколько раз?
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 30 нояб 2018 00:19 #7

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Soir пишет:
...что делать если во время отработки одного реле состояние кнопки изменилось несколько раз?
Не реагувати на стан входу, доки активний вихід.
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 30 нояб 2018 06:46 #8

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9888
  • Спасибо получено: 3552
  • Respect sxem.org Sponsor 2019 Author
Нет, не понял.
Допустим, нажата кнопка, включилось реле 1. За время включенного реле 1 состояние кнопки изменилось несколько раз, но на момент отключения реле 1 кнопка снова оказалась нажата. Что должна делать программа - всё проигнорировать и ничего не делать или последовательно отрабатывать все нажатия?
А если на момент отключения реле 1 кнопка отжата, тогда что?
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 30 нояб 2018 11:15 #9

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Soir пишет:
Допустим, нажата кнопка, включилось реле 1. За время включенного реле 1 состояние кнопки изменилось несколько раз, но на момент отключения реле 1 кнопка снова оказалась нажата. Что должна делать программа - всё проигнорировать и ничего не делать или последовательно отрабатывать все нажатия?
Всё проигнорировать и ничего не делать, пока не выключится реле 1
Soir пишет:
А если на момент отключения реле 1 кнопка отжата, тогда что?
Тогда после отключения реле 1 и выдержки паузы включить реле 2.
Теоретически (да скорее всего и практически) многократного срабатывания кнопки не должно быть.
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 30 нояб 2018 16:35 #10

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9888
  • Спасибо получено: 3552
  • Respect sxem.org Sponsor 2019 Author
Алгоритм изменил, проверьте.
Вложения:
Администратор запретил публиковать записи гостям.
Спасибо сказали: Ur5got

Управление одной кнопкой. 01 дек 2018 21:39 #11

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Дякую. А можна перекомпілювати ще й під tiny13, бо щось мої tiny45 не прошиваються?
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 02 дек 2018 08:12 #12

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9888
  • Спасибо получено: 3552
  • Respect sxem.org Sponsor 2019 Author
Перекомпилировал.
Вложения:
Администратор запретил публиковать записи гостям.
Спасибо сказали: Ur5got

Управление одной кнопкой. 09 дек 2018 18:35 #13

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Перевірив на tiny13 - працює, але...
Можливо я не зовсім зрозуміло сформолював алгоритм у дописі №8:
Soir пишет:
Допустим, нажата кнопка, включилось реле 1. За время включенного реле 1 состояние кнопки изменилось несколько раз, но на момент отключения реле 1 кнопка снова оказалась нажата. Что должна делать программа - всё проигнорировать и ничего не делать или последовательно отрабатывать все нажатия?

Всё проигнорировать и ничего не делать, пока не выключится реле 1
Soir пишет:
А если на момент отключения реле 1 кнопка отжата, тогда что?
Тогда после отключения реле 1 и выдержки паузы включить реле 2.

А сейчас получается, что нажали кнопку, включилось реле 1. За время включенного реле 1 состояние кнопки изменилось несколько раз и на момент отключения кнопка оказалась отжата. Реле 1 отключилось и на этом все. А должно еще и отработать реле 2, так как кнопка отжата.

Сейчас же, чтобы отработало реле 2 нужно снова нажать кнопку (после ее нажатия ничего не происходит) и снова отпустить её. Только тогда срабоет реле 2.
Я так понимаю должна быть жесткая привязка: положение кнопки - отработка реле.
Если на момент ззавершения паузы кнопка находится "в чужом положении", то следовательно должно еще и отработать "чужое" реле.
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 09 дек 2018 19:12 #14

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9888
  • Спасибо получено: 3552
  • Respect sxem.org Sponsor 2019 Author
Исправил, проверьте еще.
Вложения:
Администратор запретил публиковать записи гостям.
Спасибо сказали: Ur5got

Управление одной кнопкой. 09 дек 2018 22:15 #15

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Перевірив - працює як треба. Дякую.
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 30 апр 2019 12:35 #16

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Soir, здравствуйте.
Не могли бы вы подправить прошивку под Tiny13 так, чтобы на выходах появлялся высокий уровень после того, как нажатие кнопки происходило более 2-10 секунд (время возможно задать в EEprom). При следующем нажатии выходы должны сбрасываться в ноль. При включении питания - на выходах низкий уровень. Такой себе триггер, но с регулируемой задержкой на переключение. Собирал на логике, но работает не очень четко.
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 30 апр 2019 16:16 #17

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9888
  • Спасибо получено: 3552
  • Respect sxem.org Sponsor 2019 Author
Ur5got пишет:
чтобы на выходах появлялся высокий уровень после того, как нажатие кнопки происходило более 2-10 секунд (время возможно задать в EEprom). При следующем нажатии выходы должны сбрасываться в ноль.
Вообще не понял, как должно работать.
Все таймеры отменяются? Какая последовательность включения выходов? Какая последовательность отключения? Опишите подробно каждый этап работы программы.
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 01 мая 2019 02:32 #18

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
При включении питания: на выходе OUT_1 (порт PB2) низкий уровень; на выходе OUT_2 (порт PB1) меандр (низкий 3 секунды, высокий 1 секунда - мигающий светодиод).
При нажатии кнопки продолжительностью Т1 секунд (время Т1 задается в EEprom от 1 секунды до 60 секунд) на выходе OUT_1 появлялся высокий уровень на время Т2 (время Т2 задается в EEprom от 1 секунды до 1 часа или до момента повторного нажатия кнопки продолжительностью Т1). На выходе OUT_2 уровень становится либо высоким, либо низким (задается в EEprom).
При очередном нажатии кнопки продолжительностью Т1 секунд на выходе OUT_1 появлялся низкий уровень.
На выходе OUT_2 снова появляется меандр (низкий 3 секунды, высокий 1 секунда - мигающий светодиод).
Управление выходом с помощью одной кнопки вручную или по таймеру плюс индикация дежурного режима.
Т2 - задает время работы таймера, либо отключает его, переводя устройство в ручной режим.
В режиме таймера приоритет на выключение остается за кнопкой - возможно досрочное выключение удержанием кнопки продолжительностью Т1 секунд.
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 01 мая 2019 08:24 #19

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9888
  • Спасибо получено: 3552
  • Respect sxem.org Sponsor 2019 Author
Прошивка в архиве, это уже другой проект.

EEPROM.
Время таймера T2 две ячейки: [0x00] - минуты, [0x01] - секунды. Если время больше 3600 сек - берется по умолчанию 10 сек.
Время удержания кнопки - ячейка [0x02]. Если время больше 60 сек, берется по умолчанию 1 сек.
Режим OUT_2 - ячейка [0x03]. Если в ячейке 0, то на время работы таймера T2 на выходе лог.0, иначе лог.1.
Последнее редактирование: 02 мая 2019 06:41 от Soir. Причина: Удаление неактуального вложения
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 01 мая 2019 12:01 #20

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Т2 - задает время работы таймера, либо отключает его, переводя устройство в ручной режим.
Наверное я не пояснил этот пункт более подробно. Должна быть ещё одна ячейка памяти, которая отвечает за режим работы выхода out_1. Если в ячейке единица - режим с таймером Т2,а если ноль - управление только кнопкой (таймер как бы отсутствует).
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 01 мая 2019 13:32 #21

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9888
  • Спасибо получено: 3552
  • Respect sxem.org Sponsor 2019 Author
Ur5got пишет:
Т2 - задает время работы таймера, либо отключает его
Не понял, кого отключает? Как это "либо задает", "либо отключает"?


P.S.Ur5got пишет:
Должна быть ещё одна ячейка памяти
А если такой вариант: если T2 установлен в 0 (обе ячейки), тогда таймер и не работает?
Последнее редактирование: 02 мая 2019 06:41 от Soir. Причина: Удаление неактуального вложения
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 01 мая 2019 14:07 #22

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Soir пишет:
А если такой вариант: если T2 установлен в 0 (обе ячейки), тогда таймер и не работает?
Да. Этот вариант отлично подходит.
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 02 мая 2019 00:56 #23

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Здравствуйте.
Проверил прошивку из поста 21.
1. Почему-то низкая точность таймера Т2: установил в EEprom 1 минуту, а выключение произошло на 7 секунд позже; установил 2 минуты - на 15 секунд позже. Может нужно куда-то (в конец прошивки) прописать калибровочный байт?
2. В режиме выключенного таймера Т2 (в [0x00] и [0x01] - нули) при нажатии на кнопку продолжительностью Т1 на выходе OUT_1 появляется высокий уровень, а на выходе OUT_2 почему-то остается меандр. А вот при повторном нажатии кнопки продолжительностью Т1 (и даже более) на выходе OUT_1 высокий уровень остается - выход не отключается.
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 02 мая 2019 06:41 #24

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 9888
  • Спасибо получено: 3552
  • Respect sxem.org Sponsor 2019 Author
Ur5got пишет:
Может нужно куда-то (в конец прошивки) прописать калибровочный байт?
Для каждого экземпляра МК будет свой калибровочный байт. Да еще и его нужно править в зависимости от питания, температуры...
Проще учитывать эту погрешность при установке таймера в EEPROM.
Но также внес некоторые изменения в сам таймер, протестируйте точность отсчета.

Работу при нулевом таймере исправил, проверьте еще.
Вложения:
Администратор запретил публиковать записи гостям.

Управление одной кнопкой. 03 мая 2019 23:54 #25

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 66
Soir пишет:
Но также внес некоторые изменения в сам таймер, протестируйте точность отсчета.
Точность отсчета особо не изменилась: выставил 2 минуты 30 секунд, а выключение произошло через 2 минуты 46 секунд.
Ранее неоднократно собирал Вашу схему двухканального таймера на mega8 (использовался встроенный генератор), так вот там точность отсчета была очень хорошей. Наверное из-за того, что генератор работал на 1МГц, и калибровочный байт автоматически брался для этой частоты. А здесь, наверное, генератор аппаратно калибруется значением для 9,6МГц (если в прошивке не учтено для 4,8МГц).
Soir пишет:
Работу при нулевом таймере исправил, проверьте еще.
При нулевом таймере работает нормально - сбоев пока не заметил. Еще тестирую
Администратор запретил публиковать записи гостям.
  • Страница:
  • 1
  • 2
Модераторы: wolf2000, Vakula, Айнцвайдрайченко, Soir