Сенсорная кнопка 12 вольт в машину своими руками

Обновлено: 06.07.2024

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

Сенсорная кнопка — в моем случае выступает как выключатель света. Почему я не использовал уже готовые выключатели? Да потому что это включатели и работают с напряжением 220 вольт, а мне нужна кнопка, которая будет передавать значения на Arduino.

Посмотрев в интернете схемы сенсорной кнопки нашел очень простую, но рабочую схему на 3х транзисторах КТ315. Немного доработал схему под свои нужды.

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

Питается схема от литиевой батерейки CR2032.

Честно говоря сложно посчитать срок службы батарейки, думаю ГОДЫ. Схема потребляет энергию только в момент срабатывания сенсора на 1-2 сек.

Так так данная кнопка делалась специально для Arduino, то вот скетч.

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

На реле можно подключить лампочку, розетку и др., но в дальнейшем планирую использовать твердотельное реле.

Осталось только сделать корпус и повесить на стену вместо механического выключателя.

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

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



где Cs - емкость сенсора, Cf - емкости вносимые прикосновением пальца.

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

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


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

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

Чтобы добавить его в свой проект, нужно переписать заголовочный и сишный файл драйвера (sensor.c и sensor.h) в папку проекта, добавить сишный файл sensor.c к проекту внутри среды разработки и включить заголовочный файл драйвера sensor.h (с помощью директивы include) в свой файл, где будут использоваться функции драйвера.

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

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

Опрос одной сенсорной кнопки выполняет функция SENS_Poll(. ), которой нужно передать адрес переменной типа sensor_t. Эта функция возвращает состояние сенсорной кнопки. Для всех возможных состояний сенсорной кнопки объявлен специальный тип данных sensor_state_t. Но функция опроса возвращает только два состояния SENS_PRESSED и SENS_NOT_PRESSED. Остальные состояния сделаны на будущее.

Функция SENS_Poll(. ) выполняет один цикл разряда- заряда сенсора.

Для достоверного определения состояния сенсора, эту функцию лучше вызывать несколько раз. Так же как делается при опросе механических кнопок. Работу функции нежелательно прерывать прерываниями, иначе подсчет времени заряда будет некорректным. Частоту вызова функции опроса можно сделать такой же, как при работе с механическими кнопками. Функция не оптимальная, из-за того, что доступ к порту осуществляется через указатель. Но это позволяет упростить процедуру настройки сенсора, используя только адрес регистра PORTX, а адреса регистров DDRX и PINX вычисляются из него.
И последняя функция драйвера - это SENS_GetState(. ). Она просто возвращает текущее значение сенсорной кнопки.

Код самого тестового проекта очень простой. Инициализация выхода для светодиода, инициализация сенсорной кнопки и бесконечный опрос кнопки в цикле while(1). Никаких прерываний не используется. Частота работы микроконтроллера 9.6 МГц.


Данная схема способна управлять реле на 12 вольт посредством прикосновения руки к датчику (сенсору). Схема сенсорного реле достаточно простая и недорогая. В ее основе лежит классический таймер NE555, работающий в моностабильном режиме.

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

Принципиальная схема

Простое сенсорное реле на NE555

Т = 1,1 х (R2 + R3) х С2

Напряжение на контакте 2 падает до нуля, если кто-то коснется сенсора, подключенного к подстроечному резистору R1. При прикосновении к сенсору начинается разряд конденсатора C2 через резистор R1. Сигнал с вывода 3 таймера поступает на базу транзистора T1, который, в свою очередь, включает катушку реле.

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

Настройка

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

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

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

сенсорный выключатель схема

Рабочее напряжение схемы 4-5 Вольт. Можно чуток и больше.

Схема ну очень простая. На мм макетной плате она будет выглядеть примерно вот так:

макетная плата

Желтый проводок от базы транзистора КТ315, который находится в воздухе, у нас будет сенсором.

комплиментарные транзисторы

В моем же случае я использовал транзисторы КТ315Б (ну что под руку попалось).

Вот видео работы этой схемы:

А что если с помощью такого сенсорного выключателя управлять мощной нагрузкой? Например, лампой накаливания на 220 Вольт? Просто вместо светодиода мы можем поставить ТТР.

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

Сенсорный включатель на двух транзисторах

Моя измененная схема на ТТР выглядит вот так:

Сенсорный включатель на двух транзисторах

Немного сменю тему, у нас вышла крутая статья про LED — я Вас прошу её оценить.

В интернете эта схема идет на трех транзисторах. Я ее немного упростил. Принцип работы схемы очень простой. При прикосновении пальчиком вывода базы транзистора VT2, на базу поступает синусоидальный сигнал с нашего тела. А откуда он берется? Наводки от сети 220 Вольт. Так вот, этих наводок вполне хватает, чтобы транзистор VT2 открылся, потом сигнал с VT2 поступает на базу VT1 и там усиливается еще больше. Мощности этого сигнала хватает, чтобы зажечь светодиод или подать управляющий сигнал на реле. Все гениально и просто!

Читайте также: