Запрошуємо, Гість
Ім'я користувача: Пароль: Запам’ятати мене
  • Сторінка:
  • 1
  • 2

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

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Soir, вітаю.
Виникла необхідність в маленькому пристрої, який би працював за алгоритмом описаним нижче.
Можливо, у Вас вже є щось подібне на якомусь восьминогому МК (наприклад Tiny45 або 85).
Пристрій має один вхід до якого підключено один контакт реле (інший на корпус) і два виходи, які будуть керувати двома іншими реле.
При подачі живлення в схему, на виходах повинен бути низький потенціал, незалежно від стану входу.
При замиканні контактів на вході (на будь який час), на виході №1 повинен встановитись високий потенціал тривалістю 1-2секунди.
При розмиканні контактів на вході (на будь який час), на виході №2 повинен встановитись високий потенціал тривалістю 1-2секунди.
Було б добре, якщо б час утримання високого потенціалу на виходах можна було регулювати від 1с до 60с з кроком 1с, правлячи відповідний параметр в EEPROM.
Що скажете?
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Soir
  • Soir аватар
  • онлайн
  • Moderator
  • Дописи: 14111
  • Подякували: 5431
  • sxem.org 2019,2020,2021,2022,2023 Respect Author
Проект в архиве. Время задается в ячейках EEPROM с адресами 0x00 и 0x01 для первого и второго таймера соответственно. Если установлено 0 - этот канал работать не будет. Если значение больше 60 - берется по умолчанию 1 сек.

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

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Дякую, що відгукнулись.
Ситуації з обома увімкненими реле не повинно бути.
Виходи повинні відтворювати алгоритм роботи типу тумблера на три положення з нейтраллю.
Тобто другий вихід спрацьовує лише після того як відпрацює перший і навпаки, з захисною паузою між включеннями (захист від брязкоту контактів).
Останнє редагування: 29 лист. 2018 10:40 від Ur5got.
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Soir
  • Soir аватар
  • онлайн
  • Moderator
  • Дописи: 14111
  • Подякували: 5431
  • sxem.org 2019,2020,2021,2022,2023 Respect Author
Тогда описывайте подробнее конфликтные ситуации, обозначенные мною в предыдущем сообщении, а также и другие, которые могут возникнуть (защитная пауза и т.п.).
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Я так думаю, що на виході №2 повинен з'являтись високий рівень лише після того, як на виході №1 з'явиться низький рівень і витримається захисна пауза (час перемикання контактів плюс час брязкоту контактів). Думаю 0,5с для паузи буде достатньо. Аналогічно для виходу №1. Завдяки цьому активним завжди буде лише один вихід.
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Soir
  • Soir аватар
  • онлайн
  • Moderator
  • Дописи: 14111
  • Подякували: 5431
  • sxem.org 2019,2020,2021,2022,2023 Respect Author
Таких подробностей недостаточно.
Ситуация. Нажили кнопку, задание времени 2 сек. Через 1 сек отпустили, через 0,2 сек снова нажали, через 0,5 сек отпустили.... что на выходе? Когда включаются/выключаются реле? То есть, что делать если во время отработки одного реле состояние кнопки изменилось несколько раз?
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Soir пише:
...что делать если во время отработки одного реле состояние кнопки изменилось несколько раз?
Не реагувати на стан входу, доки активний вихід.
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Soir
  • Soir аватар
  • онлайн
  • Moderator
  • Дописи: 14111
  • Подякували: 5431
  • sxem.org 2019,2020,2021,2022,2023 Respect Author
Нет, не понял.
Допустим, нажата кнопка, включилось реле 1. За время включенного реле 1 состояние кнопки изменилось несколько раз, но на момент отключения реле 1 кнопка снова оказалась нажата. Что должна делать программа - всё проигнорировать и ничего не делать или последовательно отрабатывать все нажатия?
А если на момент отключения реле 1 кнопка отжата, тогда что?
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Soir пише:
Допустим, нажата кнопка, включилось реле 1. За время включенного реле 1 состояние кнопки изменилось несколько раз, но на момент отключения реле 1 кнопка снова оказалась нажата. Что должна делать программа - всё проигнорировать и ничего не делать или последовательно отрабатывать все нажатия?
Всё проигнорировать и ничего не делать, пока не выключится реле 1
Soir пише:
А если на момент отключения реле 1 кнопка отжата, тогда что?
Тогда после отключения реле 1 и выдержки паузы включить реле 2.
Теоретически (да скорее всего и практически) многократного срабатывания кнопки не должно быть.
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Soir
  • Soir аватар
  • онлайн
  • Moderator
  • Дописи: 14111
  • Подякували: 5431
  • sxem.org 2019,2020,2021,2022,2023 Respect Author
