Как работает сенсорная кнопка

Приветствую, любитель микроконтроллеров!

Вступление
Я продолжаю воплощать в жизнь свой первый, когда-то заброшенный, проект на микроконтроллере — лампу настроения. И, как и обещал в прошлый раз, по ходу разработки пишу небольшие заметки для начинающих. В этот раз рассмотрим как реализуется емкостный сенсор и задержки тех или иных операций итерациями основного цикла. Что касается самого проекта, могу сказать, что на данный момент написана полностью рабочая прошивка. Остается дело за схемой, печаткой и тестированием в нормальном железе. Затем выложу все на ваш суд.

Сенсорная кнопка
Принцип сенсорной кнопки прост. Берем небольшую площадку не важно какой формы, я взял кусок фольгированного текстолита (далее — кнопка). Подпаиваем к ней резистор большого номинала, порядка 1 МОм. И подключаем кнопку через этот резистор к питанию. Подпаиваем к кнопке провод, который соединит кнопку с ножкой микроконтроллера (далее — МК). Площадку изолируем тонким изолятором, хотя и без него будет работать. Площадка кнопки имеет определенную емкость, которая увеличивается, когда на ней находится палец человека.

Алгоритм работы следующий:
1. Переводим ногу МК в режим выхода.
2. Подаем низкий уровень, чтобы разрядить емкость кнопки.
3. Переводим ногу МК в режим входа и ждем когда емкость кнопки зарядится через резистор 1 МОм и на входе появится верхний уровень. Ожидание производится в цикле, в котором инкрементируется счетчик.
4. Сенсор зарядился — по значению счетчика можно судить о состоянии сенсора.

Обратите внимание, что подсчет итераций идет в атомарном блоке. Это значит, что в это время не будут срабатывать прерывания и не собьют нам время заряда сенсора.

Теперь для использования нашего алгоритма нам необходимо определить порог срабатывания кнопки. Для этого при инициализации мы выполняем калибровку. И берем в качестве порогового — значение на четверть большее, чем возвращается при свободном сенсоре.

Я проверял, на пустом сенсоре функция у меня возвращает стабильно 15. А когда кладешь на сенсор палец — около 30. Значит порог у нас будет где-то 15 + 15/4 = 18.

Ну а далее, в основном цикле программы нам остается проверять состояние сенсора и сравнивать его с пороговым значением. Если превысило — кнопка нажата, нужно отреагировать.

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

Я, в течении нескольких дней, пользовался кнопкой, пока отлаживал прошивку для лампы — сенсор срабатывает четко!

Задержка итерациями основного цикла
Иногда в основном цикле требуется периодически производить какие-то действия с большой задержкой. Скажем 2 секунды. Однако, просто "спать" при этом нельзя, потому что можно проворонить, скажем, нажатие на сенсорную кнопку или другое событие. В этом случае есть простой выход. Берем счетчик, выставляем его в некоторое значение и каждую итерацию основного цикла декрементируем. Как только счетчик стал равен нулю — наша задержка истекла и пришло время для нашего действия. В основном цикле можно добавить минимальную задержку, которая не сделает появление ожидаемого события критическим.

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

Результат
Дабы разбавить сухой текст, я хочу показать результат сегодняшнего урока наглядно. Т.к. я делаю лампу настроения, то я использовал RGB-светодиод. В основном цикле будем менять 7 цветов радуги + розовый по кругу. А при нажатии на сенсорную кнопку будем просто моргать белым цветом. Микроконтроллер будет работать на частоте 9.6 МГц, для этого достаточно от фьюзов по умолчанию убрать делитель на 8 (сделать CKDIV8 = 1). Фьюз байты удобно рассчитывать вот этим калькулятором.

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

Схема для модуляции в протеусе получилась немного отличающейся от реальной картины: пришлось реализовать емкостный сенсор на двух конденсаторах и переключателе. Питание 5В для МК на схеме отсутствует, но оно необходимо!

Смотрим результат на видео

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

В преддверии Нового года, желаю вам довести все ваши проекты до конца!

Транзисторы любые NPN структуры: КТ315, КТ3102 или BC547 или любой другой. Резисторы 0,125-0,25 Ватт. Светодиод любого цвета, но лучше красный, так как падение напряжение падение у него минимальное. Питание 5 вольт, больше меньше можно и меньше тоже.

Все компоненты были компактно соединены между собой на миниатюрной печатной плате, которую можно сделать просто вырезав лишнюю медь резаком оставив таким способом остроугольные многоугольники. Детали, использованные для поверхностного монтажа, транзисторы в sot-26 npn, резисторы 0805, перемычки – кусочки провода, вместо них, если есть берите крупный 2512 резисторы с нулевым (условно) сопротивлением. Сенсорное устройство работает сразу, без настройки.

Читайте также:  Как открыть подъезд cyfral

Объяснение работы схемы

Дотрагиваясь до базы транзистора Q3 вы наводками открываете его, вследствие чего через его КЭ и резистор 1 Мом течет ток, который открывает следующий полупроводник Q2, тот открываясь открывает Q3, который уже управляет светодиодом, открываясь через его КЭ течет ток, от минуса идет к катоду светодиода, а к аноду он уже подключен. Резистор 220 Ом здесь “токоограничительный”, на нём падает лишнее напряжение, что защищает диод от деградирования кристалла и полного выхода из строя LED1

Ну вот горит светодиод по касанию пальца – и что? А вот то, что вместо этого светодиода ставим реле и теперь мы можем управлять почти любой нагрузкой, в зависимости от характеристик применяемого реле. Ставим мощную лампу накаливания, подключенную к сети, а в разрыв этой цепи контакты реле. Теперь при нажатии, а точнее касании сенсора лампа светит.

Также организовать включение/отключение нагрузки можно с помощью оптопары, если отсутствует реле, тогда также будет гальваническая развязка. Эта прекрасная вещь состоит из светодиода и фототранзистора, когда первый светит, то это открывает транзистор и через его КЭ может течь ток. Включаем нужные выводы оптрона в схему сенсора вместо светодиода LED1, а остальные два в разрыв источника питания и любой нагрузки. Эту деталь можно изъять из зарядок от телефона. Возьмите, к примеру, PC-17L1.

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

Еще вместо реле и оптопары возможно применение двух npn транзисторов. Я так и сделал, схему вы видите. Работает это так: Q5 всегда должен быть открыт, через резистор 10 кОм, но через КЭ открытого Q4 на базу Q5 поступает “минус” и из-за этого он закрыт. Когда же вы касаетесь сенсора – то минус поступает через открытый Q1 на базу Q4 и закрывает его, теперь уж ничто не мешает Q5 оставаться открытым – нагрузка работает, а в моем случае мощный 1 Ватт светодиод ярко светит.

Так это выглядит в собранном состоянии.

Сенсор не имеет фиксации, дотронулись – светит, отпустили – не светит. Коль желаете сделать фиксацию – просто добавьте в схему триггер, например, на микросхеме КМ555ТМ2 или любой другой (можно даже на таймере 555 реализовать это). С добавление триггерной системы при касании к сенсору нагрузка будет включена до тех пор, пока не произойдет следующее касание или исчезнет питание схемы.

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

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

Как уже говорилось – открытие Q3 происходит за счет наводок, видеть это можно на видео, светодиод светит не постоянно, а подмигивает с большой частотой, но это хорошо заметно при съёмки.

Яркость работающего диода не велика, если вы дотрагиваетесь только до базы третьего транзистора, но стоит вам коснуться еще и плюса питания, то ваше тело выступит в роле резистора и транзистор Q3 перейдет в насыщение. Но при таком раскладе для некоторых потеряется смысл сенсора.

Эта схема очень проста и предназначена лишь для понимания принципа работы электронных компонентов, применять в серьезных конструкциях не рекомендуется.

Второй год я разрабатываю свой уникальный Z-Wave выключатель с сенсорными кнопками, который удовлетворит меня по функционалу, дизайну и стоимости изготовления.

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

Читайте также:  Как постряпать красивые булочки

Во время разработки я решал множество задач по схемотехнике, дизайну корпуса и выбору материалов. Особенно интересным является создание самой сенсорной кнопки, которая светится целиком, но обо всем по порядку.

  • Функционал
  • Дизайн корпуса
  • Разработка печатной платы
  • Изучение рассеивателей света
  • Подбор материалов рассеивателя
  • Использование

Видео работы сенсорного выключателя в конце.

