Во многих современных устройствах в качестве органов управления используются сенсорные кнопки. Например, у меня на кухне с помощью сенсорных кнопок включается и выключается варочная поверхность. Сенсорные кнопки хороши тем, что для них не нужны отверстия в корпусе, и у них отсутствует механический износ, присущий традиционным кнопками. Кроме того конструкция сенсорной кнопки, если не считать электронную начинку, намного проще механической, ведь это обычная проводящая поверхность изолированная слоем диэлектрика, и ей можно придать практически любую конфигурацию. В этой статье я расскажу о простой реализации сенсорной кнопки на микроконтроллере.
Схема, которую использовал я, представлена на рисунке выше. Сенсор через резистор подключен к выводу микроконтроллера, который подтянут высокоомным резистором к плюсу питания. Первый резистор служит простейшей защитой от электростатики (ESD), а второй ограничивает зарядный ток. В начальный момент вывод микроконтроллера работает в режиме выхода и на нем установлен уровень логического нуля. Емкость сенсора, если она имеет какой-то заряд, быстро разряжается на внутренние цепи микроконтроллера. Когда она разрядится вывод микроконтроллера переключится в режим входа с отключенным подтягивающим резистором и емкость сенсора начинает заряжаться через внешний высокоомный резистор. В это время программа опрашивает состояние вывода микроконтроллера и подсчитывает количество циклов опроса. Когда емкость зарядится до напряжения логической единицы, микроконтроллер зафиксирует это и сравнит состояние счетчика с каким-то пороговым значением. По результату этого сравнения микроконтроллер определяет поднесен ли к сенсору палец или нет.
Сам принцип думаю понятен, теперь можно посмотреть как это может выглядеть в Си коде. Для реализации одиночных сенсорных кнопок, я написал небольшой программный модуль – драйвер. Чтобы добавить его в свой проект, нужно переписать заголовочный и сишный файл драйвера (sensor.c и sensor.h) в папку проекта, добавить сишный файл sensor.c к проекту внутри среды разработки и включить заголовочный файл драйвера sensor.h (с помощью директивы include) в свой файл, где будут использоваться функции драйвера. Разберем как им пользоваться. Для хранения настроек сенсора используется структура данных sensor_t. В настройки сенсорной кнопки входит адрес порта, номер вывода в порте, пороговое значение и текущее состояние. Чтобы добавить к проекту сенсорную кнопку, нужно для начала создать переменную типа sensor_t.
//инициализация sensor1 – 0-й вывод порта B, порог – 25 циклов опроса.SENS_Init(&sensor1, 0, &PORTB, 25);
//переменная типа sensor_state_tsensor_state_t state;
Код самого тестового проекта очень простой. Инициализация выхода для светодиода, инициализация сенсорной кнопки и бесконечный опрос кнопки в цикле while(1). Никаких прерываний не используется. Частота работы микроконтроллера 9.6 МГц.
Управление с помощью компьютера исполнительным механизмом или иным устройством не всегда удобно. Первые два дня это, конечно, интересно, но потом начинает напрягать, потому что приходится совершать много лишних действий – включать компьютер, запускать программу и т.д. Возникает вопрос, а не изготовить ли для этих целей автономный управляющий модуль с клавиатурой и дисплеем?
Так как делается это для себя, то требуется дешевое, но в то же время красивое решение. С выбором дисплея особо не помудришь, дешевле и удобнее символьных LCD с контроллером еще не придумали, а вот при выборе клавиатуры можно хорошенько сэкономить.
Рассмотрим варианты. За готовую матричную клавиатуру придется выложить 100-200 рублей. Клавиатура из кнопок обойдется рублей в 36 (3р * 12 кнопок), не считая колпачков. Сенсорную клавиатуру можно изготовить почти задаром из куска фольгированного текстолита, при этом в корпусе устройства не придется сверлить отверстия под кнопки.
По-моему выбор очевиден, осталось только понять, как с такой клавиатурой работать. Но для начала нужно хотя бы разобраться с одиночной сенсорной кнопкой.
Одиночная сенсорная кнопка представляет собой металлическую площадку, подключенную к выводу микроконтроллера. Поскольку любое проводящее тело обладает емкостью, величина которой зависит от геометрии тела и окружающего его диэлектрика, такое подключение равносильно подключению к выводу конденсатора.
Человеческое тело тоже обладает емкостью (~100..300 pF), поэтому при поднесении пальца к сенсору суммарная емкость на входе микроконтроллера увеличится (ведь при параллельном соединении конденсаторов их емкости складываются). По именениям этой емкости и можно делать вывод о прикосновении к сенсору.
С1 — паразитная емкость вывода мк, С2 — емкость сенсора, С3 и С4 – емкости, вносимые прикосновением.
Поскольку все КМОП микросхемы болезненно переносят воздействие статического электричества, а человеческое тело ,обладая вышеуказанной емкостью, может заряжаться до нескольких тысяч вольт, схему следует дополнить небольшой защитной цепью.
При прикосновении к сенсору, накопленный телом заряд благополучно разрядится через один из диодов. В принципе такая защитная схема (не считая резистора) спрятана внутри микроконтроллера, но полагаться на нее не стоит, так как встроенные диоды выдерживают ток лишь в 1 ма. Кстати, внешние диоды добавят к входной емкости еще пару тройку пикофарад.
Ну ладно, принцип понятен, а каким образом измерить емкость? Величину емкости можно оценить по времени ее заряда. Подключим к выводу микроконтроллера высокоомный подтягивающий резистор (смотри схему) и получим RC цепь. Манипулируя выводом микроконтроллера можно вызвать заряд и разряд нашего виртуального конденсатора, а контролирую потенциал вывода в процессе заряда емкости – оценивать ее величину. Чем больше емкость, тем медленнее она будет заряжаться.
Вырисовывется следующий алгоритм работы:
1. Переключаем вывод микроконтроллера в режим выхода и сбрасываем в ноль. Паразитная емкость разрядится на внутренние цепи микроконтроллера.
2. Переключаем вывод микроконтроллера в режим входа в состоянии Hi-Z. Емкость начнет заряжаться через внешний подтягивающий резистор.
3. Контролируем состояние вывода и отсчитываем время. Как только емкость зарядится до напряжения логической единицы, снимаем показания счетчика.
4. Сравниваем полученное значение счетчика с заданной эталонной величиной и определяем, увеличилась ли емкость или нет.
Исходник не большой и, я думаю, main.c можно выложить полностью, он у меня хорошо прокомментирован.
// Description.: ATtiny sensor
//макросы для работы с битами
InvBit(reg, bit) reg ^= (1<<(bit))
ClearBit(reg, bit) reg &= (~(1<<(bit)))
BitIsSet(reg, bit) ((reg & (1<<bit)) != 0)
//сколько циклов опроса кнопка должна удерживаться
// величина которую, возможно придется подстраивать
//переменные для подсчета количества переполнений Т0
volatile unsigned char sub_time_pin0 = 0;
volatile unsigned char sub_time_pin1 = 0;
//переменная для защиты от дребезга
comp = 0;
// Инициализация таймера T0 для Tiny2313
TIMSK = (1<<OCIE0A); //разрешаем прерывание таймера T0 при событии совпадение
TCNT0 = 0; //обнуляем счетный регистр
OCR0A = 0x32; //прерывания каждые ~ 50мкс
// Инициализация таймера T1 для Tiny2313
TCNT1 = 0; //обнуляем счетный регистр
OCR1A = 0x2710; //прерывания каждые 10мс
PORTD = 0;
/*если на выводе PB0 единица и таймер переполнился
инвертировать пин PD2, послать по УАРТУ номер кнопки,
обнулить антидребезговую переменную */
/* то же самое */
// Прерывание Таймера 0 используемого для сканирования пина
vector = TIMER0_COMPA_vect
__interrupt Timer0Comp()
// Увеличиваем на 1 счетчики переполнений таймера
//это для мониторинга в Протеусе
// Прерывание Т1
//Инициализация порта, к которому подключены сенсорные кнопки согласно алгоритму
vector = TIMER1_COMPA_vect
__interrupt Timer1CompA()
//переключаем порт в режим выхода и устанавливаем 0
//разряжая паразитную емкость на внутренние цепи AVR
DDRB = 0xFF;
PORTB = 0x00;
//переключаем порт в режим входа в состоянии Hi-Z
DDRB = 0x00;
//обнуляем количество срабатываний для нулевого и первого выводов PORTB
TCNT0 = 0; // Обнуляем счетный регистр T0
- Конфигурация сенсорной кнопки
- Использование датчика ttp223 без Ардуино
- Подключение сенсорной кнопки к Ардуино
- Модуль сенсорной клавиатуры TTP229
- Принцип работы сенсорной кнопки
- Оптический выключатель со звуковым эффектом на Arduino
- Модуль сенсорной кнопки TTP223 Ардуино
- Характеристики TTP223 (datasheet на русском)
- Технические характеристики TTP223
- Заключительный шаг создания midi клавиатуры
- Файлы
- Калибровка чувствительности
- Загрузка кода
- Ссылки
- Емкостная сенсорная Midi клавиатура
- Обзор сенсорных кнопок
- Troyka touch sensor
- Grove Touch Sensor
- TTP223B Arduino Digital Touch Sensor
- Keyestudio touch module
- Как подключить сенсорную кнопку к Ардуино
- Скетч. Подключение ttp223 к Ардуино (Touch Sensor)
- Скетч. Сенсорный переключатель ttp223 (Touch Sensor)
- Создание девайса
- Сенсорная кнопка
- Принцип работы сенсорных кнопок
- Сенсорные или механические кнопки
Конфигурация сенсорной кнопки
От конфигурации (от его формы и размера) сенсора зависит его емкость. У меня в проекте использовался сенсор в виде вытравленной круглой контактной площадки диаметром 1 см. Также я пробовал использовать прямоугольные кусочки фольгированного текстолита разного размера. Чем больше площадь сенсора, тем больше его емкость и тем более чувствительную сенсорную кнопку можно сделать. Чувствительную в том плане, что она будет в состоянии срабатывать через толстый слой диэлектрика. Вообще на эту тему лучше почитать атмеловские материалы, поскольку сейчас я об этом мало что могу сказать.
Использование датчика ttp223 без Ардуино
На схеме выше в качестве источника питания используется плата Arduino Uno. При этом к выносному датчику ttp223 не следует подключать более 3 светодиодов. Для управления высокой нагрузкой с помощью этого модуля вам необходимо использовать модуль транзистора или реле (выключатель питания), который замкнет цепь с большим током. Пример такого подключения опубликован ниже.
Удаленный модуль можно использовать без микроконтроллера, если ttp223 перешел в режим триггера. Для этого замкните перемычку B, и тогда режим будет меняться при каждом прикосновении к датчику. Обратите внимание, что кнопка может быть включена в электрическую схему только как логический ключ. Большие нагрузки (моторы, адресные светодиодные ленты или реле) не подойдут, датчик просто сгорит.
Подключение сенсорной кнопки к Ардуино
Чтобы использовать сенсорную кнопку, как и все другие модули и датчики, она должна быть подключена к плате Arduino. В большинстве случаев используются стандартные модули с тремя выводами: силовой, сигнальный и заземляющий. Их положение меняется от модели к модели, на диаграмме они отображаются в соответствии с последним списком (сенсорная кнопка заменена переключателем из-за ее отсутствия в Tincercad):
Важно помнить, что сенсорная кнопка требует средней калибровки в полсекунды при каждом запуске, что позволяет не беспокоиться о ненужных шумах, которые, несомненно, возникли бы из-за разного положения кнопки в проектах. Поэтому не стоит сразу после запуска нажимать кнопку, так как после этого наиболее вероятна некорректная работа устройства.
Сенсорный модуль по сути похож на цифровую кнопку. При нажатии кнопки датчик возвращает логическую единицу, а в противном случае — логический ноль.
Модуль сенсорной клавиатуры TTP229
В поисках различных электронных модулей меня заинтересовал дешевый модуль сенсорной клавиатуры на микросхеме TTP229, и я решил купить его. Микросхема имеет 16 входов для подключения сенсорных электродов (кнопок), соответственно на плате модуля имеется 16 квадратных сенсорных площадок с номерами 1-16. Также на плате расположены контактные площадки для перемычек, с помощью которых можно настроить режим работы клавиатуры. Микросхема TTP229 передает данные по двухпроводной линии, протокол связи аналогичен последовательному интерфейсу SPI, дополнительно имеется 8 выходных буферов, с возможностью выбора типа логического выхода. Микросхема имеет низкое энергопотребление, всего 2-9 мкА в спящем режиме.
На следующем изображении показана принципиальная схема модуля сенсорной клавиатуры:
Обвязка микросхемы минимальная, сенсорные кнопки Е1-Е16 подключаются непосредственно к выводам микросхемы. С помощью конденсаторов CJ0-CJ3, CJWA, CJWB можно регулировать чувствительность сенсорных кнопок, чем больше емкость конденсаторов, тем ниже чувствительность, кроме того, чувствительность зависит от размера самих кнопок . Рекомендуемая емкость конденсаторов находится в пределах 1-50 пФ.
Линии микросхемы TP0-TP7 играют двойную роль, помимо контроля состояния сенсорных кнопок, вы можете настроить режим работы клавиатуры с помощью перемычек JP1-JP8. При установке перемычки линия микросхемы подтягивается к общему проводу через резистор высокого сопротивления, на входе устанавливается низкий логический уровень «0», при отсутствии перемычки — высокий уровень «1». В следующей таблице представлены основные режимы работы:
Если линия TP2 имеет высокий логический уровень (TP2 = 1), активны 8 сенсорных кнопок (на схеме E1-E8), остальные 8 линий микросхемы TP8-TP15 перенастраиваются на выход (Out1-Out8). Логический уровень на выходных линиях зависит от состояния сенсорных кнопок, 1-я кнопка соответствует выходу Out1, 2-я кнопка — выходу Out2 и т.д., а данные о состоянии кнопок передаются через последовательный интерфейс. В режиме 16 активных кнопок (TP2 = 0) на входе перенастраиваются строки микросхемы TP8-TP15. В этом случае информация о состоянии кнопок передается только через последовательный интерфейс. Следовательно, линии TP8-TP15 могут отслеживать состояние сенсорных кнопок E9-E16 или действовать как выходной буфер.
Линия TP0 отвечает за тип логического выхода, значение TP0 = 1 соответствует нормальному логическому выходу, если значение равно 0, то получается выход с открытым стоком. Активный уровень выходных буферов и последовательного интерфейса зависит от состояния линии TP1. Используя линии TP3, TP4, вы можете установить два режима для сканирования кнопок: зафиксировать «нажатие» одной кнопки или нескольких кнопок одновременно, это может быть полезно, когда вам нужно отслеживать «нажатие» любой комбинация кнопок. Строки TP5, TP6 отвечают за частоту и длительность нажатия кнопок сканирования в спящем режиме. В микросхеме есть функция защиты от «заедания» кнопок, например, при ударе постороннего предмета по кнопке она сработает и, если защита включена, через 80 секунд кнопка калибруется и возвращается в отпущенное состояние. За эту функцию отвечает линия TP7.
Микросхема TTP229 автоматически переходит в спящий режим, если в течение определенного периода времени ни одна кнопка не «нажата». Кроме того, есть постоянная функция самокалибровки сенсорных кнопок, позволяющая микросхеме адаптироваться к изменениям окружающего «емкостного» фона и правильно фиксировать прикосновение.
На следующем изображении показана диаграмма последовательной передачи данных с временными характеристиками:
Линия SCL предназначена для синхронизации от внешнего устройства управления; микросхема TTP229 передает данные о состоянии кнопок на линию SDO. Когда микросхема обнаруживает «нажатие» кнопки, она выводит на линию сигнал DV длительностью 93 мкс, который можно использовать для прерывания в микроконтроллере. Кроме того, при наличии тактового сигнала микросхема выводит один или два байта данных о состоянии кнопок (в зависимости от режима работы: 8 или 16 активных кнопок). Как видно полярность сигналов на линиях SCL, SDO зависит от выбора активного логического уровня. Биты D0-D15 отображают состояние кнопок E1-E16. Значение битов зависит от активного уровня, если активный уровень низкий, когда кнопка «нажата», соответствующий бит будет установлен на 0, если кнопка отпущена — 1. Когда активный уровень высокий, правда наоборот. Тактовая частота может быть от 1 до 512 кГц. Если нет тактового сигнала в течение 2 мс, последовательный интерфейс сбрасывается.
Например, я подключил сенсорную клавиатуру к микроконтроллеру PIC16F628A и использовал цифровой индикатор на драйвере MAX7219 для отображения номера «нажатой» кнопки. Схема подключения представлена ниже:
Помимо выходных линий клавиатуры, я подключил светодиоды HL1-HL8 через резисторы R2-R9. Переключатель SA1 предназначен для выбора режима работы микроконтроллера, приема 8 или 16 байт данных, режим должен соответствовать настройкам сенсорной клавиатуры, (перемычка JP3, 8 или 16 активных кнопок). Для последовательного интерфейса необходимо выбрать высокий активный логический уровень, для выходных буферов — открытый сток с подтягиванием до 0, для этого необходимо установить на клавиатуре перемычки JP1, JP2, я не стал установите остальные перемычки. В исходном состоянии светодиоды остаются выключенными.
Принцип работы сенсорной кнопки
По сути, сенсорная кнопка – это сенсор, то есть какая-то проводящая поверхность, и контроллер, измеряющий его емкость (способность накапливать электрический заряд). При неизменных условиях внешней среды емкость сенсора не меняется. Но когда к нему подносится палец, его емкость увеличивается. По этому изменению контроллер “делает вывод”, что пользователь нажал на кнопку. Емкость измеряется путем подсчета времени, которое требуется для ее заряда до определенного уровня напряжения. Это время зависит как от значения емкости, так и от величины зарядного тока, которая задается какой-то внешней цепью. В простейшем случае эту роль может выполнять резистор, подключенный одним концом к источнику питания, а другим к сенсору.
где Cs – емкость сенсора, Cf – емкости вносимые прикосновением пальца.
Поскольку емкость сенсора и ее изменения очень маленькие (единицы, десятки пикофарад), то время заряда тоже будет небольшим. Чтобы упростить измерение времени заряда, нужно увеличить его значение, а для этого необходимо заряжать емкость сенсора очень маленьким током (микроамперами).
Оптический выключатель со звуковым эффектом на Arduino
Добрый день! В этом посте я хочу поделиться с сообществом Хабра принципом работы сделанного мной бесконтактного переключателя. Коммутатор предназначен для использования в системе умного дома.
Основа коммутатора — это улучшенный клон недавно купленного мной контроллера Arduino, продаваемого под названием Carduino Nano V.7
Переключатель работает так: Arduino с выхода D5 постоянно излучает ШИМ-сигнал с частотой 976 Гц и скважностью 50%. Светодиод подключен к выходу D5 через токоограничивающий резистор, который излучает световой сигнал в инфракрасном диапазоне. Фототранзистор, подключенный к входу Arduino D2, обнаруживает ИК-сигнал, отраженный от руки. Arduino принимает ИК-сигнал, проверяет его достоверность, и если сигнал из 20 последовательных импульсов соответствует частоте 976 Гц, контроллер включает синий светодиод (L) на выходе D13 Arduino и начинает воспроизводить звуковой эффект через SPK выход контроллера. То же самое происходит, когда светодиод (L) не горит).
При воспроизведении звуковых эффектов используется несжатый аудиофайл в формате WAV с частотой 16000 Гц и глубиной 8 бит. Для улучшения качества воспроизведения звука используется линейная интерполяция.
Для этого отбор отсчетов выполняется с частотой 96000 Гц, и 4 промежуточных отсчета, вычисленных с помощью метода линейной интерполяции, вставляются между исходными отсчетами.
Это уменьшает шум квантования, улучшает качество и не требует дополнительных фильтров для воспроизведения звуков.
Схема проста по сборке, я использовал
1-Carduino Nano V.7 2-ИК светодиод от старого пульта от телевизора, светодиод нужно сваривать в термоусадке, чтобы избежать бокового излучения 3-LTR-3208E фототранзистор 4-динамическая головка из детской игрушки 5 -сопротивления 10к и 68Ω Как работает схема, собранная на макетной плате, можно посмотреть на видео.
Модуль сенсорной кнопки TTP223 Ардуино
Когда к Arduino ttp223 подключено питание, выход OUT сенсорного датчика устанавливается на низкий уровень сигнала. Если прикоснуться к рабочей области модуля, выход OUT поднимется, и включится встроенный светодиод. Режим работы ttp223 можно настроить по своему усмотрению: для этого в модуле есть перемычки A и B (по умолчанию перемычки не замкнуты).
При замкнутой перемычке A сигнал на выходе OUT инвертируется, то есть при прикосновении пальцем к рабочей области на выходе устанавливается низкий уровень сигнала. Перемычка B включает режим блокировки переключателя модуля, например, для переключения состояния сигнала на выходе OUT необходимо еще раз прикоснуться к датчику. Ниже приведены основные особенности Arduino ttp223.
Характеристики TTP223 (datasheet на русском)
Сенсорная кнопка Arduino ttp223 выполнена на базе микросхемы TTP223-BA6 в виде модуля open frame. Датчик имеет печатную плату в виде металлизированной поверхности с надписью «касание». Чувствительность TTP223 зависит от конденсатора, место которого предусмотрено на плате. При установке конденсатора на 50 пикофарад чувствительность датчика будет минимальной.
Технические характеристики TTP223
Тот, кто хоть раз разбирал принтер или сканер, наверняка обращал внимание на концевые выключатели.
https://youtube.com/watch?v=PrpesSJ2BCw%3Ffeature%3Doembed
Они устанавливаются в конце хода каретки и служат для подачи сигнала, после которого двигатель перестает вращаться. Такие устройства используются не только в бытовой технике, но и во многих проектах Arduino.
На фото ниже показаны различные типы концевых выключателей:
Некоторые из них установлены в пластиковых корпусах и, как следствие, идеально подходят для проектов Arduino.
Заключительный шаг создания midi клавиатуры
На этом этапе ваша емкостная сенсорная клавиатура должна быть готова. Он может определить, когда вы держите дирижера и отправляете миди-ноту. Однако нам также нужна программа для чтения MIDI и воспроизведения звуков. Вы можете использовать программное обеспечение DAW (Fl Studio, Ableton, Logic Pro и т.д.)
Если ваша емкостная сенсорная клавиатура работает должным образом, она будет отображаться как обычное MIDI-устройство в вашем программном обеспечении DAW, как показано на изображении выше. Устройство будет работать как обычная MIDI-клавиатура, за исключением того, что одновременно может играть только одну ноту!
Файлы
Сенсорная кнопка на attiny13. Проект для IAR AVR.
Калибровка чувствительности
После загрузки кода и сборки платы Arduino откройте серийный монитор внутри ADE. Если все сделано правильно, вы увидите ряд значений. Если вы коснетесь конца проводника, обратное значение будет больше, чем значение, если вы не коснетесь проводника.
Теперь пора определить, с каким значением ваш сенсорный датчик будет «отправлять» миди-ноту. Если вы считаете 50, когда не касаетесь провода, и 1000, когда касаетесь провода, тогда вам нужно придерживаться около 700. Когда вы делаете емкостную сенсорную клавиатуру, она отправит миди-ноту, когда значение превысит 700.
Загрузка кода
Загрузите код в Arduino.
Обдумайте, что нужно помнить. Вы должны поместить это значение в свой код. Если в программном коде встречается значение 500, то его необходимо заменить своим значением.
После внесения изменений в программный код его можно загрузить в плату Arduino.
Ссылки
Сенсорные кнопки. Реализация Петрова.
Емкостная сенсорная Midi клавиатура
В этом руководстве показано, как создать собственную емкостную сенсорную MIDI-клавиатуру.
Примечание: клавиатура не работает с обычной краской. Для этого проекта я использовал токопроводящую краску.
Для этого устройства требуются следующие компоненты:
Обзор сенсорных кнопок
Прежде чем говорить непосредственно об использовании модуля, нужно определиться, какую модель покупать для использования. Рассмотрим несколько вариантов для разных компаний:
Troyka touch sensor
Время отклика: 80 мс (в режиме мощности) и 10 мс (в режиме высокой скорости)
Максимальная толщина диэлектрика для нормальной работы: 4 мм
Размеры: 25X25 мм
Напряжение питания: 3-5 В
Цена: 390 рублей
Grove Touch Sensor
Затраченное время: 220 мс и 80 мс
Максимальная толщина диэлектрика для нормальной работы: 2 мм
Размеры: 20X20 мм
Напряжение питания: 2-5 В
Цена: 229 рублей
TTP223B Arduino Digital Touch Sensor
Затраченное время: 220 мс и 60 мс
Размеры: 24X24 мм
Цена: 150 руб
Keyestudio touch module
Размеры: 30X20 мм
Напряжение питания: 3,3-5 В
Цена: 270 руб
Как подключить сенсорную кнопку к Ардуино
Для этого урока нам понадобятся:
Следующая программа включит светодиод, подключенный к седьмому выводу микроконтроллера, когда вы коснетесь датчика, поскольку в этот момент логический блок (высокий сигнал) поступит на вывод 2. Схема сборки и сам код очень просты, а модуль работает без защелки (т.е перемычка B открыта). После сборки схемы, показанной выше, загрузите следующий эскиз на плату Arduino Uno.
Скетч. Подключение ttp223 к Ардуино (Touch Sensor)
В приведенном ниже примере модуль сенсорного датчика работает в режиме фиксации (триггера), т.е перемычка B замкнута. Модуль реле будет включаться / выключаться каждый раз при прикосновении к датчику. При этом программа для микроконтроллера остается прежней, так как после снятия пальца с модуля на выходе ttp223 все равно останется высокий уровень сигнала (логическая единица).
Скетч. Сенсорный переключатель ttp223 (Touch Sensor)
Заключение. В этом обзоре мы рассмотрели емкостной сенсорный датчик ttp223 для микроконтроллера Arduino, который можно использовать в различных устройствах DIY. Благодаря невысокой стоимости и простой схеме подключения этот модуль станет отличной альтернативой обычной сенсорной кнопке. Если у вас есть вопросы по этой теме, оставьте их в комментариях к этому посту.
Создание девайса
Соберите схему, как показано на картинках выше.
Концы проводников — это то место, куда вы дотронетесь. К концам этих проводников можно прикрепить зажимы типа «крокодил», чтобы прикрепить проводники, например, к алюминиевой фольге.
Сенсорная кнопка
Ни для кого не секрет, что прогресс не останавливается. Постоянно появляются новые технологии, совершенствуются старые. Сенсорные экраны появились совсем недавно (по меркам человечества), но уже прочно вошли в нашу повседневную жизнь. В телефонах, телевизорах, терминалах и т.д. В основном используются «бескнопочные» технологии. В кавычках это слово потому, что до сих пор используют кнопки, просто коснитесь. О них, а точнее, о сенсорном модуле для Arduino и пойдет речь в этой статье.
Принцип работы сенсорных кнопок
В большинстве модулей сенсорных кнопок используются проецируемые емкостные сенсорные экраны. Если не вдаваться в пространственные объяснения их работы, для записи давления используется расчет изменения емкости конденсатора (электрической цепи), при этом важной особенностью является возможность задавать разные начальные емкости, так как мы увидим позже.
Человеческое тело имеет определенную электрическую емкость и, следовательно, низкое реактивное сопротивление переменного электрического тока. Если вы дотронетесь до пальца или любого электропроводящего объекта, через них будет протекать небольшой ток утечки от устройства. Специальная микросхема обнаруживает эту утечку и сигнализирует о нажатии кнопки. Преимуществами этой технологии являются: относительная долговечность, малое влияние загрязнений и устойчивость к проникновению воды.
Сенсорные или механические кнопки
+ Сенсорная кнопка «чувствует» давление даже через небольшой слой неметаллического материала, что обеспечивает широкое применение во всех типах проектов.
+ Это также следует из предыдущего пункта: возможность использования сенсорной кнопки внутри корпуса увеличивает привлекательность дизайна, что не влияет на функциональность, но в повседневной жизни довольно важно не обращать на это внимание.
+ Стабильная работа, выражающаяся в отсутствии движущихся частей и частой калибровке (о чем будет сказано ниже). Вам не нужно беспокоиться о дребезге кнопки, который происходит при использовании механического брата или сестры, что значительно облегчит жизнь начинающему геймеру Arduino. Поэтому еще одно преимущество, хотя и не для всех, — простота в работе.
Из недостатков можно отметить следующие:
На этом этапе вам нужно изменить программу UNO-dfu_and_usbserial_combined по умолчанию в программном обеспечении arduino для обработки MIDI .
Сначала загрузите шестнадцатеричный файл, затем программу FLIP, чтобы загрузить указанный шестнадцатеричный файл на Arduino.
После загрузки файла и программы FLIP подключите плату Arduino к компьютеру. Затем переведите ваш Arduino Uno R3 (он будет работать только с версией Uno!) В режим DFU.
Вставьте провод в верхний контакт заземления и провод в нижний контакт заземления. Далее нужно прикоснуться к нижнему проводнику контактом GND, как показано на фото, и одновременно к верхнему проводнику контактом RESET. После этого плата Arduino перейдет в режим DFU.
Затем загрузите шестнадцатеричный файл MocoLUFA. Откройте FLIP, выберите свой чип (16u), найдите файл MIDI.hex и загрузите его через USB. Отсоедините USB-кабель от компьютера и снова подсоедините его. Плата Arduino должна быть определена как устройство MIDI / MocoLUFA.
Помните: если вам нужно изменить код ADE, вы должны вернуть исходный шестнадцатеричный файл для Arduino. Этот файл находится в C: Program Files (x86) Arduino hardware arduino firmwares atmegaxxu2