Сенсорная кнопка для ардуино своими руками

Сенсорная кнопка и Arduino

Подобные кнопки/датчики используют ваше тело как часть электрической цепи.

Когда вы касаетесь чувствительной поверхности сенсорной кнопки, емкость цепи изменяется и фиксируется. Изменение емкости приводит к изменению выходного сигнала.

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

Модуль сенсорной кнопки TTP223B можно купить на eBay, Aliexpress и т.п.

Подключаем сенсорную кнопку к Arduino

Распиновка сенсорной кнопки Catalex показана на ниже. Как и у большинства датчиков, на кнопке три контакта.

Это контакты для подключения питания (VCC), земли (GND) и выходного сигнала (SIG).

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

Скетч для Arduino и сенсорной кнопки

Скопируйте, вставьте и загрузите скетч, который приведен ниже, на ваш Arduino.

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

// Инструкция по использованию модуля сенсорной кнопки с Arduino

// полная инструкция на сайте arduino-diy.com

// когда Sig Output в high, тач сенсор нажат

#define ctsPin 2 // пин для епкостного датчика касания

Источник

Сенсорные кнопки в Ардуино

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

Сенсорная кнопка

Ни для кого не секрет, что прогресс не стоит на месте. Постоянно появляются новые технологии, совершенствуются старые. Сенсорные экраны появились совсем недавно (по меркам человечества), но уже прочно вошли в нашу повседневную жизнь. Телефоны, телевизоры, терминалы и прочие в большинстве своём используют «беcкнопочные» технологии. В кавычках это слово по той причине, что они всё-таки используют кнопки, только сенсорные. О них в данной статье как раз и пойдёт речь, а если точнее, о Touch module для Arduino.

Принцип работы сенсорных кнопок

Модули с сенсорными кнопками в большинстве своём используют проекционно-ёмкостные сенсорные экраны (https://ru.wikipedia.org/wiki/Сенсорный_экран). Если не вдаваться в пространственные объяснения их работы, для регистрации нажатия используется вычисление изменения ёмкости конденсатора (электрической цепи), при этом важной особенностью является возможность выставлять различную начальную ёмкость, в чём мы убедимся далее.

Человеческое тело обладает некоторой электрической емкостью, а следовательно, и невысоким реактивным сопротивлением для переменного электрического тока. Если прикоснуться пальцем либо каким-либо электропроводящим объектом, то через них потечет небольшой ток утечки от устройства. Специальный чип определяет эту утечку и подаёт сигнал о нажатии кнопки. Плюсами данной технологии являются: относительная долговечность, слабое влияние загрязнений и устойчивость к попаданию воды.

Сенсорные или механические кнопки

+ Сенсорная кнопка «ощущает» нажатие даже через небольшой слой неметаллического материала, что обеспечивает разнообразие в использовании её во всевозможных проектах.

+ Из предыдущего пункта вытекает и этот – возможность использовать сенсорную кнопку внутри корпуса повышает привлекательность проекта, что не влияет на функционал, но достаточно важно в повседневной жизни, чтобы не обращать на это внимание.

+ Стабильное функционирование, которое выражается отсутствием подвижных частей и частой калибровкой (о чём будет сказано ниже). Вам не придется беспокоиться о дребезге кнопок, возникающем при использовании механического собрата, что существенно облегчит жизнь начинающему ардуинщику. Поэтому ещё один плюс, пусть и не для всех – простота при работе.

Из минусов можно отметить следущее:

  • Сенсорные кнопки плохо работают при минусовых температурах, поэтому они непригодны для использования за пределами помещений.
  • Высокое потребление электричества, вызванное необходимостью постоянно поддерживать одинаковую ёмкость.
  • Сенсорная кнопка не работает при нажатии её рукой в перчатке либо плохо проводящим электричество объектом

Обзор сенсорных кнопок

Прежде чем говорить непосредственно о работе с модулем, нужно определиться с тем, какую именно модель купить для использования. Рассмотрим несколько вариантов различных компаний:

1. Troyka touch sensor

Время отклика: 80мс (в режиме энергопотребления) и 10мс (в высокоскоростном режиме)

Максимальная толщина диэлектрика для нормальной работы: 4 мм

Размер: 25Х25 мм

Напряжение питания: 3–5 В

Цена: 390 рублей

2. Grove Touch Sensor

Время отклика: 220 мс и 80 мс

Максимальная толщина диэлектрика для нормальной работы: 2 мм

Размер: 20Х20 мм

Напряжение питания: 2–5 В

Цена: 229 рублей

3. TTP223B Arduino Digital Touch Sensor

Время отклика: 220 мс и 60 мс

Размер: 24Х24 мм

Напряжение питания: 2–5 В

Цена: 150 рублей

4. Keyestudio touch module

Размер: 30Х20 мм

Напряжение питания: 3.3–5 В

Цена: 270 рублей

Подключение сенсорной кнопки к Ардуино

Для использования сенсорной кнопки, как, впрочем, и всех остальных модулей и датчиков, её необходимо подключить к какой-либо плате arduino. В большинстве случаев используются стандартные модули с тремя контактами: питание, сигнал и земля. Их расположения от модели к модели меняются, на схеме они отображены согласно недавнему перечислению (сенсорная кнопка заменена переключателем по причине её отсутствии в Tincercad):

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

Сенсорный модуль, по своей сути аналогичен цифровой кнопке. Пока кнопка нажата, датчик отдаёт логическую единицу, а если нет, то логический ноль.

Проекты с использованием сенсорной кнопки

Начнём с простого: при нажатии на кнопку загорается встроенный светодиод.

Теперь усложним задачу: Нажатием на кнопку изменяется режим работы светодиода.

Заключение

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

Источник

Arduino.ru

Сенсорная кнопка из подручных средств

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

Возникла мысль управлять светодиодной подсветкой с помощью сенсорной кнопки. У китайцев они не очень дорогие, но ждать 2 месяца было лениво. Поэтому решил сделать ее сам. В интернете нашел отличную статью на этот счет, но не ардуино. Но какая разница, адаптировал код для нашего девайса. Методом научного тыка выявил, что резистор лучше поставить побольше 2МОм (может быть и еще больше). Кроме того использовал код из местной статьи для создания триггера. Вот что получилось:

Пришлось добавить задержку в полсекунды, т.к. весьма ощутим был дребезг (переходные процессы).

Величина ёмкости без касания равнялась примерно 6 тактам. При касании — свыше 20. Знаю, что у раных людей ёмкость может быть разной, поэтому величину гистерезиса можете сами подправить.

В качестве кнопки использовал болт М5 (предположительно будет видна только его шляпка, как кнопка). Провод к болту длинной 50 см., что практически не влияет на измеренную ёмкость (на коротком поводке значения те же).

П.С. Простите, не знал, в каком разделе разместить написать, поэтому здесь.

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

какой смысл в комбинации строк 8 и 9?

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

Переводя порт в режим вывода мы переводим его в состояние логического нуля. Потом переводим порт в режим чтения (не включая подтягивающий резистор) и через резистор идет зарядка «конденсатора» до состояния логической единицы. Именно время заряда и является показателем касания сенсора.

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

Круто, хочу узнать побольше об этом! Например, почему резистор 2 Mom, почему не 1 Mom или 200 kom? И вообще, зачем он тут?

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

Чтобы регулировать чувствительность. 1 МОм тоже можно. С 200 кОм, скорее всего, перестанет работать как должно. С 10 МОм будет много ложных срабатываний и срабатываний даже с отдалённой рукой, а с 50 МОм, например, будет реагировать даже на проезжающую мимо машину, у которой шины трутся об асфальт и создают статический заряд.

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

Спасибо за толковое разъяснение, добавлю в важные заметки. А схема для этого скетча —> ?

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

Только вместо 3 пина на плате — 10 пин, а 2 пин вовсе не подключаем, т. е. используем 3 пина arduino? Во всяком случае я это уже попробовал и всё работает, но мне нужно мнение посвящённого человека, чтоб наверняка.

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

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

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

Интересно, схему которую вы нарисовали. немного отличается от той что я испробовал: провод что ведёт к 5 вольтам у меня отсутсвует, т. е. всего я использую 3 провода. Вопрос, как у меня всё работает ?? :))

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