Функционал

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

  • Включать/выключать свет
  • Регулировать яркость освещения

4 кнопки управляют 2-мя группами освещения. Верхние кнопки при удержании плавно увеличивают яркость, при коротком нажатии включают свет. Нижние кнопки при удержании плавно уменьшают яркость, при коротком нажатии выключают свет.

Сделать, чтобы каждая кнопка работала в режиме переключения, нажал — вкл, нажал — выкл. Это позволит управлять 4-мя группами освещения.

Дизайн корпуса

Мне понравилась идея с 4-мя большими сенсорными кнопками компании Basalte, и я решил развить её в своем направлении.


Рис. 1 — KNX выключатель Basalte

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


Рис. 2 — Корпус сенсорного выключателя

Все детали корпуса разработаны в Blender и распечатаны на 3D принтере белым ABS пластиком.


Рис. 3 — Разработка корпуса сенсорного выключателя в Blender

Разработка печатной платы

Печатная плата разработана в Proteus. Это вторая версия, в ней используется одна сенсорная микросхема TTP224 на 4 канала. В первой версии использовалось 4 шт. одноканальных TTP223, разницы в работе никакой, но при использовании TTP224 меньше компонентов паять.


Рис. 4 — Разработка печатной платы сенсорного выключателя в Proteus

Главными компонентами на плате являются:

  1. Z-Wave радио чип
  2. Аккумулятор Robiton 800мАч
  3. 3.3V Step-Up/Step-Down Voltage Regulator S7V8F3
  4. Микросхема заряда аккумулятора TP4056
  5. Схема переключения питания с аккумулятора на USB
  6. Кнопка калибровки
  7. Микросхема сенсорных кнопок TTP224

Z-Wave чип работает в диапазоне 2.7В — 3.6В, аккумулятор выдает до 4.7В, поэтому я использовал повышающе-понижающий преобразователь 3.3В Pololu S7V8F3. Для заряда аккумулятора использовал дешевую и многим известную микросхему TP4056, ток заряда настроил на половину емкости аккумулятора 400мА. При подключении зарядки, питание устройства переключается на USB и аккумулятор спокойно заряжается, схема переключения питания реализована на одном транзисторе и диоде. Кнопка при нажатии сбрасывает питание регулятора и вся схема перезагружается, это нужно для калибровки TTP224. На лицевой части платы находятся 4 площадки сенсорных кнопок размером 40х40 мм и 4 светодиода. Производство заказано в Seeedstudio, качеством и ценой очень доволен.


Рис. 5 — Плата сенсорного выключателя

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

Плюсы: Дешевый, на текстолите с одной стороны могут быть площадки сенсоров, на обратной стороне другие компоненты, но при этом сильно снижается чувствительность. Настройка выходного сигнала: высокий/низкий уровень, настройка режима кнопки: переключение/включение. 4 канала.

Минусы: Если с обратной стороны сенсорной площадки находятся дорожки, то плохо работает сквозь оргстекло более 3 мм и еще хуже если на стекло наклеена пленка, не реагирует на небольшое касание, только нажатие всей подушечкой пальца, даже с настроенной максимальной чувствительностью (Cs = 1pF, диапазон 0-50pF, чем меньше, тем чувствительнее).


Рис. 6 — TTP224 на готовой плате

Плюсы: Реагирует на небольшое касания сквозь 3 мм (и больше) оргстекло, если настроить чувствительность на среднем уровне (Cs = 22nF, диапазон 2-50nF, чем больше, тем чувствительнее). Автоматически подстраивается под толщину стекла.

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


Рис. 7 — Тестовая плата AT42QT1011

Плюсы: Реагирует на небольшое касания сквозь 3 мм (и больше) оргстекло. Защита от помех с помощью земли вокруг и под площадкой сенсоров, автоматически подстраивается под толщину стекла. 5 каналов.

Минусы: Долго реагирует на нажатие и долго понимает, что палец отпустили, порядка 0.5 секунд. Если удерживать палец на площадке сенсора, то через 9 секунд выключается светодиод, происходит калибровка. Сенсорную площадку требуется закрывать землей со всех сторон, в том числе и под площадкой, иначе срабатывает в любой точке касания текстолита.


Рис. 8 — MTCH105 на макетной плате

