Перейти к содержанию
    

Длительность импульсов в "дребезге контактов"

Добрый день.

Пытался найти ответ на поставленный вопрос, но глухо.

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

Спасибо.

P.S. При смене логического уровня считаю до 65536, если в это время проскакивает дребезг, то считаю заново. Но беда в том, что досчитав до конца я потратил всего 10мс, если длительность импульсов в дребезга больше, то будут ошибки, надо увеличивать счетчик.

Изменено пользователем Alt.F4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S. При смене логического уровня считаю до 65536, если в это время проскакивает дребезг, то считаю заново. .....будут ошибки, надо увеличивать счетчик.

Дребезг очень зависит от типа механики и ряда других обстоятельств. ОБЩЕЕ время дребезга можно ориентировочно принять несколько миллисекунд. В 10 миллисекунд он укладывается в маломощных реле и кнопках всегда.

А вот борьба с этим искажением сигнала...

Интересно, если бы Вам дать 32-разрядный счетчик - считали бы до 2^32? А если только 4-разрядный? До 15?

Посадите мысленно себя рядом с контактом и представьте, что можете его движение четко видеть глазом с интервалом в 1мкс или 10 мкс. Как бы Вы приняли решение о том, что контакт таки замкнулся (разомкнулся), используя вычислительные мощности всех 14 миллиардов клеток в стандартных мозгах? И всего лишь пальцы одной руки для счетчика?

Или нужно увеличивать вычислительные мощности, разувшись, на пальцах одной руки задача не решаема? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Зависит от конструкции контакта. В данном контексте контакт надо рассматривать как механический резонатор, имеющий более-менее явственную частоту собственных колебаний. Если это контактор или реле с длинными контактами, то длительность импульсов может доходить до нескольких сотен миллисекунд. Если это маленькая кнопка, то длительность ожидается очень короткая, и 10 мс хватит с лихвой. Для своих устройств я принимаю, что длительность импульсов не превышает 200 мс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Microwatt, мой счетчик какгбе еще и защищает от помех =)

=AK=, спасибо большое, буду считать до 200мс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пытался найти
http://www.google.ru/search?q=%E0%ED%F2%E8...%E5%E1%E5%E7%E3 ?

 

... а теперь берём резиновую кнопку. Через год эксплуатации. И пытаемся применить сабж к ней, как тоже контакту, хотя и в крайнем виде.

 

Подсказка для если не интересно сначала попробовать без подсказок:

 

1. раз в миллисекунду проверяем: нажато или отжато?

2. если нажато - увеличиваем счётчик,

3. если отжато - уменьшаем счётчик,

4. когда счётчик >= 100 - значит, точно нажато,

5. когда счётчик <= 0 - значит, точно отжато.

 

Ход мысли.

 

Microwatt про такое и намекать хотел, показалось мне. Скучно же, когда программист подобно солдату мыслит: чётко-ясно-инструкция-исполнять.

 

буду считать до 200мс
Счётчик кармы увеличивать не хотел ленился, а после этого. Жалко время и особенно внимание на бессмысленные опыты тратить.

 

----

 

Каменты видел. Извиняйте, не увлекаюсь чатами.

Мысль изложена полностью, добавить к ней ничего не имею. Если получилось непонятно сразу и после перечитать обдумать тоже непонятно - тогда ой.

Изменено пользователем нечитатель

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4. когда счётчик >= 100 - значит, точно нажато,

Если 99, то "не точно" нажато? :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нечитатель, что-то я не понял о чем Ваш пост. У меня в программе все "железные" таймеры заняты, а отсчитывать каждую мс заполнением регистров - это тоже самое, что я и сделал. Да и по сути какая разница до скольки считать, хоть до 1млрд, главное временные рамки ИМХО (о которых кстати и был вопрос).
Изменено пользователем Alt.F4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если 99, то "не точно" нажато? :rolleyes:
Ага! А ещё: если кнопку долго не отпускать и переполнится счетчик, то "точно" отожмём... :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага! А ещё: если кнопку долго не отпускать и переполнится счетчик, то "точно" отожмём... :biggrin:

Дык, вот тут такое дело, что дребезг он по барабану во многих случаях.

Попробую пояснить мысль.

Предположим в начале кнопка разомкнута и это логический "0".