Аааа, до меня дошло. без этого 4-го провода не использовать мне резистор.

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

void setup() <
pinMode(2, OUTPUT); добавил вот эту строку, теперь всё работает, как я понимаю, через резистор 1 Мом.

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

Интересно, схему которую вы нарисовали. немного отличается от той что я испробовал: провод что ведёт к 5 вольтам у меня отсутсвует, т. е. всего я использую 3 провода. Вопрос, как у меня всё работает ?? :))

Таким образом оно работало в качестве детектора электромагнитного поля — в комнате много полей, от компьютера, от розеток, лампочек. Если подключить один выход резистора к земле, а второй (с медной платой — антенной) к аналоговому входу, можно замерять и более слабые поля, ну а так — напряжение на пальце превышало 1 или сколько там вольт, вот цифровой вход и включался.

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

Спасибо! Хорошая статья в качестве отправной точки.

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

1) можно попробовать в setup (или вообще в отдельной функции) подсчитать количество тактов до зарядки «конденсатора». получится самонастраивающаяся система. Тогда и верхнюю границу можно будет взять не за определенное число (в данном случае 20), а как найденное значение в setup плюс дельта.

2) можно ли использовать для настройки чувствительности не только разные резисторы, но и ШИМ? Соответственно резистор подключать не к +5в, а к пину, который поддерживает ШИМ.

3) как себя такая кнопка будет вести в машине, если периодически ездить около высоковольтных линий электропередач?

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

Признаться, я, всё же, купил у китайцев готовые сенсорные кнопки, но сильно в них разочаровался. Почему-то они часто самопроизвольно срабатывают, хотя я применял разные методы устранить помехи. Думаю, что с самодельной кнопкой больше возможности по настройке чувствительности (в китайских такой настройки вообще нет, она настраивается автоматически).

По вашим вопросам. Разумеется, идея добавить автоподсчёт в сетап хорошая! Если реализуете, присылайте сюда.

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

Возможно, вблизи ЛЭП действительно может меняться время зарядки конденсатора в следствии наводки электромагнитных волн на всю систему и на оператора в частности. Тут можно попробовать сделать небольшую подпрограмму, которая будет выполнять автонастройку системы с небольшим интервалом (или вообще постоянно в простое). Но вполне может быть, что автомобиль экранирует эти наводки и ничего такого сложного не потребуется.

Источник

Читайте также:  Ремонт улицы своими руками
Оцените статью