Для управления различными устройствами в настоящее время придумано достаточно много разнообразных кнопок, переключателей и датчиков. Одним из подобных устройств является сенсорный датчик, который еще называют датчиком касания – от англ. Touch Sensor. Сенсорные датчики значительно упрощают ввод информации и легко подключаются к различным микроконтроллерам. Сейчас наиболее распространены емкостные сенсорные датчики – его подключение к плате Arduino мы и рассмотрим в данном проекте. С его помощью мы будем включать и выключать свет в комнате.
Ранее на нашем сайте мы рассматривали подключение панели с сенсорными кнопками к микроконтроллеру AVR.
Сенсорный датчик (датчик касания) TTP223
Сенсорный датчик, который мы будем рассматривать в данном проекте, состоит из модуля емкостного сенсорного датчика и драйвера датчика на основе микросхемы TTP223. Рабочее напряжение для микросхемы TTP223 составляет от 2 до 5,5 В. Потребление тока у этой микросхемы очень низкое. Благодаря относительно дешевой цене, низкому энергопотреблению и легкости интеграции в различную встраиваемую электронику сенсорные датчики TTP223 получили в настоящее время достаточно широкое распространение.
Внешний датчика TTP223 показан на следующем рисунке.
При подключении датчика TTP223 к питанию по умолчанию на выходе OUT устанавливается напряжение низкого уровня (LOW). Если прикоснуться пальцем к рабочей области датчика, то выход OUT переключается с низкого уровня на высокий и загорается встроенный светодиод датчика. При необходимости настройки датчика можно использовать перемычки А и В, а так же перемычку без подписи (по умолчанию перемычки не установлены).
Назначение перемычек А и В:
► А – 0 / В – 0 – без фиксации состояния, при касании на выходе «1»
► A – 1 / B – 0 – без фиксации состояния, при касании на выходе «0»
► A – 0 / B – 1 – с фиксацией состояния (триггер), при касании на выходе «1»
► A – 1 / B – 1 – с фиксацией состояния (триггер), при касании на выходе «0»
То есть, перемычка А устанавливает логическое состояние на выходе «1» или «0» при нажатии, а перемычкой В включаем триггер и чтобы переключить состояние, необходимо повторно коснуться датчика.
Настройка чувствительности осуществляется с помощью добавления конденсатора от 0 до 50 пФ, где 0 пф соответствует максимальной чувствительности, а 50 пф – самой низкой чувствительности.
Для более подробного изучения принципов работы датчика рекомендуем вам посмотреть даташит на датчик TTP 223.
Немного о принципах работы реле
В этом проекте мы будем управлять включением/выключением электрической лампочки с помощью сенсорного датчика, платы Arduino и реле. Принцип работы реле различного типа показан на следующем рисунке.
NO на этом рисунке обозначает нормально разомкнутые контакты, а NC – нормально замкнутые контакты. L1 и L2 – это выводы катушки реле. Когда на катушку реле не подано напряжения реле находится в выключенном состоянии – якорь (POLE) подключен к нормально замкнутому контакту. При подаче питания на катушку якорь реле подключается к нормально разомкнутому контакту.
Очень важно определить рабочие параметры реле перед тем как включать его в схему. Реле различаются, в частности, по рабочему напряжению, прикладываемому к катушке реле (контакты L1 и L2). Некоторые реле имеют рабочее напряжение 12 В, некоторые – 6 В, а некоторые – 5 В. Для нашего проекта мы использовали реле с управляющим (рабочим) напряжением 5 В с возможностью коммутации напряжения 250 В с током до 6 А.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- USB кабель для программирования и питания.
- Сенсорный датчик (Touch Sensor) TTP223 (купить на AliExpress).
- Транзистор BC549B.
- Диод 1N4007 (купить на AliExpress).
- Резистор 2 кОм (купить на AliExpress).
- Резистор 4,7 кОм (купить на AliExpress).
- Реле с управляющим напряжением 5 В.
- Электрическая лампочка с держателем.
- Макетная плата.
- Соединительные провода.
Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158
Резистор 2 кОм, транзистор BC549B и диод 1N4007 можно заменить модулем реле.
Работа схемы
Схема управления светом в доме с помощью сенсорного датчика и платы Arduino представлена на следующем рисунке.
Внешний вид собранной на макетной плате конструкции проекта показан на следующем рисунке.
А на следующем рисунке показана схема соединений проекта на макетной плате.
Объяснение программы для Arduino
Полный текст программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Для начала в программе нам необходимо подключить используемые библиотеки.
1 |
#include <Arduino.h> |
Далее в программе мы должны инициализировать все используемые контакты: сенсорный датчик подключен к контакту A5, реле – к контакту A4. Для работы программы также используется встроенный в плату светодиод, подключенный к контакту 13.
1 2 3 4 5 6 |
/* * Pin Description */ int Touch_Sensor = A5; int LED = 13; int Relay = A4; |
Далее в функции void setup() нам необходимо задать режимы работы используемых контактов.
1 2 3 4 5 6 7 8 |
/* * Pin mode setup */ void setup() { pinMode(Touch_Sensor, INPUT); pinMode(LED, OUTPUT); pinMode(Relay, OUTPUT); } |
Далее объявим две переменные целого типа: переменная ‘condition’ используется для хранения состояния сенсорного датчика (нажат он или нет). Переменная ‘state’ используется для хранения состояния светодиода и реле – включены они или выключены.
1 2 3 4 5 |
/* * Programme flow Description */ int condition = 0; int state = 0; //To hold the switch state. |
Сенсорный датчик во время нажатия (прикосновения) изменяет свое состояние с логического 0 на логическую 1. Мы состояние датчика считываем с помощью функции digitalRead() и сохраняем его в соответствующей переменной. Когда состояние датчика равно 1 состояния светодиода и реле изменяются. Тем не менее, для устранения эффекта дребезга контактов в программе используется соответствующая задержка (debounce delay). Эта задержка delay(250) используется для распознавания одиночного нажатия на датчик.
1 2 3 4 5 6 7 8 9 10 11 |
void loop() { condition = digitalRead(A5); // Reading digital data from the A5 Pin of the Arduino. if(condition == 1){ delay(250); // debounce delay. if(condition == 1){ state = ~state; // Changing the state of the switch. digitalWrite(LED, state); digitalWrite(Relay, state); } } } |
При тестировании проекта соблюдайте меры предосторожности при работе с напряжением сети переменного тока (220 В).
Исходный код программы (скетча)
Код программы достаточно простой. Но если у кого возникнут какие либо вопросы по тексту данной программы, то вы можете задать их в комментариях к данной статье.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
/*//==============================================================================// * TTP223 interfacing with Arduino * Date: - 3-04-2019 * Author:- Sourav Gupta * For:- circuitdigest.com *///=============================================================================// #include <Arduino.h> //если вы используете Arduino IDE, то необходимости в подключении этой библиотеки нет //#define ON 1 //#define OFF 0 /* * Pin Description */ int Touch_Sensor = A5; int LED = 13; int Relay = A4; /* * Programme flow Description */ int condition = 0; int state = 0; //To hold the switch state. /* * установка режима работы контактов */ void setup() { pinMode(Touch_Sensor, INPUT); pinMode(LED, OUTPUT); pinMode(Relay, OUTPUT); } void loop() { condition = digitalRead(A5); // считываем состояние контакта A5 платы Arduino if(condition == 1){ delay(250); // de-bounce delay (задержка для устранения эффекта дребезга контактов) if(condition == 1){ state = ~state; // изменяем состояние переменной (и светодиода с реле соответственно) digitalWrite(LED, state); digitalWrite(Relay, state); } } } |
9 ответов к “Управление светом в доме с помощью сенсорного датчика и Arduino”
ещё и новичка в заблуждение можно ввести …. ,на монтажной плате цветовое назначений линий + — задом наперёд нарисовано! ,в общем «крутая схема» 5с+
Ну вы прямо раскрыли обман века, поздравляю ))
Айтишники ведь люди рассеянные, иногда ведь допускают опечатки ))
сразу бы восьми ядерный пень прикрутил к ttp223
Конечно, здесь достаточно самого простого микроконтроллера и нужды в использовании именно Ардуино нет. Но к обычным микроконтроллерам нужен программатор или еще какие-нибудь заморочки для их программирования, а с Ардуино работать невероятно просто и доступно даже для слабо разбирающихся в электронике и программировании
к выходу TTP223 цепляешь транзистор и потом хоть оптопару с симистором хоть реле ,в чем прикол ???? микроконтроллера ???????
Потому что с помощью микроконтроллера (или платы Ардуино) можно реализовать какие-нибудь интеллектуальные действия в этом проекте. Наверняка многие же захотят добавить в этот проект своих функций чтобы сделать его более универсальным
Ну тут же конкретно написано : Управление светом в доме с помощью сенсорного датчика и Arduino. :-)) ,(Наверняка многие же захотят добавить в этот проект своих функций чтобы сделать его более универсальным)дак это уже другая песня…..
Песня то другая, а из поисковиков трафик на эту статью лучше привлекать по универсальному, а не узко специализированному запросу ))
нахрена здесь нужна ардуина?????????????????????? ,Бред.