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

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

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

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

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

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 8289
  • Спасибо получено: 2833
Проект в архиве. Время задается в ячейках EEPROM с адресами 0x00 и 0x01 для первого и второго таймера соответственно. Если установлено 0 - этот канал работать не будет. Если значение больше 60 - берется по умолчанию 1 сек.

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

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

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

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

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 8289
  • Спасибо получено: 2833
Тогда описывайте подробнее конфликтные ситуации, обозначенные мною в предыдущем сообщении, а также и другие, которые могут возникнуть (защитная пауза и т.п.).
Администратор запретил публиковать записи гостям.

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

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

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

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

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

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

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

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 8289
  • Спасибо получено: 2833
Нет, не понял.
Допустим, нажата кнопка, включилось реле 1. За время включенного реле 1 состояние кнопки изменилось несколько раз, но на момент отключения реле 1 кнопка снова оказалась нажата. Что должна делать программа - всё проигнорировать и ничего не делать или последовательно отрабатывать все нажатия?
А если на момент отключения реле 1 кнопка отжата, тогда что?
Администратор запретил публиковать записи гостям.

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

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

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

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 8289
  • Спасибо получено: 2833
Алгоритм изменил, проверьте.
Вложения:
Администратор запретил публиковать записи гостям.
Спасибо сказали: Ur5got

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

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

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

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 8289
  • Спасибо получено: 2833
Перекомпилировал.
Вложения:
Администратор запретил публиковать записи гостям.
Спасибо сказали: Ur5got

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

  • Ur5got
  • Ur5got аватар
  • Не в сети
  • I go sometimes
  • Сообщений: 56
Перевірив на 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
  • Сообщений: 8289
  • Спасибо получено: 2833
Исправил, проверьте еще.
Вложения:
Администратор запретил публиковать записи гостям.
Спасибо сказали: Ur5got

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

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