+2 голосов
У меня сложная программа, которая впритык работает на моем микроконтроллере. Ресурсов не хватает, я вынужден бороться почти за каждый такт. У меня много кнопок и аппаратными средствами я хочу уменьшить нагрузку на камень. Посоветуйте пожалуйста какие-нибудь внешние средства для обработки кнопок.
(905 баллов) 3 35 81

2 Ответы

+4 голосов
 
Лучший ответ

Самый простой способ использовать RC-цепочку.

Когда кнопка не нажата, конденсатор заряжается через резисторы R1 и R2. при нажатии на кнопку конденсатор начинает разряжаться и напряжение упадет до нуля. Если есть дребезг, сигнал подпрыгивает вверх и вниз в течении нескольких миллисекунд, но конденсатор подзаряжается через резистор и на выходе поддерживается высокий уровень напряжения.Благодаря этому уровень сигнала меняется с высокого на низкий только один раз в течении интервала времени, определяемого значениями резистора и конденсатора. Резистор R2 предназначен для уменьшения тока разряда и заряда конденсатора для сохранения контактов кнопки.

Более подробно вопрос описан в книге от Джереми Блюма "Изучаем Arduino" - глава 12.3 Разработка и тестирование системы противодребезговой защиты для кнопки

(1.2 тыс. баллов) 2 10 38
выбран
Схема устранения дребезга дороже самой кнопки). К тому же такая схема сокращает срок службы кнопки из-за разряда конденсатора на кнопку.
+6 голосов

Для аппаратного подавления дребезга можно использовать RC-цепочки, но лучше всего применять триггер Шмитта или специализированные микросхемы MC14490

(208 баллов) 2 14
триггер Шмитта не способен устранить дребезг.
Согласен, полностью проблему не решит. Но форму сигнала улучшит что иногда может быть вполне достаточно, особенно совместно с применением RC-цепочек
Триггер Шмитта стоит на входе практически у всех МК. Разве что их у процессоров нет, но это не точно)
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. parovoZZ

    8 балл(ов)

  2. dmipec

    2 балл(ов)

  3. wickiup

    2 балл(ов)

  4. Un_ka

    2 балл(ов)

  5. anod

    1 балл(ов)

  6. Timcompany

    1 балл(ов)

Награды месяца
1-е место: Arduino MKR GSM 1400
2-е место: Arduino MKR Wi-Fi 1010
3-е место: Arduino MKR Zero

...