Статьи » Разработки |
2021-02-14 в 12:34 (последнее изменение 2023-11-09 в 12:43)
В современном мире довольно часто вместо кнопок используются сенсорные датчики. Их преимущество заключается в том, что нет необходимости прикладывать силу для нажатия кнопки, мы можем активировать клавишу едва касаясь ее. Сенсорные технологии становятся все более популярными день ото дня. В настоящее время в электронной технике используются два основных типа сенсорных экранов: резистивный и емкостной. В этой статье мы обсудим как сделать емкостной датчик касания с ESP32. А в реализации нашей задумки как всегда помогает сервис PCBWay. Протравленная печатная плата является проводящим материалом, а наклейка действует как диэлектрик. Возникает вопрос, каким должно быть прикосновение к медной площадке, чтобы вызывать изменение емкости, которое сможет обнаружить контроллер сенсорного датчика? И, конечно, это прикосновение пальцем. Объяснить это можно двумя моментами: первое - наши пальцы обладают диэлектрическими свойствами, второе - это проводящие свойства наших пальцев. Мы собираемся использовать емкостное касание. Важно отметить, что никакой проводимости не происходит, так как палец изолирован бумажной наклейкой. Палец действует как диэлектрик: Теперь, когда мы поняли принцип, давайте перейдем к созданию печатных плат. Создание четырехпозиционного емкостного сенсорного датчика Создаем печатную плату для датчика с помощью инструмента проектирования печатных плат Dip Trace, который выглядит примерно так, как на изображении ниже. С помощью размеров и Photoshop мы сделали шаблон и, наконец, наклейку для датчика, которая выглядит примерно так, как на изображении ниже. Теперь, когда мы закончили с наклейкой, мы переходим к созданию фактического шаблона платы, который мы собираемся использовать для изготовления нашей печатной платы. Теперь мы можем распечатать этот файл и продолжить процесс изготовления самодельной печатной платы. После этого печатная плата будет выглядеть, как на изображении ниже. Делаем отверстия и соединяем провода с печатной платой, чтобы подключить к плате ESP32. Поскольку мы не вставляли переходные отверстия в печатную плату, во время пайки припой оказался повсюду, мы исправили эту ошибку, просверлив отверстие на печатной плате, которое вы можете найти в разделе загрузки выше. Наконец пришло время наклеить наклейку. Переходим к созданию схемы управления для сенсорной панели. Компоненты, необходимые для создания контроллера с использованием ESP32, приведены ниже. Ниже перечислены компоненты с указанием типа и необходимого количества, поскольку мы подключаем четырехканальный сенсорный датчик и контролируем четыре нагрузки переменного тока, мы будем использовать 4 реле для переключения нагрузки переменного тока и 4 транзистора для создания реле схемы драйверов. Схема управления емкостного сенсорного датчика Как видите, это очень простая схема с минимальным количеством компонентов. На схеме цилиндрический разъем постоянного тока используется в качестве входа, где мы обеспечиваем необходимую мощность для питания схемы. Стабилизатор напряжения 7805 преобразует входное напряжение в стабилизированные 5 В постоянного тока, которое обеспечивает питание модуля ESP32. Далее на схеме у нас есть сенсорные разъемы на контактах 25, 26, 27, 28, к которым мы собираемся подключить сенсорную панель. Затем у нас есть наши реле, которые переключаются через транзистор BD139. Диоды D2, D3, D4, D5 предназначены для защиты схемы от любого переходного напряжения, которое генерируется при переключении реле. Резисторы 560 Ом на базе каждого транзистора используются для ограничения протекания тока через базу. Конструкция печатной платы для цепи емкостного сенсорного датчика Для создания силовых цепей была предусмотрена необходимая ширина дорожек. Мы поместили винтовой зажим вверху, таким образом гораздо проще подключить нагрузку, а разъем питания, был размещен сбоку, что также обеспечивает легкий доступ. Полный файл дизайна для Dip Trace вместе с Gerber можно скачать в конце статьи. Теперь, когда наш дизайн готов, пришло время протравить и припаять плату . После завершения процесса травления, сверления и пайки плата выглядит так, как показано на рисунке ниже. Код Arduino для емкостного сенсорного датчика на базе ESP32 Мы начинаем с определения всех необходимых контактов, в нашем случае мы определяем контакты для сенсорных датчиков и реле. Код
#define Relay_PIN_1 15 #define Relay_PIN_2 2 #define Relay_PIN_3 4 #define Relay_PIN_4 16 #define TOUCH_SENSOR_PIN_1 13 #define TOUCH_SENSOR_PIN_2 12 #define TOUCH_SENSOR_PIN_3 14 #define TOUCH_SENSOR_PIN_4 27 Затем, в разделе настройки, мы начинаем с инициализации UART для отладки, затем мы вводим задержку в 1с, которая дает нам немного времени для открытия окна Serial Monitor. Затем используем функцию Arduinos pinMode, чтобы сделать выводы Relay выходными. Код
void setup() { Serial.begin(115200); delay(1000); pinMode(Relay_PIN_1, OUTPUT); pinMode(Relay_PIN_2, OUTPUT); pinMode(Relay_PIN_3, OUTPUT); pinMode(Relay_PIN_4, OUTPUT); } Начинаем раздел цикла с оператора if , встроенная функция touchRead (pin_no) используется, чтобы определить, был ли нажат контакт или нет. Функция touchRead (pin_no) возвращает целочисленные диапазоны значений (0 - 100), значение постоянно находится около 100, но если мы коснемся выбранного контакта, значение упадет почти до нуля, и с помощью изменяющегося значения, мы можем определить, касался ли конкретный штифт пальцем или нет. В операторе if мы проверяем любое изменение целочисленных значений, и если значение достигает значения ниже 28, мы можем быть уверены, что подтвердили касание. Как только оператор if становится истинным, мы ждем 50 мс и снова проверяем параметр, это поможет нам определить, было ли значение датчика срабатыванием ложно, после этого мы инвертируем состояние вывода, используя digitalWrite (Relay_PIN_1,! DigitalRead (Relay_PIN_1)), а остальная часть кода останется прежней. Код
if ( touchRead(TOUCH_SENSOR_PIN_1) < 28) { if ( touchRead(TOUCH_SENSOR_PIN_1) < 28) { Serial.println("Sensor one is touched"); digitalWrite(Relay_PIN_1, !digitalRead(Relay_PIN_1)); } } else if (touchRead(TOUCH_SENSOR_PIN_2) < 28) { if (touchRead(TOUCH_SENSOR_PIN_2) < 28) { Serial.println("Sensor Two is touched"); digitalWrite(Relay_PIN_2, !digitalRead(Relay_PIN_2)); } } else if ( touchRead(TOUCH_SENSOR_PIN_3) < 28) { if (touchRead(TOUCH_SENSOR_PIN_3) < 28) { Serial.println("Sensor Three is touched"); digitalWrite(Relay_PIN_3, !digitalRead(Relay_PIN_3)); } } else if (touchRead(TOUCH_SENSOR_PIN_4) < 28) { if (touchRead(TOUCH_SENSOR_PIN_4) < 28) { Serial.println("Sensor Four is touched"); digitalWrite(Relay_PIN_4, !digitalRead(Relay_PIN_4)); } } Наконец, мы заканчиваем наш код с задержкой блокировки еще 200 мс. Тестирование цепи датчика касания на базе ESP32 Набор для тестирования очень прост, как вы можете видеть, я соединил 4 светодиода с резисторами, которые действуют как нагрузки, поскольку он подключен к реле, вы можете легко подключить любую нагрузку до 3 ампер. Код
Как обычно, сделал заказ на сервисе PCBWay - всегда точно, качественно и в кратчайшие сроки. Платы заказываю только здесь, очень доволен данным сервисом. Подробно о том, как разместить заказ на PCBWay, вы можете прочитать в нашей статье.
Посмотрите еще эти статьи
Управляем вытяжкой на кухне пультом от телевизора на Arduino Вывод картинки на дисплей 128x64 Детектор микронаушников Ethernet shield w5100 таймер включения на веб странице Вывод различных данных на дисплей LCD 128x64 Подключение датчиков газа и дыма серии MQ к Arduino Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте. Так же у нас есть Telegram канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 3282. Оценка статьи: 5.0 из 5. Уже оценило 1 читатель |
Всего комментариев: 0 | |