Видеоуроки по Arduino. Прерывания (10-я серия, ч1)

preview_player
Показать описание
Джереми рассказывает об использовании аппаратных прерываний на Arduino для выполнения заданной функции при возникновении внешнего события. Также объясняется как с помощью конденсатора и триггера Шмитта устроить аппаратную стабилизацию сигнала с кнопки
Рекомендации по теме
Комментарии
Автор

У нас в ассортименте есть «Инвертирующий Триггер Шмитта». Это то, что надо.

AmperkaRuOfficial
Автор

Давно известна схема аппаратной фильтрации дребезга: RS триггер + кнопка с переключающим контактом. Результат - крутые фронты сигнала без дребезга и мгновенная реакция микроконтроллера на нажатие.

mifix
Автор

Да, похоже полезный эффект от этой схемы дает медленный заряд конденсатора. Конденсатор разряжается быстро, но медленно заряжается и это отфильтровывает дребезг контактов.

Ovod
Автор

Не, вольтаж конденсатора — это лишь предельная характеристика. Она не влияет. Кнопка жужжит сотни микросекунд. Подбирайте R и C так, чтобы получилась одна тысячная. Напимер, 100 нФ и 10К резистор.

AmperkaRuOfficial
Автор

Ещё во втором уроке проблему дребезга можно было решить парой строк кода, вместо представленной Джереми функцией debounce(). А именно так:  
  currentState = digitalRead(switchPin);
  if(switchState != currentState) {
     delay(5);
     currentState = digitalRead(switchPin); }
Если теперь эти сроки применить к текущему уроку заменив delay() на:
      previousMillis = millis();
      while(bounce) { //bounce - default is true
        unsigned long currentMillis = millis();
        
        Serial.print("Previous ");
        Serial.print(previousMillis);
        Serial.print(" Current ");
       
        
        if(currentMillis - previousMillis >= interval) { //interval=5;
          currentState = digitalRead(switchPin);
          Serial.print("Interval ");
          Serial.println(currentMillis - previousMillis);
          bounce = false; 
        }
        else previousMillis = currentMillis;
      }
      bounce = true;
В общем суть в том, чтобы крутиться в цикле while(), пока не пройдут 5мс, используя метод millis().
Такое решение работает несколько криво. Если просто нажимать на кнопку, то всё срабатывает, но в serial успевает отправиться два раза подряд. Если же нажать очень быстро, то в сериал отправляется один раз, но и диод не загорается.
В чём тут дело, кто подскажет? В сети программное решение дребезга нашёл только под ассемблер.

sebler
Автор

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

KostyanichW
Автор

Быть может у вас получилась слишком большая «тау» и цепочка не успевает отрабатывать?! Клики не будут срабатывать чаще, чем 4×R×C

AmperkaRuOfficial
Автор

Скажите пожалуйста можно ли организовать с помощью Ардуино и оптических энкодеров индикацию направления вращения вала мотора от 0 до 15000 оборотов?

Автор

😮Прикрутить триггер Шмидта к микроконтроллеру, надеюсь за эти годы этот парень поумнел. Обычно это программно решается. А проще сенсорную кнопку подключить, там всё это есть.

Александр-лсф
Автор

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

АлександрИстомин-ър
Автор

Маленькая просьба сделайте пожалуйста плей лист на видео уроки. Очень не удобно искать по порядку

diaskogebaiuly
Автор

Уверены, что мгновенно, а не по обратно-показательной функции?

AmperkaRuOfficial
Автор

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

earielflare
Автор

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

DrLithium
Автор

Могу ли я поменять как нибудь этот 3д шмиттер
или где могу купить

AlmatKozhakhmet
Автор

Яка програма використовується для схеми ?

МарянМілян
Автор

Сопротивление контактов кнопки равняется 0 а они включены параллельно конденсатору, следовательно стабилизации при нажатии не будет, только при отпускании!

AlexAlex-hwxk
Автор

Реализовал аппаратный способ на триггере Шмитта SN74HC14N как на видео (R 10кОм, С 10mF электролитический), при нажатии кнопки прерывание срабатывает 1 раз, а при отпускании возникает дребезг (множественное срабатывание) может кто знает как исправить дребезг при отпускании?

МаксимЧистяков-чц
Автор

Триггер лишний. Кнопка с резистором и кондером и так будет нормально работать.

Zhalimov
Автор

вопрос! надо ли так изголятся если у меня не кнопка а индуктивный датчик

supereveryday