Алгоритм изменил, проверьте.
Долучення:
Увійдіть до облікового запису, щоб писати повідомлення.
Користувачі які сказали Дякую: Ur5got

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Дякую. А можна перекомпілювати ще й під tiny13, бо щось мої tiny45 не прошиваються?
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Soir
  • Soir аватар
  • онлайн
  • Moderator
  • Дописи: 14111
  • Подякували: 5431
  • sxem.org 2019,2020,2021,2022,2023 Respect Author
Перекомпилировал.
Долучення:
Увійдіть до облікового запису, щоб писати повідомлення.
Користувачі які сказали Дякую: Ur5got

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Перевірив на 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
  • Дописи: 14111
  • Подякували: 5431
  • sxem.org 2019,2020,2021,2022,2023 Respect Author
Исправил, проверьте еще.
Долучення:
Увійдіть до облікового запису, щоб писати повідомлення.
Користувачі які сказали Дякую: Ur5got

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Перевірив - працює як треба. Дякую.
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Soir, здравствуйте.
Не могли бы вы подправить прошивку под Tiny13 так, чтобы на выходах появлялся высокий уровень после того, как нажатие кнопки происходило более 2-10 секунд (время возможно задать в EEprom). При следующем нажатии выходы должны сбрасываться в ноль. При включении питания - на выходах низкий уровень. Такой себе триггер, но с регулируемой задержкой на переключение. Собирал на логике, но работает не очень четко.
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Soir
  • Soir аватар
  • онлайн
  • Moderator
  • Дописи: 14111
  • Подякували: 5431
  • sxem.org 2019,2020,2021,2022,2023 Respect Author
Ur5got пише:
чтобы на выходах появлялся высокий уровень после того, как нажатие кнопки происходило более 2-10 секунд (время возможно задать в EEprom). При следующем нажатии выходы должны сбрасываться в ноль.
Вообще не понял, как должно работать.
Все таймеры отменяются? Какая последовательность включения выходов? Какая последовательность отключения? Опишите подробно каждый этап работы программы.
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
При включении питания: на выходе 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
  • Дописи: 14111
  • Подякували: 5431
  • sxem.org 2019,2020,2021,2022,2023 Respect 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'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Т2 - задает время работы таймера, либо отключает его, переводя устройство в ручной режим.
Наверное я не пояснил этот пункт более подробно. Должна быть ещё одна ячейка памяти, которая отвечает за режим работы выхода out_1. Если в ячейке единица - режим с таймером Т2,а если ноль - управление только кнопкой (таймер как бы отсутствует).
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Soir
  • Soir аватар
  • онлайн
  • Moderator
  • Дописи: 14111
  • Подякували: 5431
  • sxem.org 2019,2020,2021,2022,2023 Respect Author
Ur5got пише:
Т2 - задает время работы таймера, либо отключает его
Не понял, кого отключает? Как это "либо задает", "либо отключает"?


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

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Soir пише:
А если такой вариант: если T2 установлен в 0 (обе ячейки), тогда таймер и не работает?
Да. Этот вариант отлично подходит.
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Здравствуйте.
Проверил прошивку из поста 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
  • Дописи: 14111
  • Подякували: 5431
  • sxem.org 2019,2020,2021,2022,2023 Respect Author
Ur5got пише:
Может нужно куда-то (в конец прошивки) прописать калибровочный байт?
Для каждого экземпляра МК будет свой калибровочный байт. Да еще и его нужно править в зависимости от питания, температуры...
Проще учитывать эту погрешность при установке таймера в EEPROM.
Но также внес некоторые изменения в сам таймер, протестируйте точность отсчета.

Работу при нулевом таймере исправил, проверьте еще.
Долучення:
Увійдіть до облікового запису, щоб писати повідомлення.

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

  • Ur5got
  • Ur5got аватар
  • Оффлайн
  • I'm here long time
  • Дописи: 144
  • Подякували: 20
  • sxem.org Sponsor 2020,2023
Soir пише:
Но также внес некоторые изменения в сам таймер, протестируйте точность отсчета.
Точность отсчета особо не изменилась: выставил 2 минуты 30 секунд, а выключение произошло через 2 минуты 46 секунд.
Ранее неоднократно собирал Вашу схему двухканального таймера на mega8 (использовался встроенный генератор), так вот там точность отсчета была очень хорошей. Наверное из-за того, что генератор работал на 1МГц, и калибровочный байт автоматически брался для этой частоты. А здесь, наверное, генератор аппаратно калибруется значением для 9,6МГц (если в прошивке не учтено для 4,8МГц).
Soir пише:
Работу при нулевом таймере исправил, проверьте еще.
При нулевом таймере работает нормально - сбоев пока не заметил. Еще тестирую
Увійдіть до облікового запису, щоб писати повідомлення.
  • Сторінка:
  • 1
  • 2
Модератори: Wolf, Vakula, Айнцвайдрайченко, Soir