Замкнули кнопку и выскочила пачка импульсов "1", по первому импульсу вызов прерывания и программа вычисляет какая кнопка нажата.

Какая разница сколько было импульсов в пачке?

Далее программа ожидает среднее время нажатия - зависит от типа кнопки.

Затем программа ждет отпускания кнопки оператором, тоже пачка импульсов, на этом цикл завершен и все сначала.

Дребезг побоку. :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... главное временные рамки ИМХО (о которых кстати и был вопрос).
Максимальная длительность дребезга, как уже было сказано, зависит от конструкции контактов. Вы хотите узнать: какая максимальная длительность дребезга кому-либо встречалась? Обычно она не превышает 10 мс, но встречались "паршивые" китайские кнопки, у которых (причем новых) дребезг длился 60 мс, а после небольшого периода эксплуатации (ну, может раз двести нажали) - превысил 90 мс. Такие кнопки (1000 шт) без сожаления были выкинуты к какой-то матери...

 

 

Далее программа ожидает среднее время нажатия - зависит от типа кнопки.

...Дребезг побоку. :laughing:

Так это "ожидание" - и есть обработка дребезга. Без него(ожидания) - Вы бы "ловили" множественные нажатия-отпускания.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..По флагу таймера, который клацает с периодом, например, 20mS, опрашиваем все имеющиеся кнопки.

И понятие "дребезг контактов"совсем теряет актуальность.. :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так это "ожидание" - и есть обработка дребезга. Без него(ожидания) - Вы бы "ловили" множественные нажатия-отпускания.

Нет. Дребезг это пачка импульсов, а ожидание это готовность кнопки к следующему нажатию. Сюда включается дребезг при нажатии, время удержания, дребезг при отпускании.

Тут учитывается больше эргономика. Нажали, отпустили, подняли палец, выбрали другую кнопку, опустили палец, нажали и т.д.

Например, для мембранной клавиатуры быстрее 0.5 секунд не очень удобно нажимать кнопки.

А это не сопоставимое время с дребезгом. :rolleyes:

Изменено пользователем 50X

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..По флагу таймера, который клацает с периодом, например, 20mS, опрашиваем все имеющиеся кнопки.

И понятие "дребезг контактов"совсем теряет актуальность.. :rolleyes:

Но появляется другой враг - случайное нажатие взволнованного юзера, типа ОЙЦ. На этот случай валидное нажатие ужЕ через минимум 200мс

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Особенность некоторая в том ЧТО нужно обнаружить программно? Срабатывание кнопки, реле? Или то, что срабатывание произошло не просто, а переходные процессы закончились?

В первом случае достаточно просто получить прерывание и замаскировать его на разумное время до следующего срабатывания-отпускания. Какая разница - дребезжат контакты или или нет? Важно, что сработало, произошло изменение состояния. Это, например, для обычной компьютерной клавиатуры годится.

Во втором - через миллисекунду примерно опрашивать. Если подряд три -четыре считывания с одинаковым результатом - считай, таки сработало. Этот алгоритм на практике на борту и в мощных энергосистемах применяли при двухступенчатой выдаче команд - "предварительно - исполнить". Т.е. смысл там в том, что цепь из нескольких контактов для выдачи команды в нужное место набралась. Можно подавать сам силовой сигнал команды.

Наконец, есть аппаратные средства нормирования таких сигналов. Простой RS триггер устраняет дребезг , как класс. Все равно, сигнал от контакта как-то нормируется по амплитуде к уровням лог 1 и 0, аппаратные затраты не так уж велики.

Или сейчас программеры для этого 16-разрядный АЦП применяют?

Во всяком случае, считать в сетчике до десятков тысяч - крайне расточительный алгоритм.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

через миллисекунду примерно опрашивать. Если подряд три -четыре считывания с одинаковым результатом - считай, таки сработало.
Если учитывать, что:

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

Во всяком случае, считать в сетчике до десятков тысяч - крайне расточительный алгоритм.
По-моему ни разу не расточительный.

1) Если во время ожидания нажатия кнопки (реле) не надо ничего делать, то можно считать сколько, главное сделать временную паузу.

2) Если инкрементировать счетчик в основном цикле программы, то опять же мы ничего не теряем (не более десятка тактовых импульсов), можно считать сколь угодно много, придерживаясь времени.

Изменено пользователем Alt.F4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...