Выбрал TTP224 (4 канала), потому что на одном текстолите с одной стороны можно разместить все компоненты, а на другой стороне — площадки сенсоров. Пожертвовал чувствительностью, через 3 мм оргстекло срабатывает если коснуться целиком подушечкой пальца, хотя это можно трактовать, как защита от случайного касания :). Если под площадкой сенсора нет дорожек, то реагирует сквозь 4 мм оргстекло при малейшем касании.

Читайте также:  Изготовление компостного ящика своими руками

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

Изучение рассеивателей света

Стояла задача — равномерно засветить площадку размером 40х40мм, которой касается палец. Из-за ограничений размера корпуса, получилось впихнуть только по одному светодиоду для каждой площадки.

Я изучил устройство нескольких сенсорных выключателей: Livolo, Vitrum, HTTM touch button. В каждом использовался свой подход к равномерному рассеиванию света.

Итальянский Z-Wave выключатель с дорогим декоративным стеклом. Отражатель-рассеиватель реализован следующим образом: на прозрачном оргстекле нарисован обод светоотражающей краской, сбоку подсвеченный одним светодиодом. Со стороны светодиода краски меньше нанесено, тем самым достигается равномерное свечение по всему ободу. Сверху устанавливается декоративное стекло.


Рис. 9 — Рисунок светоотражающего обода на оргстекле

Бюджетный китайский сенсорный выключатель. На плате располагается 2 светодиода: красный и синий, светодиоды светят внутрь замутненного полупрозрачного пластика, из-за частых преломлений света внутри получается равномерное свечение всей поверхности, на текстолит нанесена светоотражающая краска.


Рис. 10 — Сенсорная часть выключателя Livolo

HTTM — HelTec Touch Model

Готовый сенсорный модуль с Noname микросхемой. Отражатель-рассеиватель состоит из 3-х частей: текстолит с луженой площадкой, оргстекло для торцевой подсветки с множеством микроямок, белая мутная пленка.


Рис. 10 — Разобранный сенсорный модуль HTTM

Подбор материалов рассеивателя

Рассеиватель из матового оргстекла

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


Рис. 11 — Матированное оргстекло

Рассеиватель из оргстекла для торцевой подсветки (LGP) и молочного оргстекла
Использовал 2 разных оргстекла толщиной по 2 мм, бутерброд из двух элементов получился 4 мм. Нижнее оргстекло для торцевой подсветки, благодаря нанесенным белым точкам, равномерно рассеивает свет по всей поверхности. Верхнее молочное оргстекло дает мягкое свечение и красивый вид, при этом яркость заметно ниже и увеличивается вес выключателя.


Рис. 12 — Оргстекло для торцевой подсветки и опаловое оргстекло

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


Рис. 13 — Бутерброд для лайтбокса от Ledison

После всех тестов в выключателе применил светоотражающую подложку от Ledison, а их оргстекло сделал матовым. На данный момент это лучший вариант для меня, и равномерно рассеивает, и яркость не снижена, и толщина подходящая.


Рис. 14 — Корпус, плата и рассеиватель

Использование

Первые тестовые версии выключателей я изготовил 2 года назад и имею уже опыт их использования, один установлен около санузла на высоте 120 см и удобен для детей, второй располагается около кровати и управляет ночником, люстрой и LED подсветкой. Т.к. все кнопки разделены перекрестием их легко нащупать в темноте и нажать нужную. Световой фидбэк точно говорит какая кнопка нажата. По сравнению с кнопочными выключателями минусов не обнаружил.


Рис. 15 — Сенсорный выключатель на аккумуляторе в деле

Заметил приятный побочный эффект, выключатель около кровати можно использовать для подсветки тумбы, если нажать на нижние кнопки.

На данный момент в Z-Wave чипе используется прошивка от 4-x кнопочного брелока Z-Wave.Me Key Fob, удобно, что она уже есть готовая и хорошо работающая, неудобно, что не все функции есть, которые хочется. Единственным нерешенным вопросом осталась засветка уголков в центре, нужно закрывать фольгированной пленкой, но пока думаю куда лучше лепить фольгу, на корпус внутри или на оргстекло.

Далее в планах перейти на свободно программируемый Z-Uno Module для реализации всех программных хотелок